@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,165 @@
1
+ import { Command, Flags, Args } from '@oclif/core';
2
+ import { getDaemonEndpoint } from '../../utils/daemon-endpoint.js';
3
+ /**
4
+ * Debug MCP protocol communication with a server
5
+ * v1.3.58: New command to inspect raw MCP messages and server health
6
+ */
7
+ class ServerDebug extends Command {
8
+ async run() {
9
+ const { args, flags } = await this.parse(ServerDebug);
10
+ const baseUrl = getDaemonEndpoint();
11
+ const serverName = args.server;
12
+ this.log(`\n🔍 Debugging server: ${serverName}`);
13
+ this.log(` Verbose: ${flags.verbose}`);
14
+ this.log('');
15
+ try {
16
+ // Step 1: Get server info
17
+ this.log('Step 1: Server Info');
18
+ this.log('─'.repeat(50));
19
+ const infoResponse = await fetch(`${baseUrl}/api/v1/servers/${encodeURIComponent(serverName)}/info`);
20
+ if (!infoResponse.ok) {
21
+ this.error(`Failed to get server info: ${infoResponse.statusText}`);
22
+ }
23
+ const serverInfo = await infoResponse.json();
24
+ this.log(` Name: ${serverInfo.name}`);
25
+ this.log(` Status: ${serverInfo.status}`);
26
+ this.log(` Command: ${serverInfo.command}`);
27
+ if (serverInfo.args && serverInfo.args.length > 0) {
28
+ this.log(` Args: ${JSON.stringify(serverInfo.args)}`);
29
+ }
30
+ if (serverInfo.env && Object.keys(serverInfo.env).length > 0) {
31
+ this.log(` Environment variables: ${Object.keys(serverInfo.env).length} set`);
32
+ if (flags.verbose) {
33
+ for (const [key, value] of Object.entries(serverInfo.env)) {
34
+ // Mask sensitive values
35
+ const displayValue = key.toLowerCase().includes('key') || key.toLowerCase().includes('pass') || key.toLowerCase().includes('secret')
36
+ ? '***MASKED***'
37
+ : value;
38
+ this.log(` ${key}: ${displayValue}`);
39
+ }
40
+ }
41
+ }
42
+ this.log('');
43
+ // Step 2: Test tools/list
44
+ if (flags['test-tools']) {
45
+ this.log('Step 2: Tools Discovery');
46
+ this.log('─'.repeat(50));
47
+ const startTime = Date.now();
48
+ try {
49
+ const toolsResponse = await fetch(`${baseUrl}/api/v1/servers/${encodeURIComponent(serverName)}/tools`, {
50
+ signal: AbortSignal.timeout(35000), // Allow 35s for server startup
51
+ });
52
+ const elapsed = Date.now() - startTime;
53
+ if (!toolsResponse.ok) {
54
+ throw new Error(`HTTP ${toolsResponse.status}: ${toolsResponse.statusText}`);
55
+ }
56
+ const toolsData = await toolsResponse.json();
57
+ const tools = toolsData.tools || [];
58
+ this.log(` Status: ✅ Success (${elapsed}ms)`);
59
+ this.log(` Tools found: ${tools.length}`);
60
+ if (tools.length === 0) {
61
+ this.log('');
62
+ this.log(' ⚠️ WARNING: Server returned 0 tools!');
63
+ this.log(' This could indicate:');
64
+ this.log(' • Server is still initializing (wait and retry)');
65
+ this.log(' • Server failed to connect to backend service');
66
+ this.log(' • Environment variables (API keys, URLs) are incorrect');
67
+ this.log(' • Server does not implement tools/list correctly');
68
+ this.log('');
69
+ this.log(' Try:');
70
+ this.log(` 1. metalink server restart ${serverName}`);
71
+ this.log(' 2. Check server logs (if available)');
72
+ this.log(` 3. Verify environment variables with --verbose flag`);
73
+ }
74
+ else {
75
+ this.log('');
76
+ this.log(' Available tools:');
77
+ for (const tool of tools.slice(0, 10)) {
78
+ this.log(` • ${tool.name}`);
79
+ if (flags.verbose && tool.description) {
80
+ this.log(` ${tool.description}`);
81
+ }
82
+ }
83
+ if (tools.length > 10) {
84
+ this.log(` ... and ${tools.length - 10} more`);
85
+ }
86
+ }
87
+ if (flags.verbose && tools.length > 0) {
88
+ this.log('');
89
+ this.log(' Full tool schemas:');
90
+ this.log(JSON.stringify(tools, null, 2));
91
+ }
92
+ }
93
+ catch (error) {
94
+ const elapsed = Date.now() - startTime;
95
+ this.log(` Status: ❌ Failed (${elapsed}ms)`);
96
+ this.log(` Error: ${error.message}`);
97
+ if (error.name === 'TypeError' && error.message.includes('fetch')) {
98
+ this.log('');
99
+ this.log(' ❌ MetaLink daemon not running or not accessible');
100
+ this.log(' Start it with: metalink daemon start');
101
+ }
102
+ else if (error.name === 'AbortError' || error.message.includes('timeout')) {
103
+ this.log('');
104
+ this.log(' ⏱️ Server startup timeout (>35s)');
105
+ this.log(' This server may be slow to initialize.');
106
+ this.log(' Try again in a few seconds.');
107
+ }
108
+ }
109
+ }
110
+ this.log('');
111
+ this.log('Step 3: Health Summary');
112
+ this.log('─'.repeat(50));
113
+ // Determine health status
114
+ const isRunning = serverInfo.status === 'running';
115
+ const hasTools = flags['test-tools']; // We tested tools above
116
+ if (isRunning) {
117
+ this.log(' ✅ Server process is running');
118
+ }
119
+ else {
120
+ this.log(' ❌ Server is not running');
121
+ this.log(` Current status: ${serverInfo.status}`);
122
+ this.log(` Start with: metalink server start ${serverName}`);
123
+ }
124
+ this.log('');
125
+ this.log('💡 Tips:');
126
+ this.log(' • Use --verbose to see full details');
127
+ this.log(' • Use --no-test-tools to skip tool discovery test');
128
+ this.log(` • Check logs at: ~/mcp/metalink/logs/metalink-daemon.log`);
129
+ this.log('');
130
+ }
131
+ catch (error) {
132
+ if (error.message?.includes('404')) {
133
+ this.error(`Server '${serverName}' not found in registry`);
134
+ }
135
+ else if (error.name === 'TypeError' && error.message.includes('fetch')) {
136
+ this.error(`MetaLink daemon not running or not accessible`);
137
+ }
138
+ else {
139
+ this.error(`Failed to debug server: ${error.message}`);
140
+ }
141
+ }
142
+ }
143
+ }
144
+ ServerDebug.description = 'Debug MCP protocol communication with a server (shows raw messages, health checks)';
145
+ ServerDebug.examples = [
146
+ '<%= config.bin %> <%= command.id %> memory',
147
+ '<%= config.bin %> <%= command.id %> meta-localhost --verbose',
148
+ '<%= config.bin %> <%= command.id %> jira-basic-auth --test-tools',
149
+ ];
150
+ ServerDebug.flags = {
151
+ verbose: Flags.boolean({
152
+ char: 'v',
153
+ description: 'Show detailed MCP protocol messages',
154
+ default: false,
155
+ }),
156
+ 'test-tools': Flags.boolean({
157
+ description: 'Test tools/list call and show results',
158
+ default: true,
159
+ }),
160
+ };
161
+ ServerDebug.args = {
162
+ server: Args.string({ description: 'Server name to debug', required: true }),
163
+ };
164
+ export default ServerDebug;
165
+ //# sourceMappingURL=debug.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug.js","sourceRoot":"","sources":["../../../src/commands/server/debug.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { Command } from '@oclif/core';
2
+ export default class ServerInfo extends Command {
3
+ static description: string;
4
+ static args: {
5
+ name: import("@oclif/core/lib/interfaces/parser.js").Arg<string, Record<string, unknown>>;
6
+ };
7
+ static flags: {
8
+ json: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
9
+ 'force-discovery': import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
10
+ };
11
+ run(): Promise<void>;
12
+ }
13
+ //# sourceMappingURL=info.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"info.d.ts","sourceRoot":"","sources":["../../../src/commands/server/info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAe,MAAM,aAAa,CAAC;AAGnD,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,OAAO;IAC7C,MAAM,CAAC,WAAW,SAAkD;IACpE,MAAM,CAAC,IAAI;;MAET;IACF,MAAM,CAAC,KAAK;;;MASV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAqD3B"}
@@ -0,0 +1,62 @@
1
+ import { Command, Args, Flags } from '@oclif/core';
2
+ import { getDaemonEndpoint } from '../../utils/daemon-endpoint.js';
3
+ class ServerInfo extends Command {
4
+ async run() {
5
+ const { args, flags } = await this.parse(ServerInfo);
6
+ try {
7
+ const url = `${getDaemonEndpoint()}/api/v1/servers/${encodeURIComponent(args.name)}/info${flags['force-discovery'] ? '?forceDiscovery=true' : ''}`;
8
+ const response = await fetch(url);
9
+ if (!response.ok) {
10
+ const data = await response.json();
11
+ this.error(`Failed to get server info: ${data.error || 'Unknown error'}`);
12
+ }
13
+ const data = await response.json();
14
+ if (flags.json) {
15
+ this.log(JSON.stringify(data, null, 2));
16
+ }
17
+ else {
18
+ this.log(`Server '${args.name}' Info:`);
19
+ if (data.status) {
20
+ this.log(` Status: ${data.status}`);
21
+ }
22
+ if (data.toolCount !== undefined) {
23
+ this.log(` Tools: ${data.toolCount}`);
24
+ if (data.tools && data.tools.length > 0) {
25
+ for (const tool of data.tools) {
26
+ this.log(` - ${tool}`);
27
+ }
28
+ }
29
+ }
30
+ if (data.command) {
31
+ this.log(` Command: ${data.command}`);
32
+ if (data.args && data.args.length > 0) {
33
+ this.log(` Args: ${data.args.join(' ')}`);
34
+ }
35
+ }
36
+ else if (data.url) {
37
+ this.log(` Transport: ${data.transport}`);
38
+ this.log(` URL: ${data.url}`);
39
+ }
40
+ }
41
+ }
42
+ catch (error) {
43
+ this.error(`Failed to get server info: ${error instanceof Error ? error.message : String(error)}`);
44
+ }
45
+ }
46
+ }
47
+ ServerInfo.description = 'Get detailed information about an MCP server';
48
+ ServerInfo.args = {
49
+ name: Args.string({ description: 'Server name', required: true }),
50
+ };
51
+ ServerInfo.flags = {
52
+ json: Flags.boolean({
53
+ description: 'Output as JSON',
54
+ default: false,
55
+ }),
56
+ 'force-discovery': Flags.boolean({
57
+ description: 'Force rediscovery of tools',
58
+ default: false,
59
+ }),
60
+ };
61
+ export default ServerInfo;
62
+ //# sourceMappingURL=info.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"info.js","sourceRoot":"","sources":["../../../src/commands/server/info.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { Command } from '@oclif/core';
2
+ export default class ServerList extends Command {
3
+ static description: string;
4
+ static examples: string[];
5
+ static flags: {
6
+ json: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
7
+ };
8
+ run(): Promise<void>;
9
+ }
10
+ //# sourceMappingURL=list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/server/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAC;AAI7C,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,OAAO;IAC7C,MAAM,CAAC,WAAW,SAAoD;IAEtE,MAAM,CAAC,QAAQ,WAGb;IAEF,MAAM,CAAC,KAAK;;MAKV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAmH3B"}
@@ -0,0 +1,105 @@
1
+ import { Command, Flags } from '@oclif/core';
2
+ import Table from 'cli-table3';
3
+ import { getDaemonEndpoint } from '../../utils/daemon-endpoint.js';
4
+ class ServerList extends Command {
5
+ async run() {
6
+ const { flags } = await this.parse(ServerList);
7
+ try {
8
+ const response = await fetch(`${getDaemonEndpoint()}/api/v1/servers/available/list`);
9
+ if (!response.ok) {
10
+ const data = await response.json();
11
+ this.error(`Failed to list available servers: ${data.error || 'Unknown error'}`);
12
+ }
13
+ const { servers } = await response.json();
14
+ if (flags.json) {
15
+ this.log(JSON.stringify(servers, null, 2));
16
+ }
17
+ else {
18
+ if (servers.length === 0) {
19
+ this.log('No servers available in registry.');
20
+ return;
21
+ }
22
+ // Sort servers: running first, then stopped, then crashed
23
+ // Within each status group, sort by tools DESC, then tokens DESC
24
+ const statusOrder = { running: 0, stopped: 1, crashed: 2 };
25
+ const sortedServers = [...servers].sort((a, b) => {
26
+ const statusA = statusOrder[a.status] ?? 99;
27
+ const statusB = statusOrder[b.status] ?? 99;
28
+ if (statusA !== statusB) {
29
+ // running < stopped < crashed
30
+ return statusA - statusB;
31
+ }
32
+ // Same status: sort by tools DESC
33
+ if (a.toolCount !== b.toolCount) {
34
+ return b.toolCount - a.toolCount;
35
+ }
36
+ // Same tools: sort by tokens DESC
37
+ return b.tokenEstimate - a.tokenEstimate;
38
+ });
39
+ const table = new Table({
40
+ head: ['Name', 'Type', 'Status', 'PID', 'Enabled', 'Tools', 'Tokens'],
41
+ style: { head: [] },
42
+ colAligns: ['left', 'left', 'left', 'right', 'left', 'right', 'right'],
43
+ });
44
+ // Track running vs offline stats separately
45
+ let runningCount = 0;
46
+ let runningTools = 0;
47
+ let runningTokens = 0;
48
+ let offlineCount = 0;
49
+ let offlineTools = 0;
50
+ let offlineTokens = 0;
51
+ for (const server of sortedServers) {
52
+ const pid = server.process?.pid?.toString() || '-';
53
+ const enabled = server.enabled ? 'yes' : 'no';
54
+ // Show cached tool counts even for stopped servers
55
+ const tools = server.toolCount > 0 ? server.toolCount.toString() : '0';
56
+ const tokens = server.tokenEstimate > 0 ? server.tokenEstimate.toLocaleString('en-US') : '0';
57
+ // Track stats by status
58
+ if (server.status === 'running') {
59
+ runningCount++;
60
+ runningTools += server.toolCount;
61
+ runningTokens += server.tokenEstimate;
62
+ }
63
+ else {
64
+ offlineCount++;
65
+ offlineTools += server.toolCount;
66
+ offlineTokens += server.tokenEstimate;
67
+ }
68
+ table.push([server.name, server.type, server.status, pid, enabled, tools, tokens]);
69
+ }
70
+ this.log(table.toString());
71
+ // Summary with breakdown
72
+ this.log('');
73
+ const totalServers = runningCount + offlineCount;
74
+ const totalTools = runningTools + offlineTools;
75
+ const totalTokens = runningTokens + offlineTokens;
76
+ this.log(`Running: ${runningCount} servers, ${runningTools} tools, ${runningTokens.toLocaleString('en-US')} tokens`);
77
+ if (offlineTools > 0) {
78
+ this.log(`Offline: ${offlineCount} servers, ${offlineTools} tools, ${offlineTokens.toLocaleString('en-US')} tokens (cached)`);
79
+ }
80
+ else {
81
+ this.log(`Offline: ${offlineCount} servers (no cached schemas yet)`);
82
+ }
83
+ this.log(`Total: ${totalServers} servers, ${totalTools} tools, ${totalTokens.toLocaleString('en-US')} tokens`);
84
+ this.log('');
85
+ this.log('Note: Use "metalink server info <name>" for detailed configuration.');
86
+ }
87
+ }
88
+ catch (error) {
89
+ this.error(`Failed to list available servers: ${error instanceof Error ? error.message : String(error)}`);
90
+ }
91
+ }
92
+ }
93
+ ServerList.description = 'List all available MCP servers in the registry';
94
+ ServerList.examples = [
95
+ '<%= config.bin %> <%= command.id %>',
96
+ '<%= config.bin %> <%= command.id %> --json',
97
+ ];
98
+ ServerList.flags = {
99
+ json: Flags.boolean({
100
+ description: 'Output as JSON',
101
+ default: false,
102
+ }),
103
+ };
104
+ export default ServerList;
105
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/server/list.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { Command } from '@oclif/core';
2
+ export default class ServerRefreshTools extends Command {
3
+ static description: string;
4
+ static examples: string[];
5
+ static args: {
6
+ name: import("@oclif/core/lib/interfaces/parser.js").Arg<string, Record<string, unknown>>;
7
+ };
8
+ static flags: {
9
+ verbose: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
10
+ };
11
+ run(): Promise<void>;
12
+ }
13
+ //# sourceMappingURL=refresh-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refresh-tools.d.ts","sourceRoot":"","sources":["../../../src/commands/server/refresh-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAe,MAAM,aAAa,CAAC;AAWnD,MAAM,CAAC,OAAO,OAAO,kBAAmB,SAAQ,OAAO;IACrD,MAAM,CAAC,WAAW,SAAgD;IAElE,MAAM,CAAC,QAAQ,WAGb;IAEF,MAAM,CAAC,IAAI;;MAET;IAEF,MAAM,CAAC,KAAK;;MAMV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAiC3B"}
@@ -0,0 +1,46 @@
1
+ import { Command, Args, Flags } from '@oclif/core';
2
+ import { getDaemonEndpoint } from '../../utils/daemon-endpoint.js';
3
+ class ServerRefreshTools extends Command {
4
+ async run() {
5
+ const { args, flags } = await this.parse(ServerRefreshTools);
6
+ try {
7
+ this.log(`Refreshing tools for '${args.name}'...`);
8
+ const response = await fetch(`${getDaemonEndpoint()}/api/v1/servers/${encodeURIComponent(args.name)}/refresh-tools`, { method: 'POST' });
9
+ if (!response.ok) {
10
+ const data = (await response.json());
11
+ this.error(`Failed to refresh tools: ${data.error || 'Unknown error'}`);
12
+ }
13
+ const data = (await response.json());
14
+ this.log(`✓ Refreshed '${args.name}': ${data.toolCount} tools discovered`);
15
+ if (flags.verbose && data.tools && data.tools.length > 0) {
16
+ this.log('\nTools:');
17
+ for (const tool of data.tools) {
18
+ this.log(` - ${tool}`);
19
+ }
20
+ }
21
+ }
22
+ catch (error) {
23
+ if (error instanceof Error && error.message.includes('ECONNREFUSED')) {
24
+ this.error('Daemon not running. Start it with: metalink daemon start');
25
+ }
26
+ this.error(`Failed to refresh tools: ${error instanceof Error ? error.message : String(error)}`);
27
+ }
28
+ }
29
+ }
30
+ ServerRefreshTools.description = 'Force refresh tool cache for an MCP server';
31
+ ServerRefreshTools.examples = [
32
+ '<%= config.bin %> server refresh-tools memory',
33
+ '<%= config.bin %> server refresh-tools codegraph --verbose',
34
+ ];
35
+ ServerRefreshTools.args = {
36
+ name: Args.string({ description: 'Server name', required: true }),
37
+ };
38
+ ServerRefreshTools.flags = {
39
+ verbose: Flags.boolean({
40
+ char: 'v',
41
+ description: 'Show list of discovered tools',
42
+ default: false,
43
+ }),
44
+ };
45
+ export default ServerRefreshTools;
46
+ //# sourceMappingURL=refresh-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refresh-tools.js","sourceRoot":"","sources":["../../../src/commands/server/refresh-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAUnE,MAAqB,kBAAmB,SAAQ,OAAO;IAoBrD,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAE7D,IAAI,CAAC;YACH,IAAI,CAAC,GAAG,CAAC,yBAAyB,IAAI,CAAC,IAAI,MAAM,CAAC,CAAC;YAEnD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAC1B,GAAG,iBAAiB,EAAE,mBAAmB,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EACtF,EAAE,MAAM,EAAE,MAAM,EAAE,CACnB,CAAC;YAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAuB,CAAC;gBAC3D,IAAI,CAAC,KAAK,CAAC,4BAA4B,IAAI,CAAC,KAAK,IAAI,eAAe,EAAE,CAAC,CAAC;YAC1E,CAAC;YAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAoB,CAAC;YAExD,IAAI,CAAC,GAAG,CAAC,gBAAgB,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,SAAS,mBAAmB,CAAC,CAAC;YAE3E,IAAI,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzD,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;gBACrB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;oBAC9B,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;gBAC1B,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;gBACrE,IAAI,CAAC,KAAK,CAAC,0DAA0D,CAAC,CAAC;YACzE,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,4BAA4B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACnG,CAAC;IACH,CAAC;;AAnDM,8BAAW,GAAG,4CAA4C,CAAC;AAE3D,2BAAQ,GAAG;IAChB,+CAA+C;IAC/C,4DAA4D;CAC7D,CAAC;AAEK,uBAAI,GAAG;IACZ,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;CAClE,CAAC;AAEK,wBAAK,GAAG;IACb,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC;QACrB,IAAI,EAAE,GAAG;QACT,WAAW,EAAE,+BAA+B;QAC5C,OAAO,EAAE,KAAK;KACf,CAAC;CACH,CAAC;eAlBiB,kBAAkB"}
@@ -0,0 +1,12 @@
1
+ import { Command } from '@oclif/core';
2
+ export default class ServerRemove extends Command {
3
+ static description: string;
4
+ static args: {
5
+ name: import("@oclif/core/lib/interfaces/parser.js").Arg<string, Record<string, unknown>>;
6
+ };
7
+ static flags: {
8
+ force: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
9
+ };
10
+ run(): Promise<void>;
11
+ }
12
+ //# sourceMappingURL=remove.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remove.d.ts","sourceRoot":"","sources":["../../../src/commands/server/remove.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAe,MAAM,aAAa,CAAC;AAGnD,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,OAAO;IAC/C,MAAM,CAAC,WAAW,SAA4C;IAE9D,MAAM,CAAC,IAAI;;MAET;IAEF,MAAM,CAAC,KAAK;;MAKV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA8B3B"}
@@ -0,0 +1,39 @@
1
+ import { Command, Args, Flags } from '@oclif/core';
2
+ import { getDaemonEndpoint } from '../../utils/daemon-endpoint.js';
3
+ class ServerRemove extends Command {
4
+ async run() {
5
+ const { args, flags } = await this.parse(ServerRemove);
6
+ try {
7
+ // Build query string for force flag
8
+ const queryString = flags.force ? '?force=true' : '';
9
+ // Make API request
10
+ const response = await fetch(`${getDaemonEndpoint()}/api/v1/registry/servers/${encodeURIComponent(args.name)}${queryString}`, {
11
+ method: 'DELETE',
12
+ });
13
+ if (!response.ok) {
14
+ const data = await response.json();
15
+ // Check if server is running and user didn't force
16
+ if (response.status === 409) {
17
+ this.error(`${data.error}\nUse --force flag to remove running servers`);
18
+ }
19
+ this.error(`Failed to remove server: ${data.error || 'Unknown error'}`);
20
+ }
21
+ this.log(`✓ Server '${args.name}' removed from registry`);
22
+ }
23
+ catch (error) {
24
+ this.error(`Failed to remove server: ${error instanceof Error ? error.message : String(error)}`);
25
+ }
26
+ }
27
+ }
28
+ ServerRemove.description = 'Remove an MCP server from the registry';
29
+ ServerRemove.args = {
30
+ name: Args.string({ description: 'Server name to remove', required: true }),
31
+ };
32
+ ServerRemove.flags = {
33
+ force: Flags.boolean({
34
+ description: 'Force removal of running servers',
35
+ default: false,
36
+ }),
37
+ };
38
+ export default ServerRemove;
39
+ //# sourceMappingURL=remove.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remove.js","sourceRoot":"","sources":["../../../src/commands/server/remove.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAEnE,MAAqB,YAAa,SAAQ,OAAO;IAc/C,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAEvD,IAAI,CAAC;YACH,oCAAoC;YACpC,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;YAErD,mBAAmB;YACnB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,iBAAiB,EAAE,4BAA4B,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,WAAW,EAAE,EAAE;gBAC5H,MAAM,EAAE,QAAQ;aACjB,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAwB,CAAC;gBAEzD,mDAAmD;gBACnD,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;oBAC5B,IAAI,CAAC,KAAK,CACR,GAAG,IAAI,CAAC,KAAK,8CAA8C,CAC5D,CAAC;gBACJ,CAAC;gBAED,IAAI,CAAC,KAAK,CAAC,4BAA4B,IAAI,CAAC,KAAK,IAAI,eAAe,EAAE,CAAC,CAAC;YAC1E,CAAC;YAED,IAAI,CAAC,GAAG,CAAC,aAAa,IAAI,CAAC,IAAI,yBAAyB,CAAC,CAAC;QAC5D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,KAAK,CAAC,4BAA4B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACnG,CAAC;IACH,CAAC;;AA1CM,wBAAW,GAAG,wCAAwC,CAAC;AAEvD,iBAAI,GAAG;IACZ,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,uBAAuB,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;CAC5E,CAAC;AAEK,kBAAK,GAAG;IACb,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC;QACnB,WAAW,EAAE,kCAAkC;QAC/C,OAAO,EAAE,KAAK;KACf,CAAC;CACH,CAAC;eAZiB,YAAY"}
@@ -0,0 +1,9 @@
1
+ import { Command } from '@oclif/core';
2
+ export default class ServerRestart extends Command {
3
+ static description: string;
4
+ static args: {
5
+ name: import("@oclif/core/lib/interfaces/parser.js").Arg<string, Record<string, unknown>>;
6
+ };
7
+ run(): Promise<void>;
8
+ }
9
+ //# sourceMappingURL=restart.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"restart.d.ts","sourceRoot":"","sources":["../../../src/commands/server/restart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAQ,MAAM,aAAa,CAAC;AAG5C,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,OAAO;IAChD,MAAM,CAAC,WAAW,SAA2B;IAC7C,MAAM,CAAC,IAAI;;MAET;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAsB3B"}
@@ -0,0 +1,30 @@
1
+ import { Command, Args } from '@oclif/core';
2
+ import { getDaemonEndpoint } from '../../utils/daemon-endpoint.js';
3
+ class ServerRestart extends Command {
4
+ async run() {
5
+ const { args } = await this.parse(ServerRestart);
6
+ try {
7
+ const response = await fetch(`${getDaemonEndpoint()}/api/v1/servers/${encodeURIComponent(args.name)}/restart`, {
8
+ method: 'POST',
9
+ });
10
+ if (!response.ok) {
11
+ const data = await response.json();
12
+ this.error(`Failed to restart server: ${data.error || 'Unknown error'}`);
13
+ }
14
+ const data = await response.json();
15
+ this.log(`✓ Server '${args.name}' restarted`);
16
+ if (data.process) {
17
+ this.log(` PID: ${data.process.pid}`);
18
+ }
19
+ }
20
+ catch (error) {
21
+ this.error(`Failed to restart server: ${error instanceof Error ? error.message : String(error)}`);
22
+ }
23
+ }
24
+ }
25
+ ServerRestart.description = 'Restart an MCP server';
26
+ ServerRestart.args = {
27
+ name: Args.string({ description: 'Server name', required: true }),
28
+ };
29
+ export default ServerRestart;
30
+ //# sourceMappingURL=restart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"restart.js","sourceRoot":"","sources":["../../../src/commands/server/restart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAEnE,MAAqB,aAAc,SAAQ,OAAO;IAMhD,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAEjD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,iBAAiB,EAAE,mBAAmB,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;gBAC7G,MAAM,EAAE,MAAM;aACf,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAwB,CAAC;gBACzD,IAAI,CAAC,KAAK,CAAC,6BAA6B,IAAI,CAAC,KAAK,IAAI,eAAe,EAAE,CAAC,CAAC;YAC3E,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAmD,CAAC;YACpF,IAAI,CAAC,GAAG,CAAC,aAAa,IAAI,CAAC,IAAI,aAAa,CAAC,CAAC;YAC9C,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,IAAI,CAAC,GAAG,CAAC,UAAU,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;YACzC,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,KAAK,CAAC,6BAA6B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACpG,CAAC;IACH,CAAC;;AA1BM,yBAAW,GAAG,uBAAuB,CAAC;AACtC,kBAAI,GAAG;IACZ,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;CAClE,CAAC;eAJiB,aAAa"}
@@ -0,0 +1,9 @@
1
+ import { Command } from '@oclif/core';
2
+ export default class ServerStart extends Command {
3
+ static description: string;
4
+ static args: {
5
+ name: import("@oclif/core/lib/interfaces/parser.js").Arg<string, Record<string, unknown>>;
6
+ };
7
+ run(): Promise<void>;
8
+ }
9
+ //# sourceMappingURL=start.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../../src/commands/server/start.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAQ,MAAM,aAAa,CAAC;AAG5C,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,OAAO;IAC9C,MAAM,CAAC,WAAW,SAAyB;IAC3C,MAAM,CAAC,IAAI;;MAET;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA8B3B"}
@@ -0,0 +1,37 @@
1
+ import { Command, Args } from '@oclif/core';
2
+ import { getDaemonEndpoint } from '../../utils/daemon-endpoint.js';
3
+ class ServerStart extends Command {
4
+ async run() {
5
+ const { args } = await this.parse(ServerStart);
6
+ // Deprecation warning
7
+ this.warn('⚠️ DEPRECATED: metalink server start is not needed in v1.3.0+');
8
+ this.warn('Servers auto-start on first tool call. Use discovery mode instead:');
9
+ this.warn(' → metalink tool list <server> (discover tools, auto-starts if needed)');
10
+ this.warn(' → metalink tool discover (list all available servers)');
11
+ this.log('');
12
+ try {
13
+ const response = await fetch(`${getDaemonEndpoint()}/api/v1/servers/${encodeURIComponent(args.name)}/start`, {
14
+ method: 'POST',
15
+ });
16
+ if (!response.ok) {
17
+ const data = await response.json();
18
+ this.error(`Failed to start server: ${data.error || 'Unknown error'}`);
19
+ }
20
+ const data = await response.json();
21
+ this.log(`✓ Server '${args.name}' started`);
22
+ if (data.process) {
23
+ this.log(` PID: ${data.process.pid}`);
24
+ this.log(` Uptime: ${data.process.uptime}ms`);
25
+ }
26
+ }
27
+ catch (error) {
28
+ this.error(`Failed to start server: ${error instanceof Error ? error.message : String(error)}`);
29
+ }
30
+ }
31
+ }
32
+ ServerStart.description = 'Start an MCP server';
33
+ ServerStart.args = {
34
+ name: Args.string({ description: 'Server name', required: true }),
35
+ };
36
+ export default ServerStart;
37
+ //# sourceMappingURL=start.js.map