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,397 @@
1
+ /**
2
+ * Docker Compose formatting utilities
3
+ *
4
+ * Provides consistent markdown formatting for Compose project
5
+ * listing and status display.
6
+ * Follows docs/STYLE.md canonical output templates.
7
+ */
8
+ import { COMPOSE_PROJECT_SEVERITY, COMPOSE_SERVICE_SEVERITY, sortBySeverity, } from "../utils/sorting.js";
9
+ import { getTimestamp } from "./utils.js";
10
+ /**
11
+ * Get canonical state symbol for compose project status
12
+ * STYLE.md Section 4.1: Status and State symbols
13
+ */
14
+ function getStatusSymbol(status) {
15
+ if (status === "running")
16
+ return "●"; // running/active
17
+ if (status === "partial")
18
+ return "◐"; // partial/degraded
19
+ return "○"; // stopped/inactive
20
+ }
21
+ /**
22
+ * Format compose project list as markdown following STYLE.md section 7.4
23
+ */
24
+ export function formatComposeListMarkdown(projects, host, total, offset, hasMore, filters) {
25
+ if (projects.length === 0)
26
+ return `No compose projects found on ${host}.`;
27
+ // Count by status for status breakdown - STYLE.md Section 7.4
28
+ const statusCounts = projects.reduce((acc, p) => {
29
+ if (p.status === "running")
30
+ acc.running++;
31
+ else if (p.status === "partial")
32
+ acc.partial++;
33
+ else
34
+ acc.stopped++;
35
+ return acc;
36
+ }, { running: 0, partial: 0, stopped: 0 });
37
+ // Title - STYLE.md Section 3.1
38
+ const totalDisplay = total !== undefined ? ` (${total} total)` : "";
39
+ const title = `Docker Compose Stacks on ${host}${totalDisplay}`;
40
+ // Status breakdown - STYLE.md Section 7.4
41
+ const breakdownParts = [];
42
+ if (statusCounts.running > 0)
43
+ breakdownParts.push(`running: ${statusCounts.running}`);
44
+ if (statusCounts.partial > 0)
45
+ breakdownParts.push(`partial: ${statusCounts.partial}`);
46
+ if (statusCounts.stopped > 0)
47
+ breakdownParts.push(`stopped: ${statusCounts.stopped}`);
48
+ const statusBreakdown = `Status breakdown: ${breakdownParts.join(", ")}`;
49
+ // Request Echo - STYLE.md Section 3.5 (filters affect output)
50
+ const filterLine = filters
51
+ ? `Filters: ${Object.entries(filters)
52
+ .map(([k, v]) => `${k}=${v}`)
53
+ .join(", ")}`
54
+ : "";
55
+ // Legend - STYLE.md Section 3.3 (for mixed states)
56
+ const states = new Set(projects.map((p) => p.status));
57
+ const hasMultipleStates = states.size > 1;
58
+ const legend = hasMultipleStates ? "Legend: ● running ◐ partial ○ stopped" : "";
59
+ // STYLE.md Section 3.6: Freshness timestamp for volatile data (discovery scans)
60
+ const timestamp = getTimestamp();
61
+ const lines = [title, statusBreakdown];
62
+ if (filterLine)
63
+ lines.push(filterLine);
64
+ lines.push(timestamp);
65
+ if (legend)
66
+ lines.push(legend);
67
+ lines.push(""); // blank line before table
68
+ // Table header - STYLE.md Section 5.1
69
+ lines.push(" Stack Status Services");
70
+ lines.push(" ------------------------- ---------- -------------------------");
71
+ // Sort by severity first - STYLE.md Section 12
72
+ const sorted = sortBySeverity(projects, (p) => p.status, COMPOSE_PROJECT_SEVERITY, (p) => p.name);
73
+ for (const p of sorted) {
74
+ const symbol = getStatusSymbol(p.status);
75
+ // Format services: [N] service1,service2…
76
+ const serviceCount = p.services.length;
77
+ const serviceNames = serviceCount === 0
78
+ ? "—"
79
+ : serviceCount <= 2
80
+ ? `[${serviceCount}] ${p.services.join(",")}`
81
+ : `[${serviceCount}] ${p.services.slice(0, 2).join(",")}…`;
82
+ // Format row with aligned columns
83
+ const nameCol = p.name.length > 25 ? `${p.name.slice(0, 24)}…` : p.name.padEnd(25);
84
+ const statusCol = p.status.padEnd(10);
85
+ const servicesCol = serviceNames.length > 25 ? `${serviceNames.slice(0, 24)}…` : serviceNames;
86
+ lines.push(`${symbol} ${nameCol} ${statusCol} ${servicesCol}`);
87
+ }
88
+ // Pagination footer - STYLE.md Section 12
89
+ if (hasMore && total !== undefined && offset !== undefined) {
90
+ lines.push("");
91
+ lines.push(`Showing ${offset + 1}–${offset + projects.length} of ${total} | next_offset: ${offset + projects.length}`);
92
+ }
93
+ return lines.join("\n");
94
+ }
95
+ /**
96
+ * Format compose up operation result.
97
+ *
98
+ * Follows STYLE.md sections:
99
+ * - 3.1: Title format "Operation for project on host"
100
+ * - 3.2: Summary line with service count
101
+ * - 4.1: Canonical ● symbol for active services
102
+ *
103
+ * @example
104
+ * formatComposeUpMarkdown(project, "host1", { servicesStarted: 3 })
105
+ * // Returns:
106
+ * // Compose Up for myapp on host1
107
+ * // Services started: 3
108
+ * //
109
+ * // ● myapp (3 services)
110
+ */
111
+ export function formatComposeUpMarkdown(projectData, host, options) {
112
+ const title = `Compose Up for ${projectData.name} on ${host}`;
113
+ if (options.servicesStarted === 0) {
114
+ return `${title}\nNo services started`;
115
+ }
116
+ const summary = `Services started: ${options.servicesStarted}`;
117
+ const statusSymbol = "●"; // Canonical running symbol per STYLE.md 4.1
118
+ const statusLine = `${statusSymbol} ${projectData.name} (${options.servicesStarted} services)`;
119
+ return `${title}\n${summary}\n\n${statusLine}`;
120
+ }
121
+ /**
122
+ * Format compose project status as markdown following STYLE.md section 8.3
123
+ */
124
+ export function formatComposeStatusMarkdown(project, totalServices, offset, hasMore) {
125
+ const statusSymbol = getStatusSymbol(project.status);
126
+ // Title - STYLE.md Section 3.1
127
+ const title = `Compose Stack: ${project.name} (${statusSymbol} ${project.status})`;
128
+ // Summary - STYLE.md Section 3.2
129
+ const summary = totalServices !== undefined
130
+ ? `Services: ${totalServices} | Showing: ${offset || 0 + 1}–${(offset || 0) + project.services.length}`
131
+ : `Services: ${project.services.length}`;
132
+ // STYLE.md Section 3.6: Freshness timestamp for volatile data (status queries)
133
+ const timestamp = getTimestamp();
134
+ const lines = [title, summary, timestamp];
135
+ if (project.services.length === 0) {
136
+ lines.push("", "No services found.");
137
+ return lines.join("\n");
138
+ }
139
+ // Legend - STYLE.md Section 3.3 (for mixed service states)
140
+ const serviceStates = new Set(project.services.map((s) => s.status));
141
+ const hasMultipleStates = serviceStates.size > 1;
142
+ const legend = hasMultipleStates ? "Legend: ● running ○ stopped" : "";
143
+ if (legend)
144
+ lines.push(legend);
145
+ lines.push(""); // blank line before table
146
+ // Table header - STYLE.md Section 5.1
147
+ lines.push(" Service Status Health Ports");
148
+ lines.push(" ------------------------- ---------- ---------- ---------------");
149
+ // Sort by severity: stopped → running
150
+ const sorted = sortBySeverity(project.services, (s) => s.status, COMPOSE_SERVICE_SEVERITY, (s) => s.name);
151
+ for (const svc of sorted) {
152
+ const symbol = svc.status === "running" ? "●" : "○";
153
+ const health = svc.health || "—";
154
+ // Format ports with overflow notation
155
+ const ports = svc.publishers?.map((p) => `${p.publishedPort}→${p.targetPort}`) || [];
156
+ const portsDisplay = ports.length === 0
157
+ ? "—"
158
+ : ports.length <= 3
159
+ ? ports.join(",")
160
+ : `${ports.slice(0, 3).join(",")}+${ports.length - 3}`;
161
+ // Format row with aligned columns
162
+ const nameCol = svc.name.length > 25 ? `${svc.name.slice(0, 24)}…` : svc.name.padEnd(25);
163
+ const statusCol = svc.status.padEnd(10);
164
+ const healthCol = health.padEnd(10);
165
+ const portsCol = portsDisplay.length > 15 ? `${portsDisplay.slice(0, 14)}…` : portsDisplay;
166
+ lines.push(`${symbol} ${nameCol} ${statusCol} ${healthCol} ${portsCol}`);
167
+ }
168
+ // Pagination footer - STYLE.md Section 12
169
+ if (hasMore && totalServices !== undefined && offset !== undefined) {
170
+ lines.push("");
171
+ lines.push(`Showing ${offset + 1}–${offset + project.services.length} of ${totalServices} | next_offset: ${offset + project.services.length}`);
172
+ }
173
+ return lines.join("\n");
174
+ }
175
+ /**
176
+ * Format compose down operation result.
177
+ *
178
+ * Follows STYLE.md sections:
179
+ * - 3.1: Title format "Operation for project on host"
180
+ * - 3.2: Summary line with counts
181
+ * - 4.1: Canonical ○ symbol for stopped services
182
+ *
183
+ * @example
184
+ * formatComposeDownMarkdown(project, "host1", { servicesStopped: 3, volumesRemoved: 2 })
185
+ * // Returns:
186
+ * // Compose Down for myapp on host1
187
+ * // Services stopped: 3 | Volumes removed: 2
188
+ * //
189
+ * // ○ myapp (3 services stopped)
190
+ */
191
+ export function formatComposeDownMarkdown(projectData, host, options) {
192
+ const title = `Compose Down for ${projectData.name} on ${host}`;
193
+ if (options.servicesStopped === 0) {
194
+ return `${title}\nNo services stopped`;
195
+ }
196
+ const summaryParts = [`Services stopped: ${options.servicesStopped}`];
197
+ if (options.volumesRemoved !== undefined && options.volumesRemoved > 0) {
198
+ summaryParts.push(`Volumes removed: ${options.volumesRemoved}`);
199
+ }
200
+ const summary = summaryParts.join(" | ");
201
+ const statusSymbol = "○"; // Stopped symbol per STYLE.md 4.1
202
+ const statusLine = `${statusSymbol} ${projectData.name} (${options.servicesStopped} services stopped)`;
203
+ return `${title}\n${summary}\n\n${statusLine}`;
204
+ }
205
+ /**
206
+ * Format compose restart operation result.
207
+ *
208
+ * Follows STYLE.md sections:
209
+ * - 3.1: Title format "Operation for project on host"
210
+ * - 3.2: Summary line with count
211
+ * - 4.1: Canonical ◐ symbol for restarting services
212
+ *
213
+ * @example
214
+ * formatComposeRestartMarkdown(project, "host1", { servicesRestarted: 3 })
215
+ * // Returns:
216
+ * // Compose Restart for myapp on host1
217
+ * // Services restarted: 3
218
+ * //
219
+ * // ◐ myapp (3 services restarted)
220
+ */
221
+ export function formatComposeRestartMarkdown(projectData, host, options) {
222
+ const title = `Compose Restart for ${projectData.name} on ${host}`;
223
+ if (options.servicesRestarted === 0) {
224
+ return `${title}\nNo services restarted`;
225
+ }
226
+ const summary = `Services restarted: ${options.servicesRestarted}`;
227
+ const statusSymbol = "◐"; // Restarting symbol per STYLE.md 4.1
228
+ const statusLine = `${statusSymbol} ${projectData.name} (${options.servicesRestarted} services restarted)`;
229
+ return `${title}\n${summary}\n\n${statusLine}`;
230
+ }
231
+ /**
232
+ * Format compose recreate operation result.
233
+ *
234
+ * Follows STYLE.md sections:
235
+ * - 3.1: Title format "Operation for project on host"
236
+ * - 3.2: Summary line with count
237
+ * - 4.1: Canonical ● symbol (recreated = running)
238
+ *
239
+ * @example
240
+ * formatComposeRecreateMarkdown(project, "host1", { servicesRecreated: 3 })
241
+ * // Returns:
242
+ * // Compose Recreate for myapp on host1
243
+ * // Services recreated: 3
244
+ * //
245
+ * // ● myapp (3 services recreated)
246
+ */
247
+ export function formatComposeRecreateMarkdown(projectData, host, options) {
248
+ const title = `Compose Recreate for ${projectData.name} on ${host}`;
249
+ if (options.servicesRecreated === 0) {
250
+ return `${title}\nNo services recreated`;
251
+ }
252
+ const summary = `Services recreated: ${options.servicesRecreated}`;
253
+ const statusSymbol = "●"; // Running symbol per STYLE.md 4.1
254
+ const statusLine = `${statusSymbol} ${projectData.name} (${options.servicesRecreated} services recreated)`;
255
+ return `${title}\n${summary}\n\n${statusLine}`;
256
+ }
257
+ /**
258
+ * Format compose pull operation result.
259
+ *
260
+ * Follows STYLE.md sections:
261
+ * - 3.1: Title format "Operation for project on host"
262
+ * - 3.2: Summary with counts (conditional parts)
263
+ * - 4.1: Canonical ✓ symbol for success
264
+ *
265
+ * @example
266
+ * formatComposePullMarkdown(project, "host1", { imagesPulled: 2, imagesUpToDate: 1 })
267
+ * // Returns:
268
+ * // Compose Pull for myapp on host1
269
+ * // Images pulled: 2 | Up-to-date: 1
270
+ * //
271
+ * // ✓ myapp (2 images updated, 1 already current)
272
+ */
273
+ export function formatComposePullMarkdown(projectData, host, options) {
274
+ const title = `Compose Pull for ${projectData.name} on ${host}`;
275
+ if (options.imagesPulled === 0 && options.imagesUpToDate === 0) {
276
+ return `${title}\nNo images to pull`;
277
+ }
278
+ const summaryParts = [];
279
+ if (options.imagesPulled > 0) {
280
+ summaryParts.push(`Images pulled: ${options.imagesPulled}`);
281
+ }
282
+ if (options.imagesUpToDate > 0) {
283
+ summaryParts.push(`Up-to-date: ${options.imagesUpToDate}`);
284
+ }
285
+ const summary = summaryParts.join(" | ");
286
+ const statusSymbol = "✓"; // Success symbol per STYLE.md 4.1
287
+ const statusLine = `${statusSymbol} ${projectData.name} (${options.imagesPulled} images updated, ${options.imagesUpToDate} already current)`;
288
+ return `${title}\n${summary}\n\n${statusLine}`;
289
+ }
290
+ /**
291
+ * Format compose build operation result.
292
+ *
293
+ * Follows STYLE.md sections:
294
+ * - 3.1: Title format "Operation for project on host"
295
+ * - 3.2: Summary with counts and optional duration
296
+ * - 4.1: Canonical ✓ symbol for success
297
+ *
298
+ * @example
299
+ * formatComposeBuildMarkdown(project, "host1", { servicesBuilt: 2, duration: 45 })
300
+ * // Returns:
301
+ * // Compose Build for myapp on host1
302
+ * // Services built: 2 | Duration: 45s
303
+ * //
304
+ * // ✓ myapp (2 services built in 45s)
305
+ */
306
+ export function formatComposeBuildMarkdown(projectData, host, options) {
307
+ const title = `Compose Build for ${projectData.name} on ${host}`;
308
+ if (options.servicesBuilt === 0) {
309
+ return `${title}\nNo services built`;
310
+ }
311
+ const summaryParts = [`Services built: ${options.servicesBuilt}`];
312
+ if (options.duration !== undefined) {
313
+ summaryParts.push(`Duration: ${options.duration}s`);
314
+ }
315
+ const summary = summaryParts.join(" | ");
316
+ const statusSymbol = "✓"; // Success symbol per STYLE.md 4.1
317
+ const statusParts = [`${options.servicesBuilt} services built`];
318
+ if (options.duration !== undefined) {
319
+ statusParts.push(`in ${options.duration}s`);
320
+ }
321
+ const statusLine = `${statusSymbol} ${projectData.name} (${statusParts.join(" ")})`;
322
+ return `${title}\n${summary}\n\n${statusLine}`;
323
+ }
324
+ /** Preview threshold for log output - show preview format when exceeding this */
325
+ const PREVIEW_THRESHOLD = 10;
326
+ /**
327
+ * Format compose logs operation result.
328
+ *
329
+ * Follows STYLE.md sections:
330
+ * - 3.1: Title format "Container Logs for project on host"
331
+ * - 3.2: Summary with counts and flags
332
+ * - 7.5: Preview format (first 5 + last 5) for outputs >10 lines
333
+ * - 4.1: Stream labels [stdout]/[stderr]
334
+ *
335
+ * @example
336
+ * formatComposeLogsMarkdown(project, "host1", {
337
+ * logs: [{ stream: 'stdout', message: 'line 1' }],
338
+ * requested: 10,
339
+ * truncated: false,
340
+ * follow: false
341
+ * })
342
+ * // Returns:
343
+ * // Container Logs for myapp on host1
344
+ * // Lines returned: 1 (requested: 10) | truncated: no | follow: no
345
+ * //
346
+ * // [stdout] line 1
347
+ */
348
+ export function formatComposeLogsMarkdown(projectData, host, options) {
349
+ const title = `Container Logs for ${projectData.name} on ${host}`;
350
+ const summary = [
351
+ `Lines returned: ${options.logs.length} (requested: ${options.requested})`,
352
+ `truncated: ${options.truncated ? "yes" : "no"}`,
353
+ `follow: ${options.follow ? "yes" : "no"}`,
354
+ ].join(" | ");
355
+ // STYLE.md Section 3.6: Freshness timestamp for volatile data (logs)
356
+ const timestamp = getTimestamp();
357
+ const formatLogLine = (log) => ` [${log.stream}] ${log.message}`;
358
+ let logOutput;
359
+ if (options.logs.length <= PREVIEW_THRESHOLD) {
360
+ // Show all lines
361
+ logOutput = options.logs.map(formatLogLine).join("\n");
362
+ }
363
+ else {
364
+ // Preview format per STYLE.md 7.5
365
+ const first5 = options.logs.slice(0, 5).map(formatLogLine).join("\n");
366
+ const last5 = options.logs.slice(-5).map(formatLogLine).join("\n");
367
+ logOutput = `Preview (first 5):\n${first5}\n ...\n\nPreview (last 5):\n${last5}\n ...`;
368
+ }
369
+ return `${title}\n${summary}\n${timestamp}\n\n${logOutput}`;
370
+ }
371
+ /**
372
+ * Format compose refresh/discovery operation result.
373
+ *
374
+ * Follows STYLE.md sections:
375
+ * - 3.1: Title format "Operation on host"
376
+ * - 3.2: Summary with counts
377
+ * - 4.1: Canonical ✓ symbol for success
378
+ *
379
+ * @example
380
+ * formatComposeRefreshMarkdown("host1", { discovered: 2, updated: 1 })
381
+ * // Returns:
382
+ * // Compose Refresh on host1
383
+ * // Discovered: 2 | Updated: 1
384
+ * //
385
+ * // ✓ Compose projects refreshed (2 discovered, 1 updated)
386
+ */
387
+ export function formatComposeRefreshMarkdown(host, options) {
388
+ const title = `Compose Refresh on ${host}`;
389
+ if (options.discovered === 0 && options.updated === 0) {
390
+ return `${title}\nNo changes detected`;
391
+ }
392
+ const summary = `Discovered: ${options.discovered} | Updated: ${options.updated}`;
393
+ const statusSymbol = "✓"; // Success symbol per STYLE.md 4.1
394
+ const statusLine = `${statusSymbol} Compose projects refreshed (${options.discovered} discovered, ${options.updated} updated)`;
395
+ return `${title}\n${summary}\n\n${statusLine}`;
396
+ }
397
+ //# sourceMappingURL=compose.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compose.js","sourceRoot":"","sources":["../../src/formatters/compose.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,84 @@
1
+ /**
2
+ * Container formatting utilities
3
+ *
4
+ * Provides consistent markdown formatting for container operations:
5
+ * listing, logs, stats, inspection, and search.
6
+ */
7
+ import type { ContainerInfo, ContainerStats, DockerRawContainerInspectInfo } from "../types.js";
8
+ /**
9
+ * Format container list as markdown following STYLE.md section 7.3
10
+ */
11
+ export declare function formatContainersMarkdown(containers: ContainerInfo[], total: number, offset: number, hasMore: boolean, filters?: Record<string, string | number | boolean>): string;
12
+ /**
13
+ * Format container logs as markdown following STYLE.md section 7.5
14
+ *
15
+ * Uses preview format (first 5 + last 5) for outputs >10 lines
16
+ */
17
+ export declare function formatLogsMarkdown(logs: Array<{
18
+ stream: "stdout" | "stderr";
19
+ message: string;
20
+ }>, container: string, host: string, requested: number, truncated: boolean, follow: boolean): string;
21
+ /**
22
+ * Format single container stats as markdown following STYLE.md
23
+ */
24
+ export declare function formatStatsMarkdown(stats: ContainerStats[], host: string): string;
25
+ /**
26
+ * Format multiple container stats as markdown table
27
+ * STYLE.md Section 3.1: Plain text title
28
+ * STYLE.md Section 3.2: Summary with rollup counts
29
+ * STYLE.md Section 3.6: Freshness timestamp for volatile data
30
+ * STYLE.md Section 10.2: Warning thresholds (CPU>90%, MEM>90%)
31
+ * STYLE.md Section 12: Severity-first sorting
32
+ */
33
+ export declare function formatMultiStatsMarkdown(allStats: Array<{
34
+ stats: ContainerStats;
35
+ host: string;
36
+ }>): string;
37
+ /**
38
+ * Format container inspection as markdown
39
+ * STYLE.md Section 3.1: Plain text title (no markdown ##/###)
40
+ * STYLE.md Section 4.1: Canonical → for port mapping
41
+ */
42
+ export declare function formatInspectMarkdown(info: DockerRawContainerInspectInfo, host: string): string;
43
+ /**
44
+ * Format search results as markdown
45
+ */
46
+ export declare function formatSearchResultsMarkdown(containers: ContainerInfo[], query: string, total: number): string;
47
+ /**
48
+ * Container inspect summary type
49
+ */
50
+ export interface ContainerInspectSummary {
51
+ id: string;
52
+ name: string;
53
+ image: string;
54
+ state: string;
55
+ created: string;
56
+ started: string;
57
+ restartCount: number;
58
+ ports: string[];
59
+ mounts: Array<{
60
+ src?: string;
61
+ dst?: string;
62
+ type?: string;
63
+ }>;
64
+ networks: string[];
65
+ env_count: number;
66
+ labels_count: number;
67
+ host: string;
68
+ }
69
+ /**
70
+ * Format container inspect summary as markdown (condensed version)
71
+ */
72
+ export declare function formatInspectSummaryMarkdown(summary: ContainerInspectSummary): string;
73
+ /**
74
+ * Format container lifecycle operations as one-liners
75
+ * Simple success messages per STYLE.md - no elaborate formatting needed
76
+ */
77
+ export declare function formatContainerStartMarkdown(container: string, host: string): string;
78
+ export declare function formatContainerStopMarkdown(container: string, host: string): string;
79
+ export declare function formatContainerRestartMarkdown(container: string, host: string): string;
80
+ export declare function formatContainerPauseMarkdown(container: string, host: string): string;
81
+ export declare function formatContainerResumeMarkdown(container: string, host: string): string;
82
+ export declare function formatContainerExecMarkdown(container: string, host: string, command: string, output: string, exitCode: number): string;
83
+ export declare function formatContainerTopMarkdown(container: string, host: string, processes: string): string;
84
+ //# sourceMappingURL=container.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../src/formatters/container.ts"],"names":[],"mappings":"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"}