synapse-mcp 1.0.0 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (413) hide show
  1. package/README.md +1820 -147
  2. package/dist/constants.d.ts +10 -4
  3. package/dist/constants.d.ts.map +1 -1
  4. package/dist/constants.js +18 -8
  5. package/dist/constants.js.map +1 -1
  6. package/dist/events/emitter.d.ts +63 -0
  7. package/dist/events/emitter.d.ts.map +1 -0
  8. package/dist/events/emitter.js +112 -0
  9. package/dist/events/emitter.js.map +1 -0
  10. package/dist/events/index.d.ts +3 -0
  11. package/dist/events/index.d.ts.map +1 -0
  12. package/dist/events/index.js +3 -0
  13. package/dist/events/index.js.map +1 -0
  14. package/dist/events/types.d.ts +51 -0
  15. package/dist/events/types.d.ts.map +1 -0
  16. package/dist/events/types.js +3 -0
  17. package/dist/events/types.js.map +1 -0
  18. package/dist/formatters/compose.d.ts +185 -0
  19. package/dist/formatters/compose.d.ts.map +1 -0
  20. package/dist/formatters/compose.js +397 -0
  21. package/dist/formatters/compose.js.map +1 -0
  22. package/dist/formatters/container.d.ts +84 -0
  23. package/dist/formatters/container.d.ts.map +1 -0
  24. package/dist/formatters/container.js +323 -0
  25. package/dist/formatters/container.js.map +1 -0
  26. package/dist/formatters/diagnostics.d.ts +20 -0
  27. package/dist/formatters/diagnostics.d.ts.map +1 -0
  28. package/dist/formatters/diagnostics.js +73 -0
  29. package/dist/formatters/diagnostics.js.map +1 -0
  30. package/dist/formatters/docker.d.ts +139 -0
  31. package/dist/formatters/docker.d.ts.map +1 -0
  32. package/dist/formatters/docker.js +216 -0
  33. package/dist/formatters/docker.js.map +1 -0
  34. package/dist/formatters/host.d.ts +137 -0
  35. package/dist/formatters/host.d.ts.map +1 -0
  36. package/dist/formatters/host.js +198 -0
  37. package/dist/formatters/host.js.map +1 -0
  38. package/dist/formatters/index.d.ts +17 -270
  39. package/dist/formatters/index.d.ts.map +1 -1
  40. package/dist/formatters/index.js +21 -456
  41. package/dist/formatters/index.js.map +1 -1
  42. package/dist/formatters/scout.d.ts +424 -0
  43. package/dist/formatters/scout.d.ts.map +1 -0
  44. package/dist/formatters/scout.js +687 -0
  45. package/dist/formatters/scout.js.map +1 -0
  46. package/dist/formatters/strategy.d.ts +105 -0
  47. package/dist/formatters/strategy.d.ts.map +1 -0
  48. package/dist/formatters/strategy.js +120 -0
  49. package/dist/formatters/strategy.js.map +1 -0
  50. package/dist/formatters/utils.d.ts +84 -0
  51. package/dist/formatters/utils.d.ts.map +1 -0
  52. package/dist/formatters/utils.js +129 -0
  53. package/dist/formatters/utils.js.map +1 -0
  54. package/dist/health-rate-limiter.d.ts +59 -0
  55. package/dist/health-rate-limiter.d.ts.map +1 -0
  56. package/dist/health-rate-limiter.js +159 -0
  57. package/dist/health-rate-limiter.js.map +1 -0
  58. package/dist/index.js +61 -100
  59. package/dist/index.js.map +1 -1
  60. package/dist/middleware/async-handler.d.ts +62 -0
  61. package/dist/middleware/async-handler.d.ts.map +1 -0
  62. package/dist/middleware/async-handler.js +58 -0
  63. package/dist/middleware/async-handler.js.map +1 -0
  64. package/dist/middleware/auth.d.ts +32 -0
  65. package/dist/middleware/auth.d.ts.map +1 -0
  66. package/dist/middleware/auth.js +63 -0
  67. package/dist/middleware/auth.js.map +1 -0
  68. package/dist/middleware/csrf-protection.d.ts +58 -0
  69. package/dist/middleware/csrf-protection.d.ts.map +1 -0
  70. package/dist/middleware/csrf-protection.js +123 -0
  71. package/dist/middleware/csrf-protection.js.map +1 -0
  72. package/dist/middleware/error-handler.d.ts +49 -0
  73. package/dist/middleware/error-handler.d.ts.map +1 -0
  74. package/dist/middleware/error-handler.js +90 -0
  75. package/dist/middleware/error-handler.js.map +1 -0
  76. package/dist/middleware/error-mapper.d.ts +44 -0
  77. package/dist/middleware/error-mapper.d.ts.map +1 -0
  78. package/dist/middleware/error-mapper.js +127 -0
  79. package/dist/middleware/error-mapper.js.map +1 -0
  80. package/dist/middleware/index.d.ts +13 -0
  81. package/dist/middleware/index.d.ts.map +1 -0
  82. package/dist/middleware/index.js +13 -0
  83. package/dist/middleware/index.js.map +1 -0
  84. package/dist/middleware/request-id.d.ts +22 -0
  85. package/dist/middleware/request-id.d.ts.map +1 -0
  86. package/dist/middleware/request-id.js +31 -0
  87. package/dist/middleware/request-id.js.map +1 -0
  88. package/dist/middleware/types.d.ts +33 -0
  89. package/dist/middleware/types.d.ts.map +1 -0
  90. package/dist/middleware/types.js +2 -0
  91. package/dist/middleware/types.js.map +1 -0
  92. package/dist/schemas/common.d.ts +205 -8
  93. package/dist/schemas/common.d.ts.map +1 -1
  94. package/dist/schemas/common.js +290 -17
  95. package/dist/schemas/common.js.map +1 -1
  96. package/dist/schemas/flux/compose.d.ts +307 -44
  97. package/dist/schemas/flux/compose.d.ts.map +1 -1
  98. package/dist/schemas/flux/compose.js +74 -48
  99. package/dist/schemas/flux/compose.js.map +1 -1
  100. package/dist/schemas/flux/container.d.ts +423 -56
  101. package/dist/schemas/flux/container.d.ts.map +1 -1
  102. package/dist/schemas/flux/container.js +83 -61
  103. package/dist/schemas/flux/container.js.map +1 -1
  104. package/dist/schemas/flux/docker.d.ts +254 -37
  105. package/dist/schemas/flux/docker.d.ts.map +1 -1
  106. package/dist/schemas/flux/docker.js +69 -39
  107. package/dist/schemas/flux/docker.js.map +1 -1
  108. package/dist/schemas/flux/host.d.ts +312 -29
  109. package/dist/schemas/flux/host.d.ts.map +1 -1
  110. package/dist/schemas/flux/host.js +74 -31
  111. package/dist/schemas/flux/host.js.map +1 -1
  112. package/dist/schemas/flux/index.d.ts +503 -11
  113. package/dist/schemas/flux/index.d.ts.map +1 -1
  114. package/dist/schemas/flux/index.js +34 -70
  115. package/dist/schemas/flux/index.js.map +1 -1
  116. package/dist/schemas/host-config.d.ts +76 -0
  117. package/dist/schemas/host-config.d.ts.map +1 -0
  118. package/dist/schemas/host-config.js +105 -0
  119. package/dist/schemas/host-config.js.map +1 -0
  120. package/dist/schemas/scout/index.d.ts +80 -23
  121. package/dist/schemas/scout/index.d.ts.map +1 -1
  122. package/dist/schemas/scout/index.js +26 -11
  123. package/dist/schemas/scout/index.js.map +1 -1
  124. package/dist/schemas/scout/logs.d.ts +17 -5
  125. package/dist/schemas/scout/logs.d.ts.map +1 -1
  126. package/dist/schemas/scout/logs.js +41 -31
  127. package/dist/schemas/scout/logs.js.map +1 -1
  128. package/dist/schemas/scout/simple.d.ts +126 -11
  129. package/dist/schemas/scout/simple.d.ts.map +1 -1
  130. package/dist/schemas/scout/simple.js +112 -57
  131. package/dist/schemas/scout/simple.js.map +1 -1
  132. package/dist/schemas/scout/zfs.d.ts +17 -5
  133. package/dist/schemas/scout/zfs.d.ts.map +1 -1
  134. package/dist/schemas/scout/zfs.js +34 -25
  135. package/dist/schemas/scout/zfs.js.map +1 -1
  136. package/dist/services/cache-layer.d.ts +160 -0
  137. package/dist/services/cache-layer.d.ts.map +1 -0
  138. package/dist/services/cache-layer.js +138 -0
  139. package/dist/services/cache-layer.js.map +1 -0
  140. package/dist/services/compose-cache.d.ts +75 -0
  141. package/dist/services/compose-cache.d.ts.map +1 -0
  142. package/dist/services/compose-cache.js +178 -0
  143. package/dist/services/compose-cache.js.map +1 -0
  144. package/dist/services/compose-discovery.d.ts +46 -0
  145. package/dist/services/compose-discovery.d.ts.map +1 -0
  146. package/dist/services/compose-discovery.js +219 -0
  147. package/dist/services/compose-discovery.js.map +1 -0
  148. package/dist/services/compose-project-lister.d.ts +27 -0
  149. package/dist/services/compose-project-lister.d.ts.map +1 -0
  150. package/dist/services/compose-project-lister.js +71 -0
  151. package/dist/services/compose-project-lister.js.map +1 -0
  152. package/dist/services/compose-scanner.d.ts +63 -0
  153. package/dist/services/compose-scanner.d.ts.map +1 -0
  154. package/dist/services/compose-scanner.js +253 -0
  155. package/dist/services/compose-scanner.js.map +1 -0
  156. package/dist/services/compose.d.ts +64 -28
  157. package/dist/services/compose.d.ts.map +1 -1
  158. package/dist/services/compose.js +220 -98
  159. package/dist/services/compose.js.map +1 -1
  160. package/dist/services/config-loader.d.ts +23 -0
  161. package/dist/services/config-loader.d.ts.map +1 -0
  162. package/dist/services/config-loader.js +124 -0
  163. package/dist/services/config-loader.js.map +1 -0
  164. package/dist/services/config-service.d.ts +38 -0
  165. package/dist/services/config-service.d.ts.map +1 -0
  166. package/dist/services/config-service.js +225 -0
  167. package/dist/services/config-service.js.map +1 -0
  168. package/dist/services/container-host-map-cache.d.ts +121 -0
  169. package/dist/services/container-host-map-cache.d.ts.map +1 -0
  170. package/dist/services/container-host-map-cache.js +188 -0
  171. package/dist/services/container-host-map-cache.js.map +1 -0
  172. package/dist/services/container.d.ts +194 -6
  173. package/dist/services/container.d.ts.map +1 -1
  174. package/dist/services/container.js +386 -11
  175. package/dist/services/container.js.map +1 -1
  176. package/dist/services/diagnostics.d.ts +57 -0
  177. package/dist/services/diagnostics.d.ts.map +1 -0
  178. package/dist/services/diagnostics.js +271 -0
  179. package/dist/services/diagnostics.js.map +1 -0
  180. package/dist/services/docker/container-service.d.ts +123 -0
  181. package/dist/services/docker/container-service.d.ts.map +1 -0
  182. package/dist/services/docker/container-service.js +347 -0
  183. package/dist/services/docker/container-service.js.map +1 -0
  184. package/dist/services/docker/image-service.d.ts +82 -0
  185. package/dist/services/docker/image-service.d.ts.map +1 -0
  186. package/dist/services/docker/image-service.js +193 -0
  187. package/dist/services/docker/image-service.js.map +1 -0
  188. package/dist/services/docker/index.d.ts +80 -0
  189. package/dist/services/docker/index.d.ts.map +1 -0
  190. package/dist/services/docker/index.js +103 -0
  191. package/dist/services/docker/index.js.map +1 -0
  192. package/dist/services/docker/network-service.d.ts +22 -0
  193. package/dist/services/docker/network-service.d.ts.map +1 -0
  194. package/dist/services/docker/network-service.js +43 -0
  195. package/dist/services/docker/network-service.js.map +1 -0
  196. package/dist/services/docker/system-service.d.ts +49 -0
  197. package/dist/services/docker/system-service.d.ts.map +1 -0
  198. package/dist/services/docker/system-service.js +215 -0
  199. package/dist/services/docker/system-service.js.map +1 -0
  200. package/dist/services/docker/utils/client-factory.d.ts +56 -0
  201. package/dist/services/docker/utils/client-factory.d.ts.map +1 -0
  202. package/dist/services/docker/utils/client-factory.js +139 -0
  203. package/dist/services/docker/utils/client-factory.js.map +1 -0
  204. package/dist/services/docker/utils/client-manager.d.ts +88 -0
  205. package/dist/services/docker/utils/client-manager.d.ts.map +1 -0
  206. package/dist/services/docker/utils/client-manager.js +124 -0
  207. package/dist/services/docker/utils/client-manager.js.map +1 -0
  208. package/dist/services/docker/utils/exec-handler.d.ts +94 -0
  209. package/dist/services/docker/utils/exec-handler.d.ts.map +1 -0
  210. package/dist/services/docker/utils/exec-handler.js +197 -0
  211. package/dist/services/docker/utils/exec-handler.js.map +1 -0
  212. package/dist/services/docker/utils/formatters.d.ts +13 -0
  213. package/dist/services/docker/utils/formatters.d.ts.map +1 -0
  214. package/dist/services/docker/utils/formatters.js +33 -0
  215. package/dist/services/docker/utils/formatters.js.map +1 -0
  216. package/dist/services/docker/utils/log-parser.d.ts +10 -0
  217. package/dist/services/docker/utils/log-parser.d.ts.map +1 -0
  218. package/dist/services/docker/utils/log-parser.js +48 -0
  219. package/dist/services/docker/utils/log-parser.js.map +1 -0
  220. package/dist/services/docker/utils/stats-calculator.d.ts +68 -0
  221. package/dist/services/docker/utils/stats-calculator.d.ts.map +1 -0
  222. package/dist/services/docker/utils/stats-calculator.js +61 -0
  223. package/dist/services/docker/utils/stats-calculator.js.map +1 -0
  224. package/dist/services/docker/volume-service.d.ts +22 -0
  225. package/dist/services/docker/volume-service.d.ts.map +1 -0
  226. package/dist/services/docker/volume-service.js +48 -0
  227. package/dist/services/docker/volume-service.js.map +1 -0
  228. package/dist/services/docker-interfaces.d.ts +283 -0
  229. package/dist/services/docker-interfaces.d.ts.map +1 -0
  230. package/dist/services/docker-interfaces.js +13 -0
  231. package/dist/services/docker-interfaces.js.map +1 -0
  232. package/dist/services/docker.d.ts +42 -5
  233. package/dist/services/docker.d.ts.map +1 -1
  234. package/dist/services/docker.js +335 -127
  235. package/dist/services/docker.js.map +1 -1
  236. package/dist/services/file-service.d.ts +6 -2
  237. package/dist/services/file-service.d.ts.map +1 -1
  238. package/dist/services/file-service.js +156 -52
  239. package/dist/services/file-service.js.map +1 -1
  240. package/dist/services/host-config-repository.d.ts +133 -0
  241. package/dist/services/host-config-repository.d.ts.map +1 -0
  242. package/dist/services/host-config-repository.js +323 -0
  243. package/dist/services/host-config-repository.js.map +1 -0
  244. package/dist/services/host-resolver.d.ts +49 -0
  245. package/dist/services/host-resolver.d.ts.map +1 -0
  246. package/dist/services/host-resolver.js +176 -0
  247. package/dist/services/host-resolver.js.map +1 -0
  248. package/dist/services/interfaces.d.ts +61 -194
  249. package/dist/services/interfaces.d.ts.map +1 -1
  250. package/dist/services/local-executor.d.ts +31 -0
  251. package/dist/services/local-executor.d.ts.map +1 -0
  252. package/dist/services/local-executor.js +71 -0
  253. package/dist/services/local-executor.js.map +1 -0
  254. package/dist/services/ssh-config-loader.d.ts +35 -0
  255. package/dist/services/ssh-config-loader.d.ts.map +1 -0
  256. package/dist/services/ssh-config-loader.js +218 -0
  257. package/dist/services/ssh-config-loader.js.map +1 -0
  258. package/dist/services/ssh-pool.d.ts +26 -1
  259. package/dist/services/ssh-pool.d.ts.map +1 -1
  260. package/dist/services/ssh-pool.js +166 -25
  261. package/dist/services/ssh-pool.js.map +1 -1
  262. package/dist/services/ssh-service.d.ts +3 -0
  263. package/dist/services/ssh-service.d.ts.map +1 -1
  264. package/dist/services/ssh-service.js +53 -31
  265. package/dist/services/ssh-service.js.map +1 -1
  266. package/dist/services/ssh.d.ts +2 -6
  267. package/dist/services/ssh.d.ts.map +1 -1
  268. package/dist/services/ssh.js +9 -40
  269. package/dist/services/ssh.js.map +1 -1
  270. package/dist/tools/definitions/flux.d.ts +13 -0
  271. package/dist/tools/definitions/flux.d.ts.map +1 -0
  272. package/dist/tools/definitions/flux.js +101 -0
  273. package/dist/tools/definitions/flux.js.map +1 -0
  274. package/dist/tools/definitions/index.d.ts +8 -0
  275. package/dist/tools/definitions/index.d.ts.map +1 -0
  276. package/dist/tools/definitions/index.js +8 -0
  277. package/dist/tools/definitions/index.js.map +1 -0
  278. package/dist/tools/definitions/scout.d.ts +13 -0
  279. package/dist/tools/definitions/scout.d.ts.map +1 -0
  280. package/dist/tools/definitions/scout.js +78 -0
  281. package/dist/tools/definitions/scout.js.map +1 -0
  282. package/dist/tools/flux.d.ts +16 -8
  283. package/dist/tools/flux.d.ts.map +1 -1
  284. package/dist/tools/flux.js +27 -66
  285. package/dist/tools/flux.js.map +1 -1
  286. package/dist/tools/handlers/base-handler.d.ts +172 -0
  287. package/dist/tools/handlers/base-handler.d.ts.map +1 -0
  288. package/dist/tools/handlers/base-handler.js +234 -0
  289. package/dist/tools/handlers/base-handler.js.map +1 -0
  290. package/dist/tools/handlers/compose-handlers.d.ts +108 -0
  291. package/dist/tools/handlers/compose-handlers.d.ts.map +1 -0
  292. package/dist/tools/handlers/compose-handlers.js +293 -0
  293. package/dist/tools/handlers/compose-handlers.js.map +1 -0
  294. package/dist/tools/handlers/compose-utils.d.ts +35 -0
  295. package/dist/tools/handlers/compose-utils.d.ts.map +1 -0
  296. package/dist/tools/handlers/compose-utils.js +76 -0
  297. package/dist/tools/handlers/compose-utils.js.map +1 -0
  298. package/dist/tools/handlers/compose.d.ts +23 -0
  299. package/dist/tools/handlers/compose.d.ts.map +1 -0
  300. package/dist/tools/handlers/compose.js +125 -0
  301. package/dist/tools/handlers/compose.js.map +1 -0
  302. package/dist/tools/handlers/container.d.ts +23 -0
  303. package/dist/tools/handlers/container.d.ts.map +1 -0
  304. package/dist/tools/handlers/container.js +333 -0
  305. package/dist/tools/handlers/container.js.map +1 -0
  306. package/dist/tools/handlers/docker.d.ts +24 -0
  307. package/dist/tools/handlers/docker.d.ts.map +1 -0
  308. package/dist/tools/handlers/docker.js +155 -0
  309. package/dist/tools/handlers/docker.js.map +1 -0
  310. package/dist/tools/handlers/host.d.ts +23 -0
  311. package/dist/tools/handlers/host.d.ts.map +1 -0
  312. package/dist/tools/handlers/host.js +196 -0
  313. package/dist/tools/handlers/host.js.map +1 -0
  314. package/dist/tools/handlers/scout-logs.d.ts +24 -0
  315. package/dist/tools/handlers/scout-logs.d.ts.map +1 -0
  316. package/dist/tools/handlers/scout-logs.js +119 -0
  317. package/dist/tools/handlers/scout-logs.js.map +1 -0
  318. package/dist/tools/handlers/scout-simple.d.ts +23 -0
  319. package/dist/tools/handlers/scout-simple.d.ts.map +1 -0
  320. package/dist/tools/handlers/scout-simple.js +286 -0
  321. package/dist/tools/handlers/scout-simple.js.map +1 -0
  322. package/dist/tools/handlers/scout-zfs.d.ts +23 -0
  323. package/dist/tools/handlers/scout-zfs.d.ts.map +1 -0
  324. package/dist/tools/handlers/scout-zfs.js +82 -0
  325. package/dist/tools/handlers/scout-zfs.js.map +1 -0
  326. package/dist/tools/index.d.ts +32 -2
  327. package/dist/tools/index.d.ts.map +1 -1
  328. package/dist/tools/index.js +41 -35
  329. package/dist/tools/index.js.map +1 -1
  330. package/dist/tools/registry.d.ts +135 -0
  331. package/dist/tools/registry.d.ts.map +1 -0
  332. package/dist/tools/registry.js +151 -0
  333. package/dist/tools/registry.js.map +1 -0
  334. package/dist/tools/scout.d.ts +16 -8
  335. package/dist/tools/scout.d.ts.map +1 -1
  336. package/dist/tools/scout.js +36 -78
  337. package/dist/tools/scout.js.map +1 -1
  338. package/dist/types.d.ts +629 -1
  339. package/dist/types.d.ts.map +1 -1
  340. package/dist/types.js.map +1 -1
  341. package/dist/utils/command-security.d.ts +82 -0
  342. package/dist/utils/command-security.d.ts.map +1 -0
  343. package/dist/utils/command-security.js +122 -0
  344. package/dist/utils/command-security.js.map +1 -0
  345. package/dist/utils/error-sanitization.d.ts +77 -0
  346. package/dist/utils/error-sanitization.d.ts.map +1 -0
  347. package/dist/utils/error-sanitization.js +107 -0
  348. package/dist/utils/error-sanitization.js.map +1 -0
  349. package/dist/utils/errors.d.ts +30 -6
  350. package/dist/utils/errors.d.ts.map +1 -1
  351. package/dist/utils/errors.js +91 -12
  352. package/dist/utils/errors.js.map +1 -1
  353. package/dist/utils/help-handler.d.ts +23 -0
  354. package/dist/utils/help-handler.d.ts.map +1 -0
  355. package/dist/utils/help-handler.js +21 -0
  356. package/dist/utils/help-handler.js.map +1 -0
  357. package/dist/utils/help.d.ts +1 -1
  358. package/dist/utils/help.d.ts.map +1 -1
  359. package/dist/utils/help.js +57 -16
  360. package/dist/utils/help.js.map +1 -1
  361. package/dist/utils/host-utils.d.ts +31 -0
  362. package/dist/utils/host-utils.d.ts.map +1 -0
  363. package/dist/utils/host-utils.js +80 -0
  364. package/dist/utils/host-utils.js.map +1 -0
  365. package/dist/utils/index.d.ts +8 -2
  366. package/dist/utils/index.d.ts.map +1 -1
  367. package/dist/utils/index.js +8 -2
  368. package/dist/utils/index.js.map +1 -1
  369. package/dist/utils/init-detection.d.ts +36 -0
  370. package/dist/utils/init-detection.d.ts.map +1 -0
  371. package/dist/utils/init-detection.js +79 -0
  372. package/dist/utils/init-detection.js.map +1 -0
  373. package/dist/utils/logger.d.ts +11 -0
  374. package/dist/utils/logger.d.ts.map +1 -0
  375. package/dist/utils/logger.js +32 -0
  376. package/dist/utils/logger.js.map +1 -0
  377. package/dist/utils/pagination.d.ts +20 -0
  378. package/dist/utils/pagination.d.ts.map +1 -0
  379. package/dist/utils/pagination.js +29 -0
  380. package/dist/utils/pagination.js.map +1 -0
  381. package/dist/utils/path-security.d.ts +132 -18
  382. package/dist/utils/path-security.d.ts.map +1 -1
  383. package/dist/utils/path-security.js +164 -35
  384. package/dist/utils/path-security.js.map +1 -1
  385. package/dist/utils/sorting.d.ts +33 -0
  386. package/dist/utils/sorting.d.ts.map +1 -0
  387. package/dist/utils/sorting.js +57 -0
  388. package/dist/utils/sorting.js.map +1 -0
  389. package/dist/utils/text-filters.d.ts +13 -0
  390. package/dist/utils/text-filters.d.ts.map +1 -0
  391. package/dist/utils/text-filters.js +18 -0
  392. package/dist/utils/text-filters.js.map +1 -0
  393. package/dist/utils/time.d.ts +11 -0
  394. package/dist/utils/time.d.ts.map +1 -0
  395. package/dist/utils/time.js +13 -0
  396. package/dist/utils/time.js.map +1 -0
  397. package/dist/utils/validation.d.ts +25 -0
  398. package/dist/utils/validation.d.ts.map +1 -0
  399. package/dist/utils/validation.js +56 -0
  400. package/dist/utils/validation.js.map +1 -0
  401. package/package.json +45 -19
  402. package/dist/schemas/discriminator.d.ts +0 -20
  403. package/dist/schemas/discriminator.d.ts.map +0 -1
  404. package/dist/schemas/discriminator.js +0 -25
  405. package/dist/schemas/discriminator.js.map +0 -1
  406. package/dist/schemas/unified.d.ts +0 -674
  407. package/dist/schemas/unified.d.ts.map +0 -1
  408. package/dist/schemas/unified.js +0 -453
  409. package/dist/schemas/unified.js.map +0 -1
  410. package/dist/tools/unified.d.ts +0 -7
  411. package/dist/tools/unified.d.ts.map +0 -1
  412. package/dist/tools/unified.js +0 -827
  413. package/dist/tools/unified.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scout.js","sourceRoot":"","sources":["../../src/formatters/scout.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,105 @@
