@daniel.stefan/metalink 1.3.1

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 (333) hide show
  1. package/README.md +160 -0
  2. package/package.json +96 -0
  3. package/packages/cli/dist/bin/cli.d.ts +3 -0
  4. package/packages/cli/dist/bin/cli.d.ts.map +1 -0
  5. package/packages/cli/dist/bin/cli.js +4 -0
  6. package/packages/cli/dist/bin/cli.js.map +1 -0
  7. package/packages/cli/dist/commands/config/init.d.ts +9 -0
  8. package/packages/cli/dist/commands/config/init.d.ts.map +1 -0
  9. package/packages/cli/dist/commands/config/init.js +38 -0
  10. package/packages/cli/dist/commands/config/init.js.map +1 -0
  11. package/packages/cli/dist/commands/config/validate.d.ts +9 -0
  12. package/packages/cli/dist/commands/config/validate.d.ts.map +1 -0
  13. package/packages/cli/dist/commands/config/validate.js +34 -0
  14. package/packages/cli/dist/commands/config/validate.js.map +1 -0
  15. package/packages/cli/dist/commands/daemon/restart.d.ts +15 -0
  16. package/packages/cli/dist/commands/daemon/restart.d.ts.map +1 -0
  17. package/packages/cli/dist/commands/daemon/restart.js +184 -0
  18. package/packages/cli/dist/commands/daemon/restart.js.map +1 -0
  19. package/packages/cli/dist/commands/daemon/start.d.ts +7 -0
  20. package/packages/cli/dist/commands/daemon/start.d.ts.map +1 -0
  21. package/packages/cli/dist/commands/daemon/start.js +85 -0
  22. package/packages/cli/dist/commands/daemon/start.js.map +1 -0
  23. package/packages/cli/dist/commands/daemon/status.d.ts +7 -0
  24. package/packages/cli/dist/commands/daemon/status.d.ts.map +1 -0
  25. package/packages/cli/dist/commands/daemon/status.js +69 -0
  26. package/packages/cli/dist/commands/daemon/status.js.map +1 -0
  27. package/packages/cli/dist/commands/daemon/stop.d.ts +8 -0
  28. package/packages/cli/dist/commands/daemon/stop.d.ts.map +1 -0
  29. package/packages/cli/dist/commands/daemon/stop.js +77 -0
  30. package/packages/cli/dist/commands/daemon/stop.js.map +1 -0
  31. package/packages/cli/dist/commands/import/mcpm.d.ts +10 -0
  32. package/packages/cli/dist/commands/import/mcpm.d.ts.map +1 -0
  33. package/packages/cli/dist/commands/import/mcpm.js +58 -0
  34. package/packages/cli/dist/commands/import/mcpm.js.map +1 -0
  35. package/packages/cli/dist/commands/safety/add-risky-pattern.d.ts +16 -0
  36. package/packages/cli/dist/commands/safety/add-risky-pattern.d.ts.map +1 -0
  37. package/packages/cli/dist/commands/safety/add-risky-pattern.js +72 -0
  38. package/packages/cli/dist/commands/safety/add-risky-pattern.js.map +1 -0
  39. package/packages/cli/dist/commands/safety/add-risky.d.ts +12 -0
  40. package/packages/cli/dist/commands/safety/add-risky.d.ts.map +1 -0
  41. package/packages/cli/dist/commands/safety/add-risky.js +52 -0
  42. package/packages/cli/dist/commands/safety/add-risky.js.map +1 -0
  43. package/packages/cli/dist/commands/safety/add-safe-pattern.d.ts +16 -0
  44. package/packages/cli/dist/commands/safety/add-safe-pattern.d.ts.map +1 -0
  45. package/packages/cli/dist/commands/safety/add-safe-pattern.js +72 -0
  46. package/packages/cli/dist/commands/safety/add-safe-pattern.js.map +1 -0
  47. package/packages/cli/dist/commands/safety/add-safe.d.ts +12 -0
  48. package/packages/cli/dist/commands/safety/add-safe.d.ts.map +1 -0
  49. package/packages/cli/dist/commands/safety/add-safe.js +52 -0
  50. package/packages/cli/dist/commands/safety/add-safe.js.map +1 -0
  51. package/packages/cli/dist/commands/safety/check.d.ts +9 -0
  52. package/packages/cli/dist/commands/safety/check.d.ts.map +1 -0
  53. package/packages/cli/dist/commands/safety/check.js +36 -0
  54. package/packages/cli/dist/commands/safety/check.js.map +1 -0
  55. package/packages/cli/dist/commands/safety/export.d.ts +10 -0
  56. package/packages/cli/dist/commands/safety/export.d.ts.map +1 -0
  57. package/packages/cli/dist/commands/safety/export.js +48 -0
  58. package/packages/cli/dist/commands/safety/export.js.map +1 -0
  59. package/packages/cli/dist/commands/safety/import.d.ts +12 -0
  60. package/packages/cli/dist/commands/safety/import.d.ts.map +1 -0
  61. package/packages/cli/dist/commands/safety/import.js +78 -0
  62. package/packages/cli/dist/commands/safety/import.js.map +1 -0
  63. package/packages/cli/dist/commands/safety/index.d.ts +8 -0
  64. package/packages/cli/dist/commands/safety/index.d.ts.map +1 -0
  65. package/packages/cli/dist/commands/safety/index.js +46 -0
  66. package/packages/cli/dist/commands/safety/index.js.map +1 -0
  67. package/packages/cli/dist/commands/safety/list.d.ts +6 -0
  68. package/packages/cli/dist/commands/safety/list.d.ts.map +1 -0
  69. package/packages/cli/dist/commands/safety/list.js +77 -0
  70. package/packages/cli/dist/commands/safety/list.js.map +1 -0
  71. package/packages/cli/dist/commands/safety/remove.d.ts +9 -0
  72. package/packages/cli/dist/commands/safety/remove.d.ts.map +1 -0
  73. package/packages/cli/dist/commands/safety/remove.js +46 -0
  74. package/packages/cli/dist/commands/safety/remove.js.map +1 -0
  75. package/packages/cli/dist/commands/safety/reset.d.ts +9 -0
  76. package/packages/cli/dist/commands/safety/reset.d.ts.map +1 -0
  77. package/packages/cli/dist/commands/safety/reset.js +46 -0
  78. package/packages/cli/dist/commands/safety/reset.js.map +1 -0
  79. package/packages/cli/dist/commands/safety/validate.d.ts +9 -0
  80. package/packages/cli/dist/commands/safety/validate.d.ts.map +1 -0
  81. package/packages/cli/dist/commands/safety/validate.js +51 -0
  82. package/packages/cli/dist/commands/safety/validate.js.map +1 -0
  83. package/packages/cli/dist/commands/secret/get.d.ts +9 -0
  84. package/packages/cli/dist/commands/secret/get.d.ts.map +1 -0
  85. package/packages/cli/dist/commands/secret/get.js +26 -0
  86. package/packages/cli/dist/commands/secret/get.js.map +1 -0
  87. package/packages/cli/dist/commands/secret/set.d.ts +10 -0
  88. package/packages/cli/dist/commands/secret/set.d.ts.map +1 -0
  89. package/packages/cli/dist/commands/secret/set.js +22 -0
  90. package/packages/cli/dist/commands/secret/set.js.map +1 -0
  91. package/packages/cli/dist/commands/server/__tests__/server-management-e2e.test.d.ts +2 -0
  92. package/packages/cli/dist/commands/server/__tests__/server-management-e2e.test.d.ts.map +1 -0
  93. package/packages/cli/dist/commands/server/__tests__/server-management-e2e.test.js +234 -0
  94. package/packages/cli/dist/commands/server/__tests__/server-management-e2e.test.js.map +1 -0
  95. package/packages/cli/dist/commands/server/add.d.ts +14 -0
  96. package/packages/cli/dist/commands/server/add.d.ts.map +1 -0
  97. package/packages/cli/dist/commands/server/add.js +86 -0
  98. package/packages/cli/dist/commands/server/add.js.map +1 -0
  99. package/packages/cli/dist/commands/server/available.d.ts +10 -0
  100. package/packages/cli/dist/commands/server/available.d.ts.map +1 -0
  101. package/packages/cli/dist/commands/server/available.js +62 -0
  102. package/packages/cli/dist/commands/server/available.js.map +1 -0
  103. package/packages/cli/dist/commands/server/debug.d.ts +18 -0
  104. package/packages/cli/dist/commands/server/debug.d.ts.map +1 -0
  105. package/packages/cli/dist/commands/server/debug.js +165 -0
  106. package/packages/cli/dist/commands/server/debug.js.map +1 -0
  107. package/packages/cli/dist/commands/server/info.d.ts +13 -0
  108. package/packages/cli/dist/commands/server/info.d.ts.map +1 -0
  109. package/packages/cli/dist/commands/server/info.js +62 -0
  110. package/packages/cli/dist/commands/server/info.js.map +1 -0
  111. package/packages/cli/dist/commands/server/list.d.ts +10 -0
  112. package/packages/cli/dist/commands/server/list.d.ts.map +1 -0
  113. package/packages/cli/dist/commands/server/list.js +105 -0
  114. package/packages/cli/dist/commands/server/list.js.map +1 -0
  115. package/packages/cli/dist/commands/server/refresh-tools.d.ts +13 -0
  116. package/packages/cli/dist/commands/server/refresh-tools.d.ts.map +1 -0
  117. package/packages/cli/dist/commands/server/refresh-tools.js +46 -0
  118. package/packages/cli/dist/commands/server/refresh-tools.js.map +1 -0
  119. package/packages/cli/dist/commands/server/remove.d.ts +12 -0
  120. package/packages/cli/dist/commands/server/remove.d.ts.map +1 -0
  121. package/packages/cli/dist/commands/server/remove.js +39 -0
  122. package/packages/cli/dist/commands/server/remove.js.map +1 -0
  123. package/packages/cli/dist/commands/server/restart.d.ts +9 -0
  124. package/packages/cli/dist/commands/server/restart.d.ts.map +1 -0
  125. package/packages/cli/dist/commands/server/restart.js +30 -0
  126. package/packages/cli/dist/commands/server/restart.js.map +1 -0
  127. package/packages/cli/dist/commands/server/start.d.ts +9 -0
  128. package/packages/cli/dist/commands/server/start.d.ts.map +1 -0
  129. package/packages/cli/dist/commands/server/start.js +37 -0
  130. package/packages/cli/dist/commands/server/start.js.map +1 -0
  131. package/packages/cli/dist/commands/server/status.d.ts +9 -0
  132. package/packages/cli/dist/commands/server/status.d.ts.map +1 -0
  133. package/packages/cli/dist/commands/server/status.js +30 -0
  134. package/packages/cli/dist/commands/server/status.js.map +1 -0
  135. package/packages/cli/dist/commands/server/stop.d.ts +9 -0
  136. package/packages/cli/dist/commands/server/stop.d.ts.map +1 -0
  137. package/packages/cli/dist/commands/server/stop.js +31 -0
  138. package/packages/cli/dist/commands/server/stop.js.map +1 -0
  139. package/packages/cli/dist/commands/server/validate.d.ts +15 -0
  140. package/packages/cli/dist/commands/server/validate.d.ts.map +1 -0
  141. package/packages/cli/dist/commands/server/validate.js +87 -0
  142. package/packages/cli/dist/commands/server/validate.js.map +1 -0
  143. package/packages/cli/dist/commands/stdio.d.ts +36 -0
  144. package/packages/cli/dist/commands/stdio.d.ts.map +1 -0
  145. package/packages/cli/dist/commands/stdio.js +85 -0
  146. package/packages/cli/dist/commands/stdio.js.map +1 -0
  147. package/packages/cli/dist/commands/tool/execute-confirm.d.ts +12 -0
  148. package/packages/cli/dist/commands/tool/execute-confirm.d.ts.map +1 -0
  149. package/packages/cli/dist/commands/tool/execute-confirm.js +98 -0
  150. package/packages/cli/dist/commands/tool/execute-confirm.js.map +1 -0
  151. package/packages/cli/dist/commands/tool/execute.d.ts +12 -0
  152. package/packages/cli/dist/commands/tool/execute.d.ts.map +1 -0
  153. package/packages/cli/dist/commands/tool/execute.js +55 -0
  154. package/packages/cli/dist/commands/tool/execute.js.map +1 -0
  155. package/packages/cli/dist/commands/tool/list.d.ts +13 -0
  156. package/packages/cli/dist/commands/tool/list.d.ts.map +1 -0
  157. package/packages/cli/dist/commands/tool/list.js +91 -0
  158. package/packages/cli/dist/commands/tool/list.js.map +1 -0
  159. package/packages/cli/dist/commands/tool/search.d.ts +12 -0
  160. package/packages/cli/dist/commands/tool/search.d.ts.map +1 -0
  161. package/packages/cli/dist/commands/tool/search.js +87 -0
  162. package/packages/cli/dist/commands/tool/search.js.map +1 -0
  163. package/packages/cli/dist/index.d.ts +2 -0
  164. package/packages/cli/dist/index.d.ts.map +1 -0
  165. package/packages/cli/dist/index.js +9 -0
  166. package/packages/cli/dist/index.js.map +1 -0
  167. package/packages/cli/dist/utils/daemon-checker.d.ts +18 -0
  168. package/packages/cli/dist/utils/daemon-checker.d.ts.map +1 -0
  169. package/packages/cli/dist/utils/daemon-checker.js +69 -0
  170. package/packages/cli/dist/utils/daemon-checker.js.map +1 -0
  171. package/packages/cli/dist/utils/daemon-endpoint.d.ts +7 -0
  172. package/packages/cli/dist/utils/daemon-endpoint.d.ts.map +1 -0
  173. package/packages/cli/dist/utils/daemon-endpoint.js +13 -0
  174. package/packages/cli/dist/utils/daemon-endpoint.js.map +1 -0
  175. package/packages/cli/dist/utils/get-configured-port.d.ts +43 -0
  176. package/packages/cli/dist/utils/get-configured-port.d.ts.map +1 -0
  177. package/packages/cli/dist/utils/get-configured-port.js +141 -0
  178. package/packages/cli/dist/utils/get-configured-port.js.map +1 -0
  179. package/packages/cli/dist/utils/stdio-bridge.d.ts +48 -0
  180. package/packages/cli/dist/utils/stdio-bridge.d.ts.map +1 -0
  181. package/packages/cli/dist/utils/stdio-bridge.js +181 -0
  182. package/packages/cli/dist/utils/stdio-bridge.js.map +1 -0
  183. package/packages/cli/package.json +48 -0
  184. package/packages/core/dist/config/defaults.d.ts +36 -0
  185. package/packages/core/dist/config/defaults.d.ts.map +1 -0
  186. package/packages/core/dist/config/defaults.js +324 -0
  187. package/packages/core/dist/config/defaults.js.map +1 -0
  188. package/packages/core/dist/config/index.d.ts +9 -0
  189. package/packages/core/dist/config/index.d.ts.map +1 -0
  190. package/packages/core/dist/config/index.js +14 -0
  191. package/packages/core/dist/config/index.js.map +1 -0
  192. package/packages/core/dist/config/loader.d.ts +269 -0
  193. package/packages/core/dist/config/loader.d.ts.map +1 -0
  194. package/packages/core/dist/config/loader.js +777 -0
  195. package/packages/core/dist/config/loader.js.map +1 -0
  196. package/packages/core/dist/config/registry.d.ts +212 -0
  197. package/packages/core/dist/config/registry.d.ts.map +1 -0
  198. package/packages/core/dist/config/registry.js +754 -0
  199. package/packages/core/dist/config/registry.js.map +1 -0
  200. package/packages/core/dist/config/schema.d.ts +4352 -0
  201. package/packages/core/dist/config/schema.d.ts.map +1 -0
  202. package/packages/core/dist/config/schema.js +267 -0
  203. package/packages/core/dist/config/schema.js.map +1 -0
  204. package/packages/core/dist/daemon.d.ts +7 -0
  205. package/packages/core/dist/daemon.d.ts.map +1 -0
  206. package/packages/core/dist/daemon.js +116 -0
  207. package/packages/core/dist/daemon.js.map +1 -0
  208. package/packages/core/dist/http-client-retry.d.ts +67 -0
  209. package/packages/core/dist/http-client-retry.d.ts.map +1 -0
  210. package/packages/core/dist/http-client-retry.js +133 -0
  211. package/packages/core/dist/http-client-retry.js.map +1 -0
  212. package/packages/core/dist/http-client-updated.d.ts +147 -0
  213. package/packages/core/dist/http-client-updated.d.ts.map +1 -0
  214. package/packages/core/dist/http-client-updated.js +452 -0
  215. package/packages/core/dist/http-client-updated.js.map +1 -0
  216. package/packages/core/dist/http-client.d.ts +207 -0
  217. package/packages/core/dist/http-client.d.ts.map +1 -0
  218. package/packages/core/dist/http-client.js +704 -0
  219. package/packages/core/dist/http-client.js.map +1 -0
  220. package/packages/core/dist/index.d.ts +13 -0
  221. package/packages/core/dist/index.d.ts.map +1 -0
  222. package/packages/core/dist/index.js +23 -0
  223. package/packages/core/dist/index.js.map +1 -0
  224. package/packages/core/dist/logging/index.d.ts +46 -0
  225. package/packages/core/dist/logging/index.d.ts.map +1 -0
  226. package/packages/core/dist/logging/index.js +74 -0
  227. package/packages/core/dist/logging/index.js.map +1 -0
  228. package/packages/core/dist/metrics/index.d.ts +339 -0
  229. package/packages/core/dist/metrics/index.d.ts.map +1 -0
  230. package/packages/core/dist/metrics/index.js +792 -0
  231. package/packages/core/dist/metrics/index.js.map +1 -0
  232. package/packages/core/dist/plugins/index.d.ts +49 -0
  233. package/packages/core/dist/plugins/index.d.ts.map +1 -0
  234. package/packages/core/dist/plugins/index.js +82 -0
  235. package/packages/core/dist/plugins/index.js.map +1 -0
  236. package/packages/core/dist/secrets/index.d.ts +6 -0
  237. package/packages/core/dist/secrets/index.d.ts.map +1 -0
  238. package/packages/core/dist/secrets/index.js +5 -0
  239. package/packages/core/dist/secrets/index.js.map +1 -0
  240. package/packages/core/dist/secrets/keyring.d.ts +54 -0
  241. package/packages/core/dist/secrets/keyring.d.ts.map +1 -0
  242. package/packages/core/dist/secrets/keyring.js +141 -0
  243. package/packages/core/dist/secrets/keyring.js.map +1 -0
  244. package/packages/core/dist/server/batch-executor.d.ts +83 -0
  245. package/packages/core/dist/server/batch-executor.d.ts.map +1 -0
  246. package/packages/core/dist/server/batch-executor.js +291 -0
  247. package/packages/core/dist/server/batch-executor.js.map +1 -0
  248. package/packages/core/dist/server/circuit-breaker.d.ts +215 -0
  249. package/packages/core/dist/server/circuit-breaker.d.ts.map +1 -0
  250. package/packages/core/dist/server/circuit-breaker.js +330 -0
  251. package/packages/core/dist/server/circuit-breaker.js.map +1 -0
  252. package/packages/core/dist/server/client-detection.d.ts +40 -0
  253. package/packages/core/dist/server/client-detection.d.ts.map +1 -0
  254. package/packages/core/dist/server/client-detection.js +242 -0
  255. package/packages/core/dist/server/client-detection.js.map +1 -0
  256. package/packages/core/dist/server/client-profiles.d.ts +102 -0
  257. package/packages/core/dist/server/client-profiles.d.ts.map +1 -0
  258. package/packages/core/dist/server/client-profiles.js +254 -0
  259. package/packages/core/dist/server/client-profiles.js.map +1 -0
  260. package/packages/core/dist/server/http.d.ts +386 -0
  261. package/packages/core/dist/server/http.d.ts.map +1 -0
  262. package/packages/core/dist/server/http.js +4253 -0
  263. package/packages/core/dist/server/http.js.map +1 -0
  264. package/packages/core/dist/server/index.d.ts +7 -0
  265. package/packages/core/dist/server/index.d.ts.map +1 -0
  266. package/packages/core/dist/server/index.js +6 -0
  267. package/packages/core/dist/server/index.js.map +1 -0
  268. package/packages/core/dist/server/manager.d.ts +458 -0
  269. package/packages/core/dist/server/manager.d.ts.map +1 -0
  270. package/packages/core/dist/server/manager.js +3255 -0
  271. package/packages/core/dist/server/manager.js.map +1 -0
  272. package/packages/core/dist/server/managers/HttpConnectionManager.d.ts +69 -0
  273. package/packages/core/dist/server/managers/HttpConnectionManager.d.ts.map +1 -0
  274. package/packages/core/dist/server/managers/HttpConnectionManager.js +214 -0
  275. package/packages/core/dist/server/managers/HttpConnectionManager.js.map +1 -0
  276. package/packages/core/dist/server/managers/ProcessManager.d.ts +128 -0
  277. package/packages/core/dist/server/managers/ProcessManager.d.ts.map +1 -0
  278. package/packages/core/dist/server/managers/ProcessManager.js +443 -0
  279. package/packages/core/dist/server/managers/ProcessManager.js.map +1 -0
  280. package/packages/core/dist/server/managers/SchemaCacheManager.d.ts +152 -0
  281. package/packages/core/dist/server/managers/SchemaCacheManager.d.ts.map +1 -0
  282. package/packages/core/dist/server/managers/SchemaCacheManager.js +426 -0
  283. package/packages/core/dist/server/managers/SchemaCacheManager.js.map +1 -0
  284. package/packages/core/dist/server/managers/index.d.ts +9 -0
  285. package/packages/core/dist/server/managers/index.d.ts.map +1 -0
  286. package/packages/core/dist/server/managers/index.js +9 -0
  287. package/packages/core/dist/server/managers/index.js.map +1 -0
  288. package/packages/core/dist/server/metrics.d.ts +134 -0
  289. package/packages/core/dist/server/metrics.d.ts.map +1 -0
  290. package/packages/core/dist/server/metrics.js +273 -0
  291. package/packages/core/dist/server/metrics.js.map +1 -0
  292. package/packages/core/dist/server/prompts.d.ts +58 -0
  293. package/packages/core/dist/server/prompts.d.ts.map +1 -0
  294. package/packages/core/dist/server/prompts.js +405 -0
  295. package/packages/core/dist/server/prompts.js.map +1 -0
  296. package/packages/core/dist/server/protocol-versions.d.ts +49 -0
  297. package/packages/core/dist/server/protocol-versions.d.ts.map +1 -0
  298. package/packages/core/dist/server/protocol-versions.js +173 -0
  299. package/packages/core/dist/server/protocol-versions.js.map +1 -0
  300. package/packages/core/dist/server/resources.d.ts +64 -0
  301. package/packages/core/dist/server/resources.d.ts.map +1 -0
  302. package/packages/core/dist/server/resources.js +243 -0
  303. package/packages/core/dist/server/resources.js.map +1 -0
  304. package/packages/core/dist/server/schema-store.d.ts +84 -0
  305. package/packages/core/dist/server/schema-store.d.ts.map +1 -0
  306. package/packages/core/dist/server/schema-store.js +234 -0
  307. package/packages/core/dist/server/schema-store.js.map +1 -0
  308. package/packages/core/dist/server/schema-validator.d.ts +51 -0
  309. package/packages/core/dist/server/schema-validator.d.ts.map +1 -0
  310. package/packages/core/dist/server/schema-validator.js +208 -0
  311. package/packages/core/dist/server/schema-validator.js.map +1 -0
  312. package/packages/core/dist/server/token-calculator.d.ts +44 -0
  313. package/packages/core/dist/server/token-calculator.d.ts.map +1 -0
  314. package/packages/core/dist/server/token-calculator.js +53 -0
  315. package/packages/core/dist/server/token-calculator.js.map +1 -0
  316. package/packages/core/dist/server/types.d.ts +45 -0
  317. package/packages/core/dist/server/types.d.ts.map +1 -0
  318. package/packages/core/dist/server/types.js +5 -0
  319. package/packages/core/dist/server/types.js.map +1 -0
  320. package/packages/core/dist/utils/file-lock.d.ts +73 -0
  321. package/packages/core/dist/utils/file-lock.d.ts.map +1 -0
  322. package/packages/core/dist/utils/file-lock.js +235 -0
  323. package/packages/core/dist/utils/file-lock.js.map +1 -0
  324. package/packages/core/package.json +36 -0
  325. package/packages/dashboard/dist/assets/index-B7hvkCMu.css +1 -0
  326. package/packages/dashboard/dist/assets/index-yZhLPpzr.js +1 -0
  327. package/packages/dashboard/dist/index.html +14 -0
  328. package/packages/dashboard/package.json +24 -0
  329. package/packages/shared/dist/version.d.ts +2 -0
  330. package/packages/shared/dist/version.d.ts.map +1 -0
  331. package/packages/shared/dist/version.js +2 -0
  332. package/packages/shared/dist/version.js.map +1 -0
  333. package/packages/shared/package.json +18 -0
