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,323 @@
1
+ /**
2
+ * Container formatting utilities
3
+ *
4
+ * Provides consistent markdown formatting for container operations:
5
+ * listing, logs, stats, inspection, and search.
6
+ */
7
+ import { formatBytes } from "../services/docker/utils/formatters.js";
8
+ import { CONTAINER_SEVERITY, sortBySeverity } from "../utils/sorting.js";
9
+ import { getTimestamp } from "./utils.js";
10
+ /**
11
+ * Get canonical state symbol for container status
12
+ * STYLE.md Section 4.1: Status and State symbols
13
+ */
14
+ function getContainerStatusSymbol(state) {
15
+ if (state === "running")
16
+ return "●"; // running/active
17
+ if (state === "paused" || state === "restarting")
18
+ return "◐"; // degraded/transitioning
19
+ return "○"; // stopped/exited/dead
20
+ }
21
+ /**
22
+ * Format container list as markdown following STYLE.md section 7.3
23
+ */
24
+ export function formatContainersMarkdown(containers, total, offset, hasMore, filters) {
25
+ if (containers.length === 0) {
26
+ return "No containers found matching the specified criteria.";
27
+ }
28
+ // Title - STYLE.md Section 3.1 (plain text, no markdown ##)
29
+ const title = "Docker Containers";
30
+ // Summary - STYLE.md Section 3.2
31
+ const summary = `Showing ${containers.length} of ${total} containers`;
32
+ // Request Echo - STYLE.md Section 3.5 (filters affect output)
33
+ const filterLine = filters
34
+ ? `Filters: ${Object.entries(filters)
35
+ .map(([k, v]) => `${k}=${v}`)
36
+ .join(", ")}`
37
+ : "";
38
+ // Legend - STYLE.md Section 3.3 (for mixed states)
39
+ const states = new Set(containers.map((c) => c.state));
40
+ const hasMultipleStates = states.size > 1;
41
+ const legend = hasMultipleStates ? "Legend: ● running ◐ restarting ○ stopped" : "";
42
+ const lines = [title, summary];
43
+ if (filterLine)
44
+ lines.push(filterLine);
45
+ if (legend)
46
+ lines.push(legend);
47
+ lines.push(""); // blank line before table
48
+ // Table header - STYLE.md Section 5.1
49
+ lines.push(" Container Host Ports Project");
50
+ lines.push(" ------------------------- ---------------- ------------------- ---------------");
51
+ // Sort by severity - STYLE.md Section 12
52
+ // Note: Handler also sorts before pagination to ensure critical containers appear on page 1
53
+ // This defensive sort ensures correct order even if formatter is called with unsorted data
54
+ const sorted = sortBySeverity(containers, (c) => c.state, CONTAINER_SEVERITY, (c) => c.name);
55
+ for (const c of sorted) {
56
+ const symbol = getContainerStatusSymbol(c.state);
57
+ // Format ports: show first 3 host ports then +N notation
58
+ const ports = c.ports.filter((p) => p.hostPort).map((p) => p.hostPort.toString());
59
+ const portsDisplay = ports.length === 0
60
+ ? "—"
61
+ : ports.length <= 3
62
+ ? ports.join(",")
63
+ : `${ports.slice(0, 3).join(",")}+${ports.length - 3}`;
64
+ // Extract project from labels (com.docker.compose.project)
65
+ const project = c.labels["com.docker.compose.project"] || "—";
66
+ // Format row with aligned columns
67
+ const nameCol = c.name.length > 25 ? `${c.name.slice(0, 24)}…` : c.name.padEnd(25);
68
+ const hostDisplay = c.hostName || "—";
69
+ const hostCol = hostDisplay.length > 16 ? `${hostDisplay.slice(0, 15)}…` : hostDisplay.padEnd(16);
70
+ const portsCol = portsDisplay.length > 19 ? `${portsDisplay.slice(0, 18)}…` : portsDisplay.padEnd(19);
71
+ const projectCol = project.length > 15 ? `${project.slice(0, 14)}…` : project;
72
+ lines.push(`${symbol} ${nameCol} ${hostCol} ${portsCol} ${projectCol}`);
73
+ }
74
+ // Pagination footer - STYLE.md Section 12
75
+ if (hasMore) {
76
+ lines.push("");
77
+ lines.push(`Showing ${offset + 1}–${offset + containers.length} of ${total} | next_offset: ${offset + containers.length}`);
78
+ }
79
+ return lines.join("\n");
80
+ }
81
+ /** Preview threshold for log output - show preview format when exceeding this */
82
+ const PREVIEW_THRESHOLD = 10;
83
+ /**
84
+ * Format container logs as markdown following STYLE.md section 7.5
85
+ *
86
+ * Uses preview format (first 5 + last 5) for outputs >10 lines
87
+ */
88
+ export function formatLogsMarkdown(logs, container, host, requested, truncated, follow) {
89
+ if (logs.length === 0) {
90
+ return `No logs found for container '${container}' on ${host}.`;
91
+ }
92
+ // Title - STYLE.md Section 3.1 (plain text, no markdown ##)
93
+ const title = `Container Logs for ${container} on ${host}`;
94
+ // Summary - STYLE.md Section 3.2
95
+ const summary = [
96
+ `Lines returned: ${logs.length} (requested: ${requested})`,
97
+ `truncated: ${truncated ? "yes" : "no"}`,
98
+ `follow: ${follow ? "yes" : "no"}`,
99
+ ].join(" | ");
100
+ // STYLE.md Section 3.6: Freshness timestamp for volatile data (logs)
101
+ const timestamp = getTimestamp();
102
+ const formatLogLine = (log) => ` [${log.stream}] ${log.message}`;
103
+ let logOutput;
104
+ if (logs.length <= PREVIEW_THRESHOLD) {
105
+ // Show all lines
106
+ logOutput = logs.map(formatLogLine).join("\n");
107
+ }
108
+ else {
109
+ // Preview format per STYLE.md 7.5
110
+ const first5 = logs.slice(0, 5).map(formatLogLine).join("\n");
111
+ const last5 = logs.slice(-5).map(formatLogLine).join("\n");
112
+ logOutput = `Preview (first 5):\n${first5}\n ...\n\nPreview (last 5):\n${last5}\n ...`;
113
+ }
114
+ return `${title}\n${summary}\n${timestamp}\n\n${logOutput}`;
115
+ }
116
+ /**
117
+ * Format single container stats as markdown following STYLE.md
118
+ */
119
+ export function formatStatsMarkdown(stats, host) {
120
+ if (stats.length === 0)
121
+ return "No stats available.";
122
+ const s = stats[0];
123
+ // STYLE.md Section 3.6: Freshness timestamp for volatile data (stats)
124
+ const timestamp = getTimestamp();
125
+ // STYLE.md 10.2: Warning thresholds for CPU>90%, MEM>90%
126
+ const cpuWarning = s.cpuPercent > 90 ? " ⚠" : "";
127
+ const memWarning = s.memoryPercent > 90 ? " ⚠" : "";
128
+ // STYLE.md 3.1: Plain text title (no markdown ##)
129
+ return `Stats: ${s.containerName} (${host})
130
+ ${timestamp}
131
+
132
+ | Metric | Value |
133
+ |--------|-------|
134
+ | CPU | ${s.cpuPercent.toFixed(1)}%${cpuWarning} |
135
+ | Memory | ${formatBytes(s.memoryUsage)} / ${formatBytes(s.memoryLimit)} (${s.memoryPercent.toFixed(1)}%${memWarning}) |
136
+ | Network RX | ${formatBytes(s.networkRx)} |
137
+ | Network TX | ${formatBytes(s.networkTx)} |
138
+ | Block Read | ${formatBytes(s.blockRead)} |
139
+ | Block Write | ${formatBytes(s.blockWrite)} |`;
140
+ }
141
+ /**
142
+ * Format multiple container stats as markdown table
143
+ * STYLE.md Section 3.1: Plain text title
144
+ * STYLE.md Section 3.2: Summary with rollup counts
145
+ * STYLE.md Section 3.6: Freshness timestamp for volatile data
146
+ * STYLE.md Section 10.2: Warning thresholds (CPU>90%, MEM>90%)
147
+ * STYLE.md Section 12: Severity-first sorting
148
+ */
149
+ export function formatMultiStatsMarkdown(allStats) {
150
+ if (allStats.length === 0)
151
+ return "No running containers found.";
152
+ // STYLE.md 3.1: Plain text title (no markdown ##)
153
+ const title = "Container Resource Usage";
154
+ // STYLE.md 3.2: Summary with container count
155
+ const summary = `Showing ${allStats.length} containers`;
156
+ // STYLE.md Section 3.6: Freshness timestamp for volatile data (stats)
157
+ const timestamp = getTimestamp();
158
+ // STYLE.md Section 12: Severity-first sorting (highest CPU/MEM first)
159
+ const sorted = [...allStats].sort((a, b) => {
160
+ // Sort by max(CPU%, MEM%) descending - highest resource usage first
161
+ const aMax = Math.max(a.stats.cpuPercent, a.stats.memoryPercent);
162
+ const bMax = Math.max(b.stats.cpuPercent, b.stats.memoryPercent);
163
+ return bMax - aMax;
164
+ });
165
+ const lines = [
166
+ title,
167
+ summary,
168
+ timestamp,
169
+ "",
170
+ "| Container | Host | CPU% | Memory | Mem% |",
171
+ "|-----------|------|------|--------|------|",
172
+ ];
173
+ for (const { stats, host } of sorted) {
174
+ // STYLE.md 10.2: Warning thresholds
175
+ const cpuWarning = stats.cpuPercent > 90 ? " ⚠" : "";
176
+ const memWarning = stats.memoryPercent > 90 ? " ⚠" : "";
177
+ lines.push(`| ${stats.containerName} | ${host} | ${stats.cpuPercent.toFixed(1)}%${cpuWarning} | ${formatBytes(stats.memoryUsage)} | ${stats.memoryPercent.toFixed(1)}%${memWarning} |`);
178
+ }
179
+ return lines.join("\n");
180
+ }
181
+ /**
182
+ * Format container inspection as markdown
183
+ * STYLE.md Section 3.1: Plain text title (no markdown ##/###)
184
+ * STYLE.md Section 4.1: Canonical → for port mapping
185
+ */
186
+ export function formatInspectMarkdown(info, host) {
187
+ const config = info.Config;
188
+ const state = info.State;
189
+ const mounts = info.Mounts || [];
190
+ const network = info.NetworkSettings;
191
+ // STYLE.md 3.1: Plain text title (no markdown ##)
192
+ const lines = [
193
+ `Container: ${info.Name.replace(/^\//, "")} (${host})`,
194
+ "",
195
+ "**State**",
196
+ `- Status: ${state.Status}`,
197
+ `- Running: ${state.Running}`,
198
+ `- Started: ${state.StartedAt}`,
199
+ `- Restart Count: ${info.RestartCount}`,
200
+ "",
201
+ "**Configuration**",
202
+ `- Image: ${config.Image}`,
203
+ `- Command: ${(config.Cmd || []).join(" ")}`,
204
+ `- Working Dir: ${config.WorkingDir || "/"}`,
205
+ "",
206
+ ];
207
+ if (config.Env && config.Env.length > 0) {
208
+ lines.push("**Environment Variables**");
209
+ for (const env of config.Env.slice(0, 20)) {
210
+ const [key] = env.split("=");
211
+ const isSensitive = /password|secret|key|token|api/i.test(key);
212
+ lines.push(`- ${isSensitive ? `${key}=****` : env}`);
213
+ }
214
+ if (config.Env.length > 20)
215
+ lines.push(`- ... and ${config.Env.length - 20} more`);
216
+ lines.push("");
217
+ }
218
+ if (mounts.length > 0) {
219
+ lines.push("**Mounts**");
220
+ for (const m of mounts) {
221
+ // STYLE.md 4.1: Canonical → for mapping notation
222
+ lines.push(`- ${m.Source} → ${m.Destination} (${m.Mode || "rw"})`);
223
+ }
224
+ lines.push("");
225
+ }
226
+ if (network.Ports) {
227
+ lines.push("**Ports**");
228
+ for (const [containerPort, bindings] of Object.entries(network.Ports)) {
229
+ if (bindings && bindings.length > 0) {
230
+ for (const b of bindings) {
231
+ // STYLE.md 4.1: Canonical → for port mapping
232
+ lines.push(`- ${b.HostIp || "0.0.0.0"}:${b.HostPort} → ${containerPort}`);
233
+ }
234
+ }
235
+ }
236
+ lines.push("");
237
+ }
238
+ if (network.Networks && Object.keys(network.Networks).length > 0) {
239
+ lines.push("**Networks**");
240
+ for (const networkName of Object.keys(network.Networks)) {
241
+ lines.push(`- ${networkName}`);
242
+ }
243
+ }
244
+ return lines.join("\n");
245
+ }
246
+ /**
247
+ * Format search results as markdown
248
+ */
249
+ export function formatSearchResultsMarkdown(containers, query, total) {
250
+ if (containers.length === 0)
251
+ return `No containers found matching '${query}'.`;
252
+ const lines = [`## Search Results for '${query}' (${total} matches)`, ""];
253
+ for (const c of containers) {
254
+ const stateEmoji = c.state === "running" ? "🟢" : c.state === "paused" ? "🟡" : "🔴";
255
+ lines.push(`${stateEmoji} **${c.name}** (${c.hostName})`);
256
+ lines.push(` Image: ${c.image} | State: ${c.state}`);
257
+ lines.push("");
258
+ }
259
+ return lines.join("\n");
260
+ }
261
+ /**
262
+ * Format container inspect summary as markdown (condensed version)
263
+ */
264
+ export function formatInspectSummaryMarkdown(summary) {
265
+ const lines = [
266
+ `## ${summary.name} (${summary.host})`,
267
+ "",
268
+ "| Field | Value |",
269
+ "|-------|-------|",
270
+ `| ID | ${summary.id} |`,
271
+ `| Image | ${summary.image} |`,
272
+ `| State | ${summary.state} |`,
273
+ `| Started | ${summary.started?.slice(0, 19) || "-"} |`,
274
+ `| Restarts | ${summary.restartCount} |`,
275
+ `| Networks | ${summary.networks.join(", ") || "-"} |`,
276
+ `| Ports | ${summary.ports.join(", ") || "-"} |`,
277
+ `| Mounts | ${summary.mounts.length} |`,
278
+ `| Env Vars | ${summary.env_count} |`,
279
+ `| Labels | ${summary.labels_count} |`,
280
+ ];
281
+ if (summary.mounts.length > 0 && summary.mounts.length <= 5) {
282
+ lines.push("", "**Mounts:**");
283
+ for (const m of summary.mounts) {
284
+ lines.push(`- ${m.src} → ${m.dst} (${m.type})`);
285
+ }
286
+ }
287
+ return lines.join("\n");
288
+ }
289
+ /**
290
+ * Format container lifecycle operations as one-liners
291
+ * Simple success messages per STYLE.md - no elaborate formatting needed
292
+ */
293
+ export function formatContainerStartMarkdown(container, host) {
294
+ return `Container ${container} started on ${host}`;
295
+ }
296
+ export function formatContainerStopMarkdown(container, host) {
297
+ return `Container ${container} stopped on ${host}`;
298
+ }
299
+ export function formatContainerRestartMarkdown(container, host) {
300
+ return `Container ${container} restarted on ${host}`;
301
+ }
302
+ export function formatContainerPauseMarkdown(container, host) {
303
+ return `Container ${container} paused on ${host}`;
304
+ }
305
+ export function formatContainerResumeMarkdown(container, host) {
306
+ return `Container ${container} resumed on ${host}`;
307
+ }
308
+ export function formatContainerExecMarkdown(container, host, command, output, exitCode) {
309
+ const status = exitCode === 0 ? "✓" : "✗";
310
+ const outputLines = output.split("\n");
311
+ if (outputLines.length <= PREVIEW_THRESHOLD) {
312
+ return `${status} Executed in ${container} on ${host}: ${command}\nExit code: ${exitCode}\n\n${output}`;
313
+ }
314
+ const first5 = outputLines.slice(0, 5).join("\n");
315
+ const last5 = outputLines.slice(-5).join("\n");
316
+ const preview = `Preview (first 5):\n${first5}\n...\n\nPreview (last 5):\n${last5}\n...`;
317
+ return `${status} Executed in ${container} on ${host}: ${command}\nExit code: ${exitCode}\nOutput lines: ${outputLines.length} (previewed)\n\n${preview}`;
318
+ }
319
+ export function formatContainerTopMarkdown(container, host, processes) {
320
+ const timestamp = getTimestamp();
321
+ return `Processes in ${container} (${host})\n${timestamp}\n\n${processes}`;
322
+ }
323
+ //# sourceMappingURL=container.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"container.js","sourceRoot":"","sources":["../../src/formatters/container.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAC;AAErE,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C;;;GAGG;AACH,SAAS,wBAAwB,CAAC,KAAa;IAC7C,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,GAAG,CAAC,CAAC,iBAAiB;IACtD,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,YAAY;QAAE,OAAO,GAAG,CAAC,CAAC,yBAAyB;IACvF,OAAO,GAAG,CAAC,CAAC,sBAAsB;AACpC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,wBAAwB,CACtC,UAA2B,EAC3B,KAAa,EACb,MAAc,EACd,OAAgB,EAChB,OAAmD;IAEnD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,sDAAsD,CAAC;IAChE,CAAC;IAED,4DAA4D;IAC5D,MAAM,KAAK,GAAG,mBAAmB,CAAC;IAElC,iCAAiC;IACjC,MAAM,OAAO,GAAG,WAAW,UAAU,CAAC,MAAM,OAAO,KAAK,aAAa,CAAC;IAEtE,8DAA8D;IAC9D,MAAM,UAAU,GAAG,OAAO;QACxB,CAAC,CAAC,YAAY,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;aAChC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;aAC5B,IAAI,CAAC,IAAI,CAAC,EAAE;QACjB,CAAC,CAAC,EAAE,CAAC;IAEP,mDAAmD;IACnD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IACvD,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,iBAAiB,CAAC,CAAC,CAAC,4CAA4C,CAAC,CAAC,CAAC,EAAE,CAAC;IAErF,MAAM,KAAK,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC/B,IAAI,UAAU;QAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACvC,IAAI,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,0BAA0B;IAE1C,sCAAsC;IACtC,KAAK,CAAC,IAAI,CAAC,2EAA2E,CAAC,CAAC;IACxF,KAAK,CAAC,IAAI,CAAC,oFAAoF,CAAC,CAAC;IAEjG,yCAAyC;IACzC,4FAA4F;IAC5F,2FAA2F;IAC3F,MAAM,MAAM,GAAG,cAAc,CAC3B,UAAU,EACV,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,EACd,kBAAkB,EAClB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CACd,CAAC;IAEF,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,wBAAwB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAEjD,yDAAyD;QACzD,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;QACnF,MAAM,YAAY,GAChB,KAAK,CAAC,MAAM,KAAK,CAAC;YAChB,CAAC,CAAC,GAAG;YACL,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC;gBACjB,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;gBACjB,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAE7D,2DAA2D;QAC3D,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,4BAA4B,CAAC,IAAI,GAAG,CAAC;QAE9D,kCAAkC;QAClC,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACnF,MAAM,WAAW,GAAG,CAAC,CAAC,QAAQ,IAAI,GAAG,CAAC;QACtC,MAAM,OAAO,GACX,WAAW,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACpF,MAAM,QAAQ,GACZ,YAAY,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACvF,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC;QAE9E,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,OAAO,KAAK,OAAO,KAAK,QAAQ,IAAI,UAAU,EAAE,CAAC,CAAC;IAC5E,CAAC;IAED,0CAA0C;IAC1C,IAAI,OAAO,EAAE,CAAC;QACZ,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CACR,WAAW,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,UAAU,CAAC,MAAM,OAAO,KAAK,mBAAmB,MAAM,GAAG,UAAU,CAAC,MAAM,EAAE,CAC/G,CAAC;IACJ,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,iFAAiF;AACjF,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAE7B;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAChC,IAA6D,EAC7D,SAAiB,EACjB,IAAY,EACZ,SAAiB,EACjB,SAAkB,EAClB,MAAe;IAEf,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,gCAAgC,SAAS,QAAQ,IAAI,GAAG,CAAC;IAClE,CAAC;IAED,4DAA4D;IAC5D,MAAM,KAAK,GAAG,sBAAsB,SAAS,OAAO,IAAI,EAAE,CAAC;IAE3D,iCAAiC;IACjC,MAAM,OAAO,GAAG;QACd,mBAAmB,IAAI,CAAC,MAAM,gBAAgB,SAAS,GAAG;QAC1D,cAAc,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE;QACxC,WAAW,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE;KACnC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAEd,qEAAqE;IACrE,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;IAEjC,MAAM,aAAa,GAAG,CAAC,GAAwC,EAAE,EAAE,CACjE,MAAM,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC;IAErC,IAAI,SAAiB,CAAC;IACtB,IAAI,IAAI,CAAC,MAAM,IAAI,iBAAiB,EAAE,CAAC;QACrC,iBAAiB;QACjB,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjD,CAAC;SAAM,CAAC;QACN,kCAAkC;QAClC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3D,SAAS,GAAG,uBAAuB,MAAM,iCAAiC,KAAK,SAAS,CAAC;IAC3F,CAAC;IAED,OAAO,GAAG,KAAK,KAAK,OAAO,KAAK,SAAS,OAAO,SAAS,EAAE,CAAC;AAC9D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAuB,EAAE,IAAY;IACvE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,qBAAqB,CAAC;IACrD,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACnB,sEAAsE;IACtE,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;IAEjC,yDAAyD;IACzD,MAAM,UAAU,GAAG,CAAC,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IACjD,MAAM,UAAU,GAAG,CAAC,CAAC,aAAa,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IAEpD,kDAAkD;IAClD,OAAO,UAAU,CAAC,CAAC,aAAa,KAAK,IAAI;EACzC,SAAS;;;;UAID,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,UAAU;aAClC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,UAAU;iBACnG,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;iBACxB,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;iBACxB,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;kBACvB,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC;AAChD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,wBAAwB,CACtC,QAAwD;IAExD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,8BAA8B,CAAC;IAEjE,kDAAkD;IAClD,MAAM,KAAK,GAAG,0BAA0B,CAAC;IAEzC,6CAA6C;IAC7C,MAAM,OAAO,GAAG,WAAW,QAAQ,CAAC,MAAM,aAAa,CAAC;IAExD,sEAAsE;IACtE,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;IAEjC,sEAAsE;IACtE,MAAM,MAAM,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACzC,oEAAoE;QACpE,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QACjE,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QACjE,OAAO,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG;QACZ,KAAK;QACL,OAAO;QACP,SAAS;QACT,EAAE;QACF,6CAA6C;QAC7C,6CAA6C;KAC9C,CAAC;IAEF,KAAK,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,MAAM,EAAE,CAAC;QACrC,oCAAoC;QACpC,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,MAAM,UAAU,GAAG,KAAK,CAAC,aAAa,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAExD,KAAK,CAAC,IAAI,CACR,KAAK,KAAK,CAAC,aAAa,MAAM,IAAI,MAAM,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,UAAU,MAAM,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,UAAU,IAAI,CAC5K,CAAC;IACJ,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAmC,EAAE,IAAY;IACrF,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IACzB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;IACjC,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC;IAErC,kDAAkD;IAClD,MAAM,KAAK,GAAG;QACZ,cAAc,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,GAAG;QACtD,EAAE;QACF,WAAW;QACX,aAAa,KAAK,CAAC,MAAM,EAAE;QAC3B,cAAc,KAAK,CAAC,OAAO,EAAE;QAC7B,cAAc,KAAK,CAAC,SAAS,EAAE;QAC/B,oBAAoB,IAAI,CAAC,YAAY,EAAE;QACvC,EAAE;QACF,mBAAmB;QACnB,YAAY,MAAM,CAAC,KAAK,EAAE;QAC1B,cAAc,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QAC5C,kBAAkB,MAAM,CAAC,UAAU,IAAI,GAAG,EAAE;QAC5C,EAAE;KACH,CAAC;IAEF,IAAI,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxC,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QACxC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YAC1C,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC7B,MAAM,WAAW,GAAG,gCAAgC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC/D,KAAK,CAAC,IAAI,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QACvD,CAAC;QACD,IAAI,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE;YAAE,KAAK,CAAC,IAAI,CAAC,aAAa,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE,OAAO,CAAC,CAAC;QACnF,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACzB,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;YACvB,iDAAiD;YACjD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,MAAM,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,IAAI,IAAI,IAAI,GAAG,CAAC,CAAC;QACrE,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACxB,KAAK,MAAM,CAAC,aAAa,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACtE,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpC,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;oBACzB,6CAA6C;oBAC7C,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,IAAI,SAAS,IAAI,CAAC,CAAC,QAAQ,MAAM,aAAa,EAAE,CAAC,CAAC;gBAC5E,CAAC;YACH,CAAC;QACH,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjE,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC3B,KAAK,MAAM,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YACxD,KAAK,CAAC,IAAI,CAAC,KAAK,WAAW,EAAE,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,2BAA2B,CACzC,UAA2B,EAC3B,KAAa,EACb,KAAa;IAEb,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,iCAAiC,KAAK,IAAI,CAAC;IAE/E,MAAM,KAAK,GAAG,CAAC,0BAA0B,KAAK,MAAM,KAAK,WAAW,EAAE,EAAE,CAAC,CAAC;IAE1E,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QACrF,KAAK,CAAC,IAAI,CAAC,GAAG,UAAU,MAAM,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC;QAC1D,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,KAAK,aAAa,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QACvD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAqBD;;GAEG;AACH,MAAM,UAAU,4BAA4B,CAAC,OAAgC;IAC3E,MAAM,KAAK,GAAG;QACZ,MAAM,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,GAAG;QACtC,EAAE;QACF,mBAAmB;QACnB,mBAAmB;QACnB,UAAU,OAAO,CAAC,EAAE,IAAI;QACxB,aAAa,OAAO,CAAC,KAAK,IAAI;QAC9B,aAAa,OAAO,CAAC,KAAK,IAAI;QAC9B,eAAe,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG,IAAI;QACvD,gBAAgB,OAAO,CAAC,YAAY,IAAI;QACxC,gBAAgB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI;QACtD,aAAa,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI;QAChD,cAAc,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI;QACvC,gBAAgB,OAAO,CAAC,SAAS,IAAI;QACrC,cAAc,OAAO,CAAC,YAAY,IAAI;KACvC,CAAC;IAEF,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QAC5D,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;QAC9B,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YAC/B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;;GAGG;AAEH,MAAM,UAAU,4BAA4B,CAAC,SAAiB,EAAE,IAAY;IAC1E,OAAO,aAAa,SAAS,eAAe,IAAI,EAAE,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,SAAiB,EAAE,IAAY;IACzE,OAAO,aAAa,SAAS,eAAe,IAAI,EAAE,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,8BAA8B,CAAC,SAAiB,EAAE,IAAY;IAC5E,OAAO,aAAa,SAAS,iBAAiB,IAAI,EAAE,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,SAAiB,EAAE,IAAY;IAC1E,OAAO,aAAa,SAAS,cAAc,IAAI,EAAE,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,SAAiB,EAAE,IAAY;IAC3E,OAAO,aAAa,SAAS,eAAe,IAAI,EAAE,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,SAAiB,EACjB,IAAY,EACZ,OAAe,EACf,MAAc,EACd,QAAgB;IAEhB,MAAM,MAAM,GAAG,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IAC1C,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAEvC,IAAI,WAAW,CAAC,MAAM,IAAI,iBAAiB,EAAE,CAAC;QAC5C,OAAO,GAAG,MAAM,gBAAgB,SAAS,OAAO,IAAI,KAAK,OAAO,gBAAgB,QAAQ,OAAO,MAAM,EAAE,CAAC;IAC1G,CAAC;IAED,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClD,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAG,uBAAuB,MAAM,+BAA+B,KAAK,OAAO,CAAC;IAEzF,OAAO,GAAG,MAAM,gBAAgB,SAAS,OAAO,IAAI,KAAK,OAAO,gBAAgB,QAAQ,mBAAmB,WAAW,CAAC,MAAM,mBAAmB,OAAO,EAAE,CAAC;AAC5J,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,SAAiB,EACjB,IAAY,EACZ,SAAiB;IAEjB,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;IACjC,OAAO,gBAAgB,SAAS,KAAK,IAAI,MAAM,SAAS,OAAO,SAAS,EAAE,CAAC;AAC7E,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Diagnostic and health check formatting utilities
3
+ *
4
+ * Provides consistent markdown formatting for system health checks
5
+ * and diagnostic operations.
6
+ */
7
+ /**
8
+ * Diagnostic check result type for formatting
9
+ */
10
+ export interface DiagnosticCheckResult {
11
+ status: "pass" | "warn" | "fail";
12
+ message: string;
13
+ details?: string;
14
+ recommendations?: string;
15
+ }
16
+ /**
17
+ * Format host doctor diagnostic results as markdown
18
+ */
19
+ export declare function formatHostDoctorMarkdown(host: string, checks: Record<string, DiagnosticCheckResult>): string;
20
+ //# sourceMappingURL=diagnostics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../src/formatters/diagnostics.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,GAC5C,MAAM,CAsER"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Diagnostic and health check formatting utilities
3
+ *
4
+ * Provides consistent markdown formatting for system health checks
5
+ * and diagnostic operations.
6
+ */
7
+ /**
8
+ * Format host doctor diagnostic results as markdown
9
+ */
10
+ export function formatHostDoctorMarkdown(host, checks) {
11
+ const lines = [`## 🏥 Health Check: ${host}`, ""];
12
+ // Individual check results (determine order and labels)
13
+ const checkOrder = ["docker", "network", "resources", "containers", "processes", "logs"];
14
+ const checkLabels = {
15
+ docker: "Docker Daemon",
16
+ network: "Network Connectivity",
17
+ resources: "System Resources",
18
+ containers: "Container Health",
19
+ processes: "Process Health",
20
+ logs: "System Logs",
21
+ };
22
+ // Build list of checks to display (only those that exist in checks object)
23
+ const checksToDisplay = [];
24
+ for (const checkName of checkOrder) {
25
+ const result = checks[checkName];
26
+ if (result) {
27
+ checksToDisplay.push([checkName, result]);
28
+ }
29
+ }
30
+ // Count status types (only from checks that will be displayed)
31
+ let passCount = 0;
32
+ let warnCount = 0;
33
+ let failCount = 0;
34
+ for (const [, result] of checksToDisplay) {
35
+ if (result.status === "pass")
36
+ passCount++;
37
+ else if (result.status === "warn")
38
+ warnCount++;
39
+ else if (result.status === "fail")
40
+ failCount++;
41
+ }
42
+ // Overall status
43
+ const overallStatus = failCount > 0 ? "❌ CRITICAL" : warnCount > 0 ? "⚠️ WARNING" : "✅ HEALTHY";
44
+ lines.push(`**Overall Status:** ${overallStatus}`);
45
+ lines.push(`**Checks:** ${passCount} passed, ${warnCount} warnings, ${failCount} failed`);
46
+ lines.push("");
47
+ // Display each check
48
+ for (const [checkName, result] of checksToDisplay) {
49
+ const statusEmoji = result.status === "pass" ? "✅" : result.status === "warn" ? "⚠️" : "❌";
50
+ const statusText = result.status.toUpperCase();
51
+ const label = checkLabels[checkName] || checkName;
52
+ lines.push(`### ${statusEmoji} ${label} - ${statusText}`);
53
+ lines.push("");
54
+ lines.push(`**Message:** ${result.message}`);
55
+ if (result.details) {
56
+ lines.push("");
57
+ lines.push("**Details:**");
58
+ lines.push("```");
59
+ lines.push(result.details);
60
+ lines.push("```");
61
+ }
62
+ if (result.recommendations) {
63
+ lines.push("");
64
+ lines.push("**Recommendations:**");
65
+ for (const rec of result.recommendations.split("\n")) {
66
+ lines.push(`- ${rec}`);
67
+ }
68
+ }
69
+ lines.push("");
70
+ }
71
+ return lines.join("\n");
72
+ }
73
+ //# sourceMappingURL=diagnostics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../src/formatters/diagnostics.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,139 @@
1
+ /**
2
+ * Docker system formatting utilities
3
+ *
4
+ * Provides consistent markdown formatting for Docker system info,
5
+ * disk usage, prune operations, images, networks, and volumes.
6
+ */
7
+ import type { DockerDiskUsage, DockerNetworkInfo, DockerVolumeInfo, ImageInfo, PruneResult } from "../types.js";
8
+ /**
9
+ * Successful Docker info result
10
+ */
11
+ export interface DockerInfoSuccess {
12
+ status: "success";
13
+ dockerVersion: string;
14
+ apiVersion: string;
15
+ os: string;
16
+ arch: string;
17
+ kernelVersion: string;
18
+ cpus: number;
19
+ memoryBytes: number;
20
+ storageDriver: string;
21
+ rootDir: string;
22
+ containersRunning: number;
23
+ containersTotal: number;
24
+ images: number;
25
+ }
26
+ /**
27
+ * Error Docker info result (when a host is unreachable)
28
+ */
29
+ export interface DockerInfoError {
30
+ status: "error";
31
+ errorMessage: string;
32
+ }
33
+ /**
34
+ * Docker info result - discriminated union for success/error
35
+ */
36
+ export type DockerInfoResult = DockerInfoSuccess | DockerInfoError;
37
+ /**
38
+ * Format Docker info as markdown
39
+ *
40
+ * Output structure per STYLE.md:
41
+ * 1. Title (Section 3.1): "Docker System Info on {host}" or "(all)"
42
+ * 2. Summary (Section 3.2): "Hosts: N | OK: N | Fail: N"
43
+ * 3. Per-host details with canonical symbols (Section 4.1)
44
+ *
45
+ * Title format:
46
+ * - Single host: "Docker System Info on {host}"
47
+ * - Multiple hosts: "Docker System Info (all)"
48
+ * - No markdown ## prefix (plain text titles)
49
+ *
50
+ * Symbols:
51
+ * - ✗ for errors (never ❌ emoji)
52
+ *
53
+ * @param results - Array of host Docker info results (success or error)
54
+ * @returns Formatted markdown string with system information
55
+ */
56
+ export declare function formatDockerInfoMarkdown(results: Array<{
57
+ host: string;
58
+ info: DockerInfoResult;
59
+ }>): string;
60
+ /**
61
+ * Format Docker disk usage as markdown
62
+ *
63
+ * Output structure per STYLE.md:
64
+ * 1. Title (Section 3.1): "Docker Disk Usage on {host}" or "(all)"
65
+ * 2. Summary (Section 3.2): Aggregate totals across all hosts
66
+ * 3. Per-host usage breakdown tables
67
+ *
68
+ * @param results - Array of host disk usage statistics
69
+ * @returns Formatted markdown string with disk usage by category
70
+ */
71
+ export declare function formatDockerDfMarkdown(results: Array<{
72
+ host: string;
73
+ usage: DockerDiskUsage;
74
+ }>): string;
75
+ /**
76
+ * Format prune results as markdown
77
+ *
78
+ * Output structure per STYLE.md:
79
+ * 1. Title (Section 3.1): "Docker Prune on {host}" or "(all)"
80
+ * 2. Per-host RECLAIMED sections (Section 7.8)
81
+ *
82
+ * RECLAIMED format:
83
+ * - Section header: "RECLAIMED:"
84
+ * - Indented list: " type: size"
85
+ * - Not a table (differs from previous implementation)
86
+ *
87
+ * @param allResults - Array of host prune results
88
+ * @returns Formatted markdown string with RECLAIMED sections
89
+ */
90
+ export declare function formatPruneMarkdown(allResults: Array<{
91
+ host: string;
92
+ results: PruneResult[];
93
+ }>): string;
94
+ /**
95
+ * Format images list as markdown table
96
+ *
97
+ * Title format per STYLE.md 3.1:
98
+ * - With host: "Docker Images on {host}"
99
+ * - Without host: "Docker Images"
100
+ * - No markdown ## prefix
101
+ *
102
+ * @param images - Array of image information
103
+ * @param total - Total count of images (for pagination)
104
+ * @param offset - Current pagination offset
105
+ * @param host - Optional host name for single-host queries
106
+ * @returns Formatted markdown string with image table
107
+ */
108
+ export declare function formatImagesMarkdown(images: ImageInfo[], total: number, offset: number, host?: string): string;
109
+ /**
110
+ * Format Docker networks list as markdown
111
+ *
112
+ * Title format per STYLE.MD 3.1:
113
+ * - With host: "Docker Networks on {host}"
114
+ * - Without host: "Docker Networks"
115
+ * - No markdown ## prefix
116
+ *
117
+ * @param networks - Array of network information
118
+ * @param total - Total count of networks (for pagination)
119
+ * @param offset - Current pagination offset
120
+ * @param host - Optional host name for single-host queries
121
+ * @returns Formatted markdown string with networks list
122
+ */
123
+ export declare function formatNetworksMarkdown(networks: DockerNetworkInfo[], total: number, offset: number, host?: string): string;
124
+ /**
125
+ * Format Docker volumes list as markdown
126
+ *
127
+ * Title format per STYLE.md 3.1:
128
+ * - With host: "Docker Volumes on {host}"
129
+ * - Without host: "Docker Volumes"
130
+ * - No markdown ## prefix
131
+ *
132
+ * @param volumes - Array of volume information
133
+ * @param total - Total count of volumes (for pagination)
134
+ * @param offset - Current pagination offset
135
+ * @param host - Optional host name for single-host queries
136
+ * @returns Formatted markdown string with volumes list
137
+ */
138
+ export declare function formatVolumesMarkdown(volumes: DockerVolumeInfo[], total: number, offset: number, host?: string): string;
139
+ //# sourceMappingURL=docker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docker.d.ts","sourceRoot":"","sources":["../../src/formatters/docker.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EACV,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,SAAS,EACT,WAAW,EACZ,MAAM,aAAa,CAAC;AAErB;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,SAAS,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,OAAO,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,iBAAiB,GAAG,eAAe,CAAC;AAEnE;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,gBAAgB,CAAA;CAAE,CAAC,GACvD,MAAM,CA+BR;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,eAAe,CAAA;CAAE,CAAC,GACvD,MAAM,CAsCR;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,WAAW,EAAE,CAAA;CAAE,CAAC,GAC1D,MAAM,CAkBR;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,SAAS,EAAE,EACnB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,MAAM,GACZ,MAAM,CAqBR;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,iBAAiB,EAAE,EAC7B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,MAAM,GACZ,MAAM,CAwBR;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,gBAAgB,EAAE,EAC3B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,MAAM,GACZ,MAAM,CAwBR"}