1
+ /**
2
+ * Formatting strategy pattern
3
+ *
4
+ * Provides abstraction for output formatting, enabling support for multiple
5
+ * formats (markdown, JSON) without modifying handler code.
6
+ *
7
+ * To add a new format:
8
+ * 1. Implement IFormatter interface
9
+ * 2. Add format type to createFormatter function signature
10
+ * 3. Add case in createFormatter() switch statement
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * const formatter = createFormatter('json');
15
+ * const output = formatter.format(data);
16
+ * ```
17
+ */
18
+ /**
19
+ * Options for controlling formatting behavior
20
+ */
21
+ export interface FormatterOptions {
22
+ /** Use compact output (no indentation). Defaults to true for JSON, false for Markdown. */
23
+ compact?: boolean;
24
+ }
25
+ /**
26
+ * Formatter interface - implement this to add new output formats
27
+ */
28
+ export interface IFormatter {
29
+ /**
30
+ * Format data for output
31
+ * @param data - Data to format (any serializable type)
32
+ * @returns Formatted string ready for output
33
+ */
34
+ format(data: unknown): string;
35
+ }
36
+ /**
37
+ * Markdown formatter - wraps existing markdown formatting functions
38
+ *
39
+ * This is the default formatter and maintains backward compatibility
40
+ * with existing markdown formatting behavior.
41
+ */
42
+ export declare class MarkdownFormatter implements IFormatter {
43
+ private readonly indent;
44
+ constructor(options?: FormatterOptions);
45
+ /**
46
+ * Format data as markdown
47
+ *
48
+ * If data is already a string (from existing formatters), return as-is.
49
+ * Otherwise, serialize as JSON within a code block.
50
+ *
51
+ * @param data - Data to format
52
+ * @returns Markdown formatted string
53
+ */
54
+ format(data: unknown): string;
55
+ }
56
+ /**
57
+ * JSON formatter - outputs data as JSON
58
+ *
59
+ * Useful for programmatic consumption, API responses, or integration
60
+ * with other tools. Defaults to compact output (no indentation) for
61
+ * lower CPU and payload overhead.
62
+ */
63
+ export declare class JSONFormatter implements IFormatter {
64
+ private readonly indent;
65
+ constructor(options?: FormatterOptions);
66
+ /**
67
+ * Format data as JSON
68
+ *
69
+ * If data is already a string (from markdown formatters), wrap in object.
70
+ * Otherwise, serialize directly as JSON.
71
+ *
72
+ * @param data - Data to format
73
+ * @returns JSON formatted string
74
+ */
75
+ format(data: unknown): string;
76
+ }
77
+ /**
78
+ * Create formatter for specified format
79
+ *
80
+ * Factory function that creates formatters based on format type.
81
+ * Provides extension point for adding new formats.
82
+ *
83
+ * @param format - Format type ('markdown' or 'json')
84
+ * @param options - Formatting options (compact mode, etc.)
85
+ * @returns Formatter instance
86
+ * @throws {Error} If format is not supported
87
+ *
88
+ * @example
89
+ * ```typescript
90
+ * const formatter = createFormatter('json');
91
+ * const output = formatter.format({ key: 'value' });
92
+ * // Pretty-print explicitly:
93
+ * const pretty = createFormatter('json', { compact: false });
94
+ * ```
95
+ */
96
+ export declare function createFormatter(format: "markdown" | "json", options?: FormatterOptions): IFormatter;
97
+ /**
98
+ * @deprecated Use createFormatter() instead. This class will be removed in a future version.
99
+ * Factory for creating formatters based on format type (backward compatibility wrapper)
100
+ */
101
+ export declare const FormatterFactory: {
102
+ /** @deprecated Use createFormatter() instead */
103
+ readonly create: typeof createFormatter;
104
+ };
105
+ //# sourceMappingURL=strategy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strategy.d.ts","sourceRoot":"","sources":["../../src/formatters/strategy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,0FAA0F;IAC1F,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;;;OAIG;IACH,MAAM,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC;CAC/B;AAED;;;;;GAKG;AACH,qBAAa,iBAAkB,YAAW,UAAU;IAClD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;gBAEhC,OAAO,CAAC,EAAE,gBAAgB;IAKtC;;;;;;;;OAQG;IACH,MAAM,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM;CAS9B;AAED;;;;;;GAMG;AACH,qBAAa,aAAc,YAAW,UAAU;IAC9C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;gBAEhC,OAAO,CAAC,EAAE,gBAAgB;IAKtC;;;;;;;;OAQG;IACH,MAAM,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM;CAU9B;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,UAAU,GAAG,MAAM,EAC3B,OAAO,CAAC,EAAE,gBAAgB,GACzB,UAAU,CAYZ;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB;IAC3B,gDAAgD;;CAExC,CAAC"}
@@ -0,0 +1,120 @@
1
+ /**
2
+ * Formatting strategy pattern
3
+ *
4
+ * Provides abstraction for output formatting, enabling support for multiple
5
+ * formats (markdown, JSON) without modifying handler code.
6
+ *
7
+ * To add a new format:
8
+ * 1. Implement IFormatter interface
9
+ * 2. Add format type to createFormatter function signature
10
+ * 3. Add case in createFormatter() switch statement
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * const formatter = createFormatter('json');
15
+ * const output = formatter.format(data);
16
+ * ```
17
+ */
18
+ /**
19
+ * Markdown formatter - wraps existing markdown formatting functions
20
+ *
21
+ * This is the default formatter and maintains backward compatibility
22
+ * with existing markdown formatting behavior.
23
+ */
24
+ export class MarkdownFormatter {
25
+ indent;
26
+ constructor(options) {
27
+ // Markdown code blocks default to pretty-print for readability
28
+ this.indent = options?.compact ? undefined : 2;
29
+ }
30
+ /**
31
+ * Format data as markdown
32
+ *
33
+ * If data is already a string (from existing formatters), return as-is.
34
+ * Otherwise, serialize as JSON within a code block.
35
+ *
36
+ * @param data - Data to format
37
+ * @returns Markdown formatted string
38
+ */
39
+ format(data) {
40
+ // If data is already a formatted markdown string from existing formatters, return as-is
41
+ if (typeof data === "string") {
42
+ return data;
43
+ }
44
+ // For non-string data, serialize as JSON within markdown code block
45
+ return `\`\`\`json\n${JSON.stringify(data, null, this.indent)}\n\`\`\``;
46
+ }
47
+ }
48
+ /**
49
+ * JSON formatter - outputs data as JSON
50
+ *
51
+ * Useful for programmatic consumption, API responses, or integration
52
+ * with other tools. Defaults to compact output (no indentation) for
53
+ * lower CPU and payload overhead.
54
+ */
55
+ export class JSONFormatter {
56
+ indent;
57
+ constructor(options) {
58
+ // Default to compact (no indentation) for performance
59
+ this.indent = options?.compact === false ? 2 : undefined;
60
+ }
61
+ /**
62
+ * Format data as JSON
63
+ *
64
+ * If data is already a string (from markdown formatters), wrap in object.
65
+ * Otherwise, serialize directly as JSON.
66
+ *
67
+ * @param data - Data to format
68
+ * @returns JSON formatted string
69
+ */
70
+ format(data) {
71
+ // If data is already a formatted string from markdown formatters,
72
+ // wrap it in a structured object for JSON consumers
73
+ if (typeof data === "string") {
74
+ return JSON.stringify({ output: data, format: "text" }, null, this.indent);
75
+ }
76
+ // For structured data, serialize directly
77
+ return JSON.stringify(data, null, this.indent);
78
+ }
79
+ }
80
+ /**
81
+ * Create formatter for specified format
82
+ *
83
+ * Factory function that creates formatters based on format type.
84
+ * Provides extension point for adding new formats.
85
+ *
86
+ * @param format - Format type ('markdown' or 'json')
87
+ * @param options - Formatting options (compact mode, etc.)
88
+ * @returns Formatter instance
89
+ * @throws {Error} If format is not supported
90
+ *
91
+ * @example
92
+ * ```typescript
93
+ * const formatter = createFormatter('json');
94
+ * const output = formatter.format({ key: 'value' });
95
+ * // Pretty-print explicitly:
96
+ * const pretty = createFormatter('json', { compact: false });
97
+ * ```
98
+ */
99
+ export function createFormatter(format, options) {
100
+ switch (format) {
101
+ case "markdown":
102
+ return new MarkdownFormatter(options);
103
+ case "json":
104
+ return new JSONFormatter(options);
105
+ default: {
106
+ // Exhaustive check - TypeScript ensures all formats are handled
107
+ const exhaustiveCheck = format;
108
+ throw new Error(`Unsupported format: ${exhaustiveCheck}`);
109
+ }
110
+ }
111
+ }
112
+ /**
113
+ * @deprecated Use createFormatter() instead. This class will be removed in a future version.
114
+ * Factory for creating formatters based on format type (backward compatibility wrapper)
115
+ */
116
+ export const FormatterFactory = {
117
+ /** @deprecated Use createFormatter() instead */
118
+ create: createFormatter,
119
+ };
120
+ //# sourceMappingURL=strategy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strategy.js","sourceRoot":"","sources":["../../src/formatters/strategy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAsBH;;;;;GAKG;AACH,MAAM,OAAO,iBAAiB;IACX,MAAM,CAAqB;IAE5C,YAAY,OAA0B;QACpC,+DAA+D;QAC/D,IAAI,CAAC,MAAM,GAAG,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IACjD,CAAC;IAED;;;;;;;;OAQG;IACH,MAAM,CAAC,IAAa;QAClB,wFAAwF;QACxF,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,oEAAoE;QACpE,OAAO,eAAe,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;IAC1E,CAAC;CACF;AAED;;;;;;GAMG;AACH,MAAM,OAAO,aAAa;IACP,MAAM,CAAqB;IAE5C,YAAY,OAA0B;QACpC,sDAAsD;QACtD,IAAI,CAAC,MAAM,GAAG,OAAO,EAAE,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3D,CAAC;IAED;;;;;;;;OAQG;IACH,MAAM,CAAC,IAAa;QAClB,kEAAkE;QAClE,oDAAoD;QACpD,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7E,CAAC;QAED,0CAA0C;QAC1C,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACjD,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,eAAe,CAC7B,MAA2B,EAC3B,OAA0B;IAE1B,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,UAAU;YACb,OAAO,IAAI,iBAAiB,CAAC,OAAO,CAAC,CAAC;QACxC,KAAK,MAAM;YACT,OAAO,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC;QACpC,OAAO,CAAC,CAAC,CAAC;YACR,gEAAgE;YAChE,MAAM,eAAe,GAAU,MAAM,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,uBAAuB,eAAe,EAAE,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,gDAAgD;IAChD,MAAM,EAAE,eAAe;CACf,CAAC"}
@@ -0,0 +1,84 @@
1
+ /**
2
+ * Shared formatting utilities for safe data transformation and display
3
+ */
4
+ /**
5
+ * Truncate text if it exceeds CHARACTER_LIMIT.
6
+ *
7
+ * Ensures output stays within bounds while preserving readability by adding
8
+ * a clear truncation notice.
9
+ *
10
+ * @param text - Text to potentially truncate
11
+ * @returns Original text if within limit, otherwise truncated text with notice
12
+ *
13
+ * @example
14
+ * ```ts
15
+ * truncateIfNeeded("short text"); // returns "short text"
16
+ * truncateIfNeeded(veryLongText); // returns truncated with "... [Output truncated...]"
17
+ * ```
18
+ */
19
+ export declare function truncateIfNeeded(text: string): string;
20
+ /**
21
+ * Safely format data with fallback for null/undefined and error handling.
22
+ *
23
+ * Wraps formatter functions to gracefully handle null/undefined inputs and
24
+ * catch formatting errors, ensuring output never fails catastrophically.
25
+ *
26
+ * @template T - Type of data being formatted
27
+ * @param data - Data to format (may be null/undefined)
28
+ * @param formatter - Pure function that transforms data to string
29
+ * @param fallback - String to return for null/undefined (default: "—")
30
+ * @returns Formatted string, fallback for null/undefined, or error symbol on exception
31
+ *
32
+ * @example
33
+ * ```ts
34
+ * // Handle null/undefined
35
+ * formatSafely(null, (x) => `Value: ${x}`); // returns "—"
36
+ * formatSafely(undefined, (x) => `Value: ${x}`, "N/A"); // returns "N/A"
37
+ *
38
+ * // Format valid data
39
+ * formatSafely("test", (x) => x.toUpperCase()); // returns "TEST"
40
+ *
41
+ * // Handle formatter errors
42
+ * formatSafely({}, (x) => x.nonExistent.property); // returns "✗ Format error"
43
+ * ```
44
+ */
45
+ export declare function formatSafely<T>(data: T | null | undefined, formatter: (data: T) => string, fallback?: string): string;
46
+ /**
47
+ * Get value or fallback for null/undefined.
48
+ *
49
+ * Provides consistent null-handling across the codebase using nullish
50
+ * coalescing. Preserves falsy values like 0, false, and empty strings.
51
+ *
52
+ * @template T - Type of value being checked
53
+ * @param value - Value to check for null/undefined
54
+ * @param fallback - String to return for null/undefined (default: "—")
55
+ * @returns Original value if not null/undefined, otherwise fallback
56
+ *
57
+ * @example
58
+ * ```ts
59
+ * getValueOrFallback(null); // returns "—"
60
+ * getValueOrFallback(undefined); // returns "—"
61
+ * getValueOrFallback(0); // returns 0 (preserves falsy)
62
+ * getValueOrFallback(false); // returns false (preserves falsy)
63
+ * getValueOrFallback(""); // returns "" (preserves empty string)
64
+ * getValueOrFallback("test"); // returns "test"
65
+ * ```
66
+ */
67
+ export declare function getValueOrFallback<T>(value: T | null | undefined, fallback?: string): T | string;
68
+ /**
69
+ * Generate freshness timestamp for volatile data output.
70
+ *
71
+ * Per STYLE.md Section 3.6, volatile data (logs, stats, resources, uptime,
72
+ * discovery scans) must include a freshness timestamp to indicate when the
73
+ * data was captured.
74
+ *
75
+ * @param timezone - IANA timezone identifier (default: "America/New_York")
76
+ * @returns Formatted timestamp string: "As of (<TZ>): HH:MM:SS | MM/DD/YYYY"
77
+ *
78
+ * @example
79
+ * ```ts
80
+ * getTimestamp(); // returns "As of (EST): 14:42:10 | 02/13/2026" or "As of (EDT): ..."
81
+ * ```
82
+ */
83
+ export declare function getTimestamp(timezone?: string): string;
84
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/formatters/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAYH;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAOrD;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAC5B,IAAI,EAAE,CAAC,GAAG,IAAI,GAAG,SAAS,EAC1B,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,EAC9B,QAAQ,GAAE,MAAyB,GAClC,MAAM,CAWR;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAClC,KAAK,EAAE,CAAC,GAAG,IAAI,GAAG,SAAS,EAC3B,QAAQ,GAAE,MAAyB,GAClC,CAAC,GAAG,MAAM,CAEZ;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,YAAY,CAAC,QAAQ,SAAqB,GAAG,MAAM,CAsBlE"}
@@ -0,0 +1,129 @@
1
+ /**
2
+ * Shared formatting utilities for safe data transformation and display
3
+ */
4
+ import { CHARACTER_LIMIT } from "../constants.js";
5
+ import { logError } from "../utils/errors.js";
6
+ // Formatting constants
7
+ const DEFAULT_FALLBACK = "—";
8
+ const FORMAT_ERROR_SYMBOL = "✗ Format error";
9
+ const TRUNCATION_SUFFIX = "\n\n... [Output truncated. Use pagination or filters to reduce results.]";
10
+ const TRUNCATION_BUFFER = 100;
11
+ /**
12
+ * Truncate text if it exceeds CHARACTER_LIMIT.
13
+ *
14
+ * Ensures output stays within bounds while preserving readability by adding
15
+ * a clear truncation notice.
16
+ *
17
+ * @param text - Text to potentially truncate
18
+ * @returns Original text if within limit, otherwise truncated text with notice
19
+ *
20
+ * @example
21
+ * ```ts
22
+ * truncateIfNeeded("short text"); // returns "short text"
23
+ * truncateIfNeeded(veryLongText); // returns truncated with "... [Output truncated...]"
24
+ * ```
25
+ */
26
+ export function truncateIfNeeded(text) {
27
+ if (text.length <= CHARACTER_LIMIT) {
28
+ return text;
29
+ }
30
+ const truncationPoint = CHARACTER_LIMIT - TRUNCATION_BUFFER;
31
+ return `${text.slice(0, truncationPoint)}${TRUNCATION_SUFFIX}`;
32
+ }
33
+ /**
34
+ * Safely format data with fallback for null/undefined and error handling.
35
+ *
36
+ * Wraps formatter functions to gracefully handle null/undefined inputs and
37
+ * catch formatting errors, ensuring output never fails catastrophically.
38
+ *
39
+ * @template T - Type of data being formatted
40
+ * @param data - Data to format (may be null/undefined)
41
+ * @param formatter - Pure function that transforms data to string
42
+ * @param fallback - String to return for null/undefined (default: "—")
43
+ * @returns Formatted string, fallback for null/undefined, or error symbol on exception
44
+ *
45
+ * @example
46
+ * ```ts
47
+ * // Handle null/undefined
48
+ * formatSafely(null, (x) => `Value: ${x}`); // returns "—"
49
+ * formatSafely(undefined, (x) => `Value: ${x}`, "N/A"); // returns "N/A"
50
+ *
51
+ * // Format valid data
52
+ * formatSafely("test", (x) => x.toUpperCase()); // returns "TEST"
53
+ *
54
+ * // Handle formatter errors
55
+ * formatSafely({}, (x) => x.nonExistent.property); // returns "✗ Format error"
56
+ * ```
57
+ */
58
+ export function formatSafely(data, formatter, fallback = DEFAULT_FALLBACK) {
59
+ if (data == null) {
60
+ return fallback;
61
+ }
62
+ try {
63
+ return formatter(data);
64
+ }
65
+ catch (error) {
66
+ logError(error, { operation: "safeFormat" });
67
+ return FORMAT_ERROR_SYMBOL;
68
+ }
69
+ }
70
+ /**
71
+ * Get value or fallback for null/undefined.
72
+ *
73
+ * Provides consistent null-handling across the codebase using nullish
74
+ * coalescing. Preserves falsy values like 0, false, and empty strings.
75
+ *
76
+ * @template T - Type of value being checked
77
+ * @param value - Value to check for null/undefined
78
+ * @param fallback - String to return for null/undefined (default: "—")
79
+ * @returns Original value if not null/undefined, otherwise fallback
80
+ *
81
+ * @example
82
+ * ```ts
83
+ * getValueOrFallback(null); // returns "—"
84
+ * getValueOrFallback(undefined); // returns "—"
85
+ * getValueOrFallback(0); // returns 0 (preserves falsy)
86
+ * getValueOrFallback(false); // returns false (preserves falsy)
87
+ * getValueOrFallback(""); // returns "" (preserves empty string)
88
+ * getValueOrFallback("test"); // returns "test"
89
+ * ```
90
+ */
91
+ export function getValueOrFallback(value, fallback = DEFAULT_FALLBACK) {
92
+ return value ?? fallback;
93
+ }
94
+ /**
95
+ * Generate freshness timestamp for volatile data output.
96
+ *
97
+ * Per STYLE.md Section 3.6, volatile data (logs, stats, resources, uptime,
98
+ * discovery scans) must include a freshness timestamp to indicate when the
99
+ * data was captured.
100
+ *
101
+ * @param timezone - IANA timezone identifier (default: "America/New_York")
102
+ * @returns Formatted timestamp string: "As of (<TZ>): HH:MM:SS | MM/DD/YYYY"
103
+ *
104
+ * @example
105
+ * ```ts
106
+ * getTimestamp(); // returns "As of (EST): 14:42:10 | 02/13/2026" or "As of (EDT): ..."
107
+ * ```
108
+ */
109
+ export function getTimestamp(timezone = "America/New_York") {
110
+ const now = new Date();
111
+ const formatter = new Intl.DateTimeFormat("en-US", {
112
+ timeZone: timezone,
113
+ hour12: false,
114
+ hour: "2-digit",
115
+ minute: "2-digit",
116
+ second: "2-digit",
117
+ month: "2-digit",
118
+ day: "2-digit",
119
+ year: "numeric",
120
+ timeZoneName: "short",
121
+ });
122
+ const parts = formatter.formatToParts(now);
123
+ const getPart = (type) => parts.find((p) => p.type === type)?.value || "";
124
+ const time = `${getPart("hour")}:${getPart("minute")}:${getPart("second")}`;
125
+ const date = `${getPart("month")}/${getPart("day")}/${getPart("year")}`;
126
+ const label = getPart("timeZoneName") || timezone;
127
+ return `As of (${label}): ${time} | ${date}`;
128
+ }
129
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/formatters/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,uBAAuB;AACvB,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAC7B,MAAM,mBAAmB,GAAG,gBAAgB,CAAC;AAC7C,MAAM,iBAAiB,GACrB,0EAA0E,CAAC;AAC7E,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAE9B;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,IAAI,IAAI,CAAC,MAAM,IAAI,eAAe,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,eAAe,GAAG,eAAe,GAAG,iBAAiB,CAAC;IAC5D,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,CAAC,GAAG,iBAAiB,EAAE,CAAC;AACjE,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,UAAU,YAAY,CAC1B,IAA0B,EAC1B,SAA8B,EAC9B,WAAmB,gBAAgB;IAEnC,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;QACjB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,IAAI,CAAC;QACH,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,QAAQ,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,CAAC;QAC7C,OAAO,mBAAmB,CAAC;IAC7B,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,kBAAkB,CAChC,KAA2B,EAC3B,WAAmB,gBAAgB;IAEnC,OAAO,KAAK,IAAI,QAAQ,CAAC;AAC3B,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,YAAY,CAAC,QAAQ,GAAG,kBAAkB;IACxD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;QACjD,QAAQ,EAAE,QAAQ;QAClB,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,SAAS;QACjB,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE,SAAS;QACd,IAAI,EAAE,SAAS;QACf,YAAY,EAAE,OAAO;KACtB,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;IAElF,MAAM,IAAI,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;IAC5E,MAAM,IAAI,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;IACxE,MAAM,KAAK,GAAG,OAAO,CAAC,cAAc,CAAC,IAAI,QAAQ,CAAC;IAElD,OAAO,UAAU,KAAK,MAAM,IAAI,MAAM,IAAI,EAAE,CAAC;AAC/C,CAAC"}
@@ -0,0 +1,59 @@
1
+ import type { NextFunction, Request, Response } from "express";
2
+ import rateLimit from "express-rate-limit";
3
+ /**
4
+ * Determine whether an MCP request body represents a destructive operation.
5
+ *
6
+ * Inspects the JSON-RPC payload for `tools/call` method and checks whether
7
+ * the tool arguments indicate a destructive subaction.
8
+ *
9
+ * @param body - Parsed JSON-RPC request body
10
+ * @returns true if the operation is destructive
11
+ */
12
+ export declare function isDestructiveOperation(body: unknown): boolean;
13
+ /**
14
+ * Creates a rate limiter middleware for the health endpoint.
15
+ *
16
+ * Health endpoints should be accessible for monitoring but protected from DDoS.
17
+ * Default: 30 requests per 60 seconds per IP.
18
+ *
19
+ * @returns Express rate limiter middleware
20
+ */
21
+ export declare function createHealthRateLimiter(): ReturnType<typeof rateLimit>;
22
+ /**
23
+ * Creates a rate limiter middleware for the MCP endpoint.
24
+ *
25
+ * Protects against DoS attacks on the MCP endpoint which can trigger
26
+ * expensive operations (SSH commands, Docker API calls, filesystem scans).
27
+ *
28
+ * CWE-770: Allocation of Resources Without Limits or Throttling
29
+ * CVSS 7.5 (High) - DoS vulnerability if unprotected
30
+ *
31
+ * Default: 60 requests per 60 seconds per IP (general operations)
32
+ *
33
+ * @returns Express rate limiter middleware
34
+ */
35
+ export declare function createMcpRateLimiter(): ReturnType<typeof rateLimit>;
36
+ /**
37
+ * Creates a stricter rate limiter for destructive MCP operations.
38
+ *
39
+ * Destructive operations (prune, remove, down, exec, etc.) are expensive
40
+ * and potentially dangerous. This limiter is tighter than the general MCP limiter:
41
+ * 10 requests per 60 seconds per IP.
42
+ *
43
+ * Applied conditionally via createDestructiveRateLimitMiddleware.
44
+ *
45
+ * @returns Express rate limiter middleware
46
+ */
47
+ export declare function createDestructiveOperationRateLimiter(): ReturnType<typeof rateLimit>;
48
+ /**
49
+ * Creates middleware that conditionally applies destructive rate limiting.
50
+ *
51
+ * Inspects each MCP request body to determine if it's a destructive operation.
52
+ * If so, applies the stricter destructive rate limiter (10 req/min/IP).
53
+ * Non-destructive requests pass through without additional limiting
54
+ * (they are still subject to the general 60 req/min/IP MCP limiter).
55
+ *
56
+ * @returns Express middleware
57
+ */
58
+ export declare function createDestructiveRateLimitMiddleware(): (req: Request, res: Response, next: NextFunction) => void;
59
+ //# sourceMappingURL=health-rate-limiter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health-rate-limiter.d.ts","sourceRoot":"","sources":["../src/health-rate-limiter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,SAAS,MAAM,oBAAoB,CAAC;AA+B3C;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CA8B7D;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,IAAI,UAAU,CAAC,OAAO,SAAS,CAAC,CAYtE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,IAAI,UAAU,CAAC,OAAO,SAAS,CAAC,CAYnE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qCAAqC,IAAI,UAAU,CAAC,OAAO,SAAS,CAAC,CAYpF;AAED;;;;;;;;;GASG;AACH,wBAAgB,oCAAoC,IAAI,CACtD,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,YAAY,KACf,IAAI,CAUR"}