@@ -0,0 +1,64 @@
1
+ /**
2
+ * MCP Resources Implementation for Metalink
3
+ *
4
+ * Provides built-in resources and resource templates per MCP spec:
5
+ * - Built-in resources: metalink://servers, metalink://tools, metalink://version
6
+ * - Resource templates: metalink://server/{name}, metalink://server/{name}/tools
7
+ */
8
+ import type { ServerManager } from './manager.js';
9
+ import type { ConfigLoader } from '../config/loader.js';
10
+ /**
11
+ * Resource definition for MCP resources/list response
12
+ */
13
+ export interface ResourceDefinition {
14
+ uri: string;
15
+ name: string;
16
+ description?: string;
17
+ mimeType?: string;
18
+ }
19
+ /**
20
+ * Resource template definition for MCP resources/templates/list response
21
+ */
22
+ export interface ResourceTemplateDefinition {
23
+ uriTemplate: string;
24
+ name: string;
25
+ description?: string;
26
+ mimeType?: string;
27
+ }
28
+ /**
29
+ * Resource content item for MCP resources/read response
30
+ */
31
+ export interface ResourceContent {
32
+ uri: string;
33
+ mimeType?: string;
34
+ text?: string;
35
+ blob?: string;
36
+ }
37
+ /**
38
+ * Resource read response per MCP spec
39
+ */
40
+ export interface ResourceReadResponse {
41
+ contents: ResourceContent[];
42
+ }
43
+ /**
44
+ * Get list of built-in resources
45
+ * Used for MCP resources/list method
46
+ */
47
+ export declare function getResourcesList(): ResourceDefinition[];
48
+ /**
49
+ * Get list of resource templates
50
+ * Used for MCP resources/templates/list method
51
+ */
52
+ export declare function getResourceTemplatesList(): ResourceTemplateDefinition[];
53
+ /**
54
+ * Read a resource by URI
55
+ * Used for MCP resources/read method
56
+ *
57
+ * @param uri - Resource URI to read
58
+ * @param serverManager - Server manager instance for runtime data
59
+ * @param configLoader - Config loader instance for server configurations
60
+ * @returns Resource read response with contents
61
+ * @throws Error if resource not found
62
+ */
63
+ export declare function readResource(uri: string, serverManager: ServerManager, configLoader: ConfigLoader): Promise<ResourceReadResponse>;
64
+ //# sourceMappingURL=resources.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../../src/server/resources.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC7B;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,kBAAkB,EAAE,CAqBvD;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,IAAI,0BAA0B,EAAE,CAevE;AAED;;;;;;;;;GASG;AACH,wBAAsB,YAAY,CAChC,GAAG,EAAE,MAAM,EACX,aAAa,EAAE,aAAa,EAC5B,YAAY,EAAE,YAAY,GACzB,OAAO,CAAC,oBAAoB,CAAC,CA6B/B"}
@@ -0,0 +1,243 @@
1
+ /**
2
+ * MCP Resources Implementation for Metalink
3
+ *
4
+ * Provides built-in resources and resource templates per MCP spec:
5
+ * - Built-in resources: metalink://servers, metalink://tools, metalink://version
6
+ * - Resource templates: metalink://server/{name}, metalink://server/{name}/tools
7
+ */
8
+ import { VERSION } from '@metalink/shared';
9
+ /**
10
+ * Get list of built-in resources
11
+ * Used for MCP resources/list method
12
+ */
13
+ export function getResourcesList() {
14
+ return [
15
+ {
16
+ uri: 'metalink://servers',
17
+ name: 'MCP Servers List',
18
+ description: 'List of all configured MCP servers with current status',
19
+ mimeType: 'application/json',
20
+ },
21
+ {
22
+ uri: 'metalink://tools',
23
+ name: 'Tools Summary',
24
+ description: 'Summary of all tools available across MCP servers',
25
+ mimeType: 'application/json',
26
+ },
27
+ {
28
+ uri: 'metalink://version',
29
+ name: 'Metalink Version',
30
+ description: 'Current Metalink version information',
31
+ mimeType: 'text/plain',
32
+ },
33
+ ];
34
+ }
35
+ /**
36
+ * Get list of resource templates
37
+ * Used for MCP resources/templates/list method
38
+ */
39
+ export function getResourceTemplatesList() {
40
+ return [
41
+ {
42
+ uriTemplate: 'metalink://server/{name}',
43
+ name: 'Server Details',
44
+ description: 'Detailed information about a specific MCP server',
45
+ mimeType: 'application/json',
46
+ },
47
+ {
48
+ uriTemplate: 'metalink://server/{name}/tools',
49
+ name: 'Server Tools',
50
+ description: 'List of tools provided by a specific MCP server',
51
+ mimeType: 'application/json',
52
+ },
53
+ ];
54
+ }
55
+ /**
56
+ * Read a resource by URI
57
+ * Used for MCP resources/read method
58
+ *
59
+ * @param uri - Resource URI to read
60
+ * @param serverManager - Server manager instance for runtime data
61
+ * @param configLoader - Config loader instance for server configurations
62
+ * @returns Resource read response with contents
63
+ * @throws Error if resource not found
64
+ */
65
+ export async function readResource(uri, serverManager, configLoader) {
66
+ // Handle built-in resources
67
+ if (uri === 'metalink://servers') {
68
+ return await readServersResource(serverManager, configLoader);
69
+ }
70
+ if (uri === 'metalink://tools') {
71
+ return await readToolsResource(serverManager, configLoader);
72
+ }
73
+ if (uri === 'metalink://version') {
74
+ return readVersionResource();
75
+ }
76
+ // Handle resource templates
77
+ const serverDetailsMatch = uri.match(/^metalink:\/\/server\/([^/]+)$/);
78
+ if (serverDetailsMatch) {
79
+ const serverName = serverDetailsMatch[1];
80
+ return await readServerDetailsResource(serverName, serverManager, configLoader);
81
+ }
82
+ const serverToolsMatch = uri.match(/^metalink:\/\/server\/([^/]+)\/tools$/);
83
+ if (serverToolsMatch) {
84
+ const serverName = serverToolsMatch[1];
85
+ return await readServerToolsResource(serverName, serverManager, configLoader);
86
+ }
87
+ // Resource not found
88
+ throw new Error(`Resource not found: ${uri}`);
89
+ }
90
+ /**
91
+ * Read metalink://servers resource
92
+ * Returns list of all configured servers with status
93
+ */
94
+ async function readServersResource(serverManager, configLoader) {
95
+ const allServers = configLoader.getAllServers();
96
+ const serverStates = serverManager.getAllServers();
97
+ const servers = allServers.map((config) => {
98
+ const status = serverStates[config.name];
99
+ const isStdio = config.transport === 'stdio' || config.transport === undefined;
100
+ return {
101
+ name: config.name,
102
+ transport: config.transport || 'stdio',
103
+ ...(isStdio && 'command' in config ? { command: config.command, args: config.args || [] } : {}),
104
+ ...(!isStdio && 'url' in config ? { url: config.url } : {}),
105
+ env: config.env || {},
106
+ status: status?.status || 'stopped',
107
+ pid: status?.pid,
108
+ uptime: status?.uptime,
109
+ errorCount: status?.errorCount || 0,
110
+ };
111
+ });
112
+ return {
113
+ contents: [
114
+ {
115
+ uri: 'metalink://servers',
116
+ mimeType: 'application/json',
117
+ text: JSON.stringify(servers, null, 2),
118
+ },
119
+ ],
120
+ };
121
+ }
122
+ /**
123
+ * Read metalink://tools resource
124
+ * Returns summary of all tools across all servers
125
+ */
126
+ async function readToolsResource(serverManager, configLoader) {
127
+ const allServers = configLoader.getAllServers();
128
+ const toolsSummary = {};
129
+ // Collect tools from all servers
130
+ for (const server of allServers) {
131
+ const tools = serverManager.getServerTools(server.name);
132
+ toolsSummary[server.name] = {
133
+ serverName: server.name,
134
+ toolCount: tools.length,
135
+ tools: tools.map((tool) => ({
136
+ name: tool.name,
137
+ description: tool.description,
138
+ })),
139
+ };
140
+ }
141
+ const summary = {
142
+ totalServers: allServers.length,
143
+ totalTools: Object.values(toolsSummary).reduce((sum, s) => sum + s.toolCount, 0),
144
+ servers: toolsSummary,
145
+ };
146
+ return {
147
+ contents: [
148
+ {
149
+ uri: 'metalink://tools',
150
+ mimeType: 'application/json',
151
+ text: JSON.stringify(summary, null, 2),
152
+ },
153
+ ],
154
+ };
155
+ }
156
+ /**
157
+ * Read metalink://version resource
158
+ * Returns Metalink version information
159
+ */
160
+ function readVersionResource() {
161
+ return {
162
+ contents: [
163
+ {
164
+ uri: 'metalink://version',
165
+ mimeType: 'text/plain',
166
+ text: `Metalink ${VERSION}\nMCP Protocol Version: 2025-06-18`,
167
+ },
168
+ ],
169
+ };
170
+ }
171
+ /**
172
+ * Read metalink://server/{name} resource
173
+ * Returns detailed information about a specific server
174
+ */
175
+ async function readServerDetailsResource(serverName, serverManager, configLoader) {
176
+ const allServers = configLoader.getAllServers();
177
+ const serverConfig = allServers.find((s) => s.name === serverName);
178
+ if (!serverConfig) {
179
+ throw new Error(`Resource not found: metalink://server/${serverName}`);
180
+ }
181
+ const status = serverManager.getServerStatus(serverName);
182
+ const tools = serverManager.getServerTools(serverName);
183
+ const isStdio = serverConfig.transport === 'stdio' || serverConfig.transport === undefined;
184
+ const serverDetails = {
185
+ name: serverConfig.name,
186
+ transport: serverConfig.transport || 'stdio',
187
+ ...(isStdio && 'command' in serverConfig ? { command: serverConfig.command, args: serverConfig.args || [] } : {}),
188
+ ...(!isStdio && 'url' in serverConfig ? { url: serverConfig.url } : {}),
189
+ env: serverConfig.env || {},
190
+ status: {
191
+ state: status?.status || 'stopped',
192
+ pid: status?.pid,
193
+ uptime: status?.uptime,
194
+ errorCount: status?.errorCount || 0,
195
+ lastHealthCheck: status?.lastHealthCheck,
196
+ },
197
+ tools: {
198
+ count: tools.length,
199
+ available: tools.map((tool) => tool.name),
200
+ },
201
+ };
202
+ return {
203
+ contents: [
204
+ {
205
+ uri: `metalink://server/${serverName}`,
206
+ mimeType: 'application/json',
207
+ text: JSON.stringify(serverDetails, null, 2),
208
+ },
209
+ ],
210
+ };
211
+ }
212
+ /**
213
+ * Read metalink://server/{name}/tools resource
214
+ * Returns list of tools from a specific server
215
+ */
216
+ async function readServerToolsResource(serverName, serverManager, configLoader) {
217
+ const allServers = configLoader.getAllServers();
218
+ const serverConfig = allServers.find((s) => s.name === serverName);
219
+ if (!serverConfig) {
220
+ throw new Error(`Resource not found: metalink://server/${serverName}/tools`);
221
+ }
222
+ const tools = serverManager.getServerTools(serverName);
223
+ const toolsData = {
224
+ serverName,
225
+ toolCount: tools.length,
226
+ tools: tools.map((tool) => ({
227
+ name: tool.name,
228
+ description: tool.description,
229
+ inputSchema: tool.inputSchema,
230
+ annotations: tool.annotations,
231
+ })),
232
+ };
233
+ return {
234
+ contents: [
235
+ {
236
+ uri: `metalink://server/${serverName}/tools`,
237
+ mimeType: 'application/json',
238
+ text: JSON.stringify(toolsData, null, 2),
239
+ },
240
+ ],
241
+ };
242
+ }
243
+ //# sourceMappingURL=resources.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resources.js","sourceRoot":"","sources":["../../src/server/resources.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,84 @@
1
+ import type { ToolInfo } from './manager.js';
2
+ /**
3
+ * Schema cache entry with timestamp for TTL tracking
4
+ */
5
+ interface CachedSchema {
6
+ tools: ToolInfo[];
7
+ timestamp: number;
8
+ stability?: {
9
+ refreshCount: number;
10
+ changeCount: number;
11
+ lastChangeTimestamp: number;
12
+ currentTTL: number;
13
+ stability: 'stable' | 'normal' | 'unstable';
14
+ };
15
+ }
16
+ /**
17
+ * SchemaStore - Persistent schema storage for MCP tools
18
+ *
19
+ * Stores tool schemas on disk to enable:
20
+ * 1. Fast discovery responses without waiting for server startup
21
+ * 2. Schema persistence across daemon restarts
22
+ * 3. Background refresh of schemas while keeping responses instant
23
+ *
24
+ * Files are stored as JSON: .metalink/schemas/<serverName>.json
25
+ */
26
+ export declare class SchemaStore {
27
+ private cacheDir;
28
+ private cacheTTL;
29
+ private memoryCache;
30
+ constructor(cacheDir?: string, cacheTTL?: number);
31
+ /**
32
+ * Get the file path for a server's schema cache
33
+ */
34
+ private getSchemaPath;
35
+ /**
36
+ * Load all schemas from disk into memory
37
+ * Returns map of serverName → CachedSchema
38
+ * Silently skips corrupted files
39
+ */
40
+ loadFromDisk(): Promise<Map<string, CachedSchema>>;
41
+ /**
42
+ * Save a schema to disk atomically
43
+ * Creates .metalink/schemas/<serverName>.json
44
+ */
45
+ saveToDisk(serverName: string, schema: CachedSchema): Promise<void>;
46
+ /**
47
+ * Check if a schema is stale (older than TTL)
48
+ */
49
+ isStale(schema: CachedSchema | undefined, ttl: number): boolean;
50
+ /**
51
+ * Prune expired schemas from disk
52
+ * Removes schema files older than TTL
53
+ */
54
+ pruneExpired(ttl?: number): Promise<number>;
55
+ /**
56
+ * Delete a specific schema from disk
57
+ * Used when server is removed from registry
58
+ */
59
+ deleteSchema(serverName: string): Promise<void>;
60
+ /**
61
+ * Flush pending operations
62
+ * Used during graceful shutdown
63
+ */
64
+ flush(): Promise<void>;
65
+ /**
66
+ * Get cache statistics
67
+ */
68
+ getStats(): Promise<{
69
+ memorySchemas: number;
70
+ diskSchemas: number;
71
+ totalTools: number;
72
+ }>;
73
+ /**
74
+ * Get schema synchronously from memory cache (disk is already loaded)
75
+ * Returns tools array or undefined if not in memory cache
76
+ */
77
+ getSyncFromDisk(serverName: string): ToolInfo[] | undefined;
78
+ /**
79
+ * Update memory cache
80
+ */
81
+ updateMemoryCache(serverName: string, schema: CachedSchema): void;
82
+ }
83
+ export {};
84
+ //# sourceMappingURL=schema-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-store.d.ts","sourceRoot":"","sources":["../../src/server/schema-store.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAG7C;;GAEG;AACH,UAAU,YAAY;IACpB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE;QACV,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,MAAM,CAAC;QACpB,mBAAmB,EAAE,MAAM,CAAC;QAC5B,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAAC;KAC7C,CAAC;CACH;AAED;;;;;;;;;GASG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,WAAW,CAAwC;gBAE/C,QAAQ,GAAE,MAA4B,EAAE,QAAQ,GAAE,MAAe;IAM7E;;OAEG;IACH,OAAO,CAAC,aAAa;IAIrB;;;;OAIG;IACG,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IA2CxD;;;OAGG;IACG,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IA+BzE;;OAEG;IACH,OAAO,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO;IAK/D;;;OAGG;IACG,YAAY,CAAC,GAAG,GAAE,MAAsB,GAAG,OAAO,CAAC,MAAM,CAAC;IAwChE;;;OAGG;IACG,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBrD;;;OAGG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAY5B;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC;QACxB,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IAgCF;;;OAGG;IACH,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,EAAE,GAAG,SAAS;IAK3D;;OAEG;IACH,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI;CAGlE"}
@@ -0,0 +1,234 @@
1
+ import fs from 'fs/promises';
2
+ import path from 'path';
3
+ import { atomicWrite } from '../utils/file-lock.js';
4
+ /**
5
+ * SchemaStore - Persistent schema storage for MCP tools
6
+ *
7
+ * Stores tool schemas on disk to enable:
8
+ * 1. Fast discovery responses without waiting for server startup
9
+ * 2. Schema persistence across daemon restarts
10
+ * 3. Background refresh of schemas while keeping responses instant
11
+ *
12
+ * Files are stored as JSON: .metalink/schemas/<serverName>.json
13
+ */
14
+ export class SchemaStore {
15
+ constructor(cacheDir = '.metalink/schemas', cacheTTL = 300000) {
16
+ this.memoryCache = new Map();
17
+ this.cacheDir = cacheDir;
18
+ this.cacheTTL = cacheTTL;
19
+ console.log(`[SchemaStore] Initialized with cache dir: ${cacheDir}, TTL: ${cacheTTL}ms`);
20
+ }
21
+ /**
22
+ * Get the file path for a server's schema cache
23
+ */
24
+ getSchemaPath(serverName) {
25
+ return path.join(this.cacheDir, `${serverName}.json`);
26
+ }
27
+ /**
28
+ * Load all schemas from disk into memory
29
+ * Returns map of serverName → CachedSchema
30
+ * Silently skips corrupted files
31
+ */
32
+ async loadFromDisk() {
33
+ const schemas = new Map();
34
+ try {
35
+ // Create cache directory if it doesn't exist
36
+ await fs.mkdir(this.cacheDir, { recursive: true });
37
+ // List all .json files in cache directory
38
+ const files = await fs.readdir(this.cacheDir);
39
+ const jsonFiles = files.filter(f => f.endsWith('.json') && !f.endsWith('.backup'));
40
+ console.log(`[SchemaStore] Found ${jsonFiles.length} cached schemas on disk`);
41
+ for (const file of jsonFiles) {
42
+ const serverName = file.replace('.json', '');
43
+ const filePath = this.getSchemaPath(serverName);
44
+ try {
45
+ const content = await fs.readFile(filePath, 'utf8');
46
+ const data = JSON.parse(content);
47
+ // Validate schema structure
48
+ if (data.tools && Array.isArray(data.tools) && typeof data.timestamp === 'number') {
49
+ schemas.set(serverName, {
50
+ tools: data.tools,
51
+ timestamp: data.timestamp,
52
+ });
53
+ console.log(`[SchemaStore] Loaded schema for ${serverName} (${data.tools.length} tools)`);
54
+ }
55
+ else {
56
+ console.warn(`[SchemaStore] Invalid schema structure for ${serverName}, skipping`);
57
+ }
58
+ }
59
+ catch (error) {
60
+ console.warn(`[SchemaStore] Failed to load schema for ${serverName}:`, error);
61
+ // Continue with next file
62
+ }
63
+ }
64
+ }
65
+ catch (error) {
66
+ console.warn('[SchemaStore] Failed to load schemas from disk:', error);
67
+ }
68
+ return schemas;
69
+ }
70
+ /**
71
+ * Save a schema to disk atomically
72
+ * Creates .metalink/schemas/<serverName>.json
73
+ */
74
+ async saveToDisk(serverName, schema) {
75
+ try {
76
+ // Create cache directory if it doesn't exist
77
+ await fs.mkdir(this.cacheDir, { recursive: true });
78
+ const filePath = this.getSchemaPath(serverName);
79
+ const content = JSON.stringify({
80
+ serverName,
81
+ tools: schema.tools,
82
+ timestamp: schema.timestamp,
83
+ toolCount: schema.tools.length,
84
+ stability: schema.stability, // Include adaptive TTL metrics
85
+ }, null, 2);
86
+ // Use atomic write (temp file + rename)
87
+ await atomicWrite(filePath, content, { createBackup: true, timeout: 5000 });
88
+ const stabilityInfo = schema.stability
89
+ ? ` [${schema.stability.stability}, TTL: ${schema.stability.currentTTL}ms]`
90
+ : '';
91
+ console.log(`[SchemaStore] Saved schema for ${serverName} (${schema.tools.length} tools)${stabilityInfo}`);
92
+ }
93
+ catch (error) {
94
+ console.warn(`[SchemaStore] Failed to save schema for ${serverName}:`, error);
95
+ // Non-blocking failure - continue without persisting
96
+ }
97
+ }
98
+ /**
99
+ * Check if a schema is stale (older than TTL)
100
+ */
101
+ isStale(schema, ttl) {
102
+ if (!schema)
103
+ return true;
104
+ return Date.now() - schema.timestamp > ttl;
105
+ }
106
+ /**
107
+ * Prune expired schemas from disk
108
+ * Removes schema files older than TTL
109
+ */
110
+ async pruneExpired(ttl = this.cacheTTL) {
111
+ let prunedCount = 0;
112
+ try {
113
+ const files = await fs.readdir(this.cacheDir);
114
+ const jsonFiles = files.filter(f => f.endsWith('.json') && !f.endsWith('.backup'));
115
+ for (const file of jsonFiles) {
116
+ const filePath = path.join(this.cacheDir, file);
117
+ try {
118
+ const content = await fs.readFile(filePath, 'utf8');
119
+ const data = JSON.parse(content);
120
+ // Check if expired
121
+ if (typeof data.timestamp === 'number' && Date.now() - data.timestamp > ttl) {
122
+ await fs.unlink(filePath);
123
+ const serverName = file.replace('.json', '');
124
+ console.log(`[SchemaStore] Pruned expired schema for ${serverName}`);
125
+ prunedCount++;
126
+ // Also remove backup
127
+ const backupPath = `${filePath}.backup`;
128
+ try {
129
+ await fs.unlink(backupPath);
130
+ }
131
+ catch {
132
+ // Ignore if backup doesn't exist
133
+ }
134
+ }
135
+ }
136
+ catch (error) {
137
+ console.warn(`[SchemaStore] Error checking ${file} for expiration:`, error);
138
+ }
139
+ }
140
+ }
141
+ catch (error) {
142
+ console.warn('[SchemaStore] Failed to prune expired schemas:', error);
143
+ }
144
+ return prunedCount;
145
+ }
146
+ /**
147
+ * Delete a specific schema from disk
148
+ * Used when server is removed from registry
149
+ */
150
+ async deleteSchema(serverName) {
151
+ try {
152
+ const filePath = this.getSchemaPath(serverName);
153
+ await fs.unlink(filePath);
154
+ console.log(`[SchemaStore] Deleted schema for ${serverName}`);
155
+ // Also delete backup
156
+ const backupPath = `${filePath}.backup`;
157
+ try {
158
+ await fs.unlink(backupPath);
159
+ }
160
+ catch {
161
+ // Ignore if backup doesn't exist
162
+ }
163
+ }
164
+ catch (error) {
165
+ const errCode = error.code;
166
+ if (errCode !== 'ENOENT') {
167
+ console.warn(`[SchemaStore] Failed to delete schema for ${serverName}:`, error);
168
+ }
169
+ }
170
+ }
171
+ /**
172
+ * Flush pending operations
173
+ * Used during graceful shutdown
174
+ */
175
+ async flush() {
176
+ // Save all in-memory schemas to disk before shutdown
177
+ for (const [serverName, schema] of this.memoryCache) {
178
+ try {
179
+ await this.saveToDisk(serverName, schema);
180
+ }
181
+ catch (error) {
182
+ console.warn(`[SchemaStore] Failed to flush schema for ${serverName}:`, error);
183
+ }
184
+ }
185
+ console.log('[SchemaStore] Flush complete');
186
+ }
187
+ /**
188
+ * Get cache statistics
189
+ */
190
+ async getStats() {
191
+ let diskSchemas = 0;
192
+ let totalTools = 0;
193
+ try {
194
+ const files = await fs.readdir(this.cacheDir);
195
+ const jsonFiles = files.filter(f => f.endsWith('.json') && !f.endsWith('.backup'));
196
+ diskSchemas = jsonFiles.length;
197
+ for (const file of jsonFiles) {
198
+ try {
199
+ const content = await fs.readFile(path.join(this.cacheDir, file), 'utf8');
200
+ const data = JSON.parse(content);
201
+ if (data.tools && Array.isArray(data.tools)) {
202
+ totalTools += data.tools.length;
203
+ }
204
+ }
205
+ catch {
206
+ // Skip corrupted files
207
+ }
208
+ }
209
+ }
210
+ catch (error) {
211
+ console.warn('[SchemaStore] Failed to get stats:', error);
212
+ }
213
+ return {
214
+ memorySchemas: this.memoryCache.size,
215
+ diskSchemas,
216
+ totalTools,
217
+ };
218
+ }
219
+ /**
220
+ * Get schema synchronously from memory cache (disk is already loaded)
221
+ * Returns tools array or undefined if not in memory cache
222
+ */
223
+ getSyncFromDisk(serverName) {
224
+ const cached = this.memoryCache.get(serverName);
225
+ return cached?.tools;
226
+ }
227
+ /**
228
+ * Update memory cache
229
+ */
230
+ updateMemoryCache(serverName, schema) {
231
+ this.memoryCache.set(serverName, schema);
232
+ }
233
+ }
234
+ //# sourceMappingURL=schema-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-store.js","sourceRoot":"","sources":["../../src/server/schema-store.ts"],"names":[],"mappings":"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"}