@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
package/README.md ADDED
@@ -0,0 +1,160 @@
1
+ # MetaLink - Universal MCP Server Manager
2
+
3
+ **Version:** 1.2.0
4
+ **License:** MIT
5
+
6
+ A modern, unified platform for managing Model Context Protocol (MCP) servers with REST API, CLI, real-time dashboard, and advanced features like secrets management, circuit breakers, and automatic restarts.
7
+
8
+ ## Features
9
+
10
+ - **REST API** - HTTP API for server management and tool execution
11
+ - **CLI Tool** - oclif-based CLI with comprehensive commands
12
+ - **Real-time Dashboard** - SvelteKit web interface with Server-Sent Events
13
+ - **Process Management** - Automatic spawn/kill with health checks
14
+ - **Circuit Breakers** - Prevents cascade failures
15
+ - **Auto-Restart** - Exponential backoff for crashed servers
16
+ - **Secrets Management** - OS keyring integration (macOS, Linux, Windows)
17
+ - **Schema Caching** - Persistent tool schema storage
18
+ - **Multi-Transport** - stdio and HTTP/SSE server support
19
+ - **Metrics** - Built-in metrics collection
20
+
21
+ ## Quick Start
22
+
23
+ ### Installation
24
+
25
+ ```bash
26
+ # From source
27
+ git clone https://git.intesyo.com/daniel/metalink.git
28
+ cd metalink
29
+ npm install
30
+ npm run build
31
+ npm link
32
+
33
+ # Verify
34
+ metalink --version
35
+ ```
36
+
37
+ ### Configuration
38
+
39
+ ```bash
40
+ # Initialize config
41
+ metalink config init
42
+
43
+ # Edit config
44
+ metalink config edit
45
+ ```
46
+
47
+ ### Usage
48
+
49
+ ```bash
50
+ # Start daemon
51
+ metalink daemon start
52
+
53
+ # List servers
54
+ metalink server list
55
+
56
+ # Start a server
57
+ metalink server start <server-name>
58
+
59
+ # Execute a tool
60
+ metalink tool execute <server> <tool> --with '{"arg": "value"}'
61
+
62
+ # Dashboard
63
+ open http://localhost:3000
64
+ ```
65
+
66
+ ## Architecture
67
+
68
+ MetaLink uses a **Turborepo** monorepo structure:
69
+
70
+ ```
71
+ metalink/
72
+ ├── packages/
73
+ │ ├── core/ # @metalink/core - Server management
74
+ │ ├── cli/ # metalink - CLI tool
75
+ │ ├── dashboard/ # @metalink/dashboard - Web UI
76
+ │ └── shared/ # @metalink/shared - Version info
77
+ ├── scripts/ # Build and deployment scripts
78
+ └── package.json # Root configuration
79
+ ```
80
+
81
+ ### Core Managers (v1.2.0)
82
+
83
+ - **ProcessManager** - stdio process lifecycle
84
+ - **HttpConnectionManager** - HTTP client lifecycle
85
+ - **SchemaCacheManager** - Tool schema caching
86
+ - **CircuitBreakerManager** - Failure handling
87
+
88
+ ## Development
89
+
90
+ ### Build
91
+
92
+ ```bash
93
+ npm run build
94
+ ```
95
+
96
+ ### Test
97
+
98
+ ```bash
99
+ npm test
100
+ ```
101
+
102
+ ### Release
103
+
104
+ **⚠️ IMPORTANT: Always use the automated release process. Never manually edit version files.**
105
+
106
+ ```bash
107
+ # 1. Document what changed (interactive)
108
+ npx changeset
109
+
110
+ # 2. Bump versions (automated - updates all package.json files)
111
+ npm run version
112
+
113
+ # 3. Sync version to source (automated - updates version.ts)
114
+ npm run sync-version
115
+
116
+ # 4. Build and verify
117
+ npm run build
118
+ metalink --version # Verify correct version
119
+
120
+ # 5. Commit, tag, and push
121
+ git add -A
122
+ git commit -m "chore: version bump to vX.X.X"
123
+ git tag -a v1.x.x -m "Release v1.x.x: description"
124
+ git push origin main --tags
125
+ ```
126
+
127
+ **What each command does:**
128
+
129
+ - `npx changeset` - Creates a changeset describing your changes
130
+ - `npm run version` - Bumps version in ALL package.json files and updates CHANGELOG.md
131
+ - `npm run sync-version` - Syncs version from package.json to version.ts (what CLI reports)
132
+ - `npm run build` - Compiles TypeScript
133
+ - `git tag` - Creates release tag
134
+
135
+ **Version sources:**
136
+
137
+ - `packages/*/package.json` - Used by npm and changeset
138
+ - `packages/shared/version.ts` - Used by CLI (`metalink --version`)
139
+
140
+ ## Documentation
141
+
142
+ - **AGENTS.md** - Development guide and conventions
143
+ - **ARCHITECTURE.md** - System architecture details
144
+ - **CHANGELOG.md** - Version history
145
+ - **CONTRIBUTING.md** - Contribution guidelines
146
+ - **SECURITY.md** - Security policies
147
+
148
+ ## Supported Editors
149
+
150
+ MetaLink is actively developed with:
151
+
152
+ - **OpenCode** - Primary IDE
153
+ - **Claude Code** - AI-assisted development
154
+ - **Zed** - High-performance editor
155
+
156
+ Legacy editor configs removed: Cursor, Cline, Roo, Grok, Kilo, Kiro, Trae, Windsurf, Taskmaster
157
+
158
+ ## License
159
+
160
+ MIT © Daniel Stefan
package/package.json ADDED
@@ -0,0 +1,96 @@
1
+ {
2
+ "name": "@daniel.stefan/metalink",
3
+ "version": "1.3.1",
4
+ "description": "MetaLink MCP Management Platform - Universal MCP server orchestrator",
5
+ "private": false,
6
+ "publishConfig": {
7
+ "access": "public"
8
+ },
9
+ "type": "module",
10
+ "main": "packages/core/dist/index.js",
11
+ "bin": {
12
+ "metalink": "packages/cli/dist/index.js",
13
+ "metalink-daemon": "packages/core/dist/daemon.js"
14
+ },
15
+ "files": [
16
+ "packages/*/dist/**/*",
17
+ "packages/*/package.json",
18
+ "scripts/setup-platform.js",
19
+ "README.md",
20
+ "README.npm.md",
21
+ "LICENSE"
22
+ ],
23
+ "packageManager": "npm@10.0.0",
24
+ "workspaces": [
25
+ "packages/*"
26
+ ],
27
+ "scripts": {
28
+ "postinstall": "node scripts/setup-platform.js",
29
+ "sync-version": "node scripts/sync-version.js",
30
+ "verify-release": "./scripts/release-check.sh",
31
+ "verify-ai": "./scripts/verify-ai-work.sh",
32
+ "build": "turbo build",
33
+ "test": "npm --workspaces run test",
34
+ "dev": "npm --workspaces run dev",
35
+ "lint": "npm --workspaces run lint",
36
+ "format": "prettier --write \"packages/**/*.{ts,tsx,json,md}\"",
37
+ "install-deps": "pnpm install -r",
38
+ "analyze-logs": "npx tsx scripts/analyze-logs.ts",
39
+ "changeset": "changeset",
40
+ "version": "changeset version",
41
+ "release": "changeset publish"
42
+ },
43
+ "dependencies": {
44
+ "@modelcontextprotocol/sdk": "^1.21.1",
45
+ "express": "^4.18.2",
46
+ "express-rate-limit": "^6.7.0",
47
+ "ws": "^8.18.3",
48
+ "xml2js": "^0.6.2",
49
+ "yaml": "^2.3.4",
50
+ "zod": "^3.22.0"
51
+ },
52
+ "devDependencies": {
53
+ "@changesets/cli": "^2.29.8",
54
+ "@types/node": "^20.0.0",
55
+ "prettier": "^3.0.0",
56
+ "turbo": "^1.10.0",
57
+ "typescript": "^5.0.0"
58
+ },
59
+ "engines": {
60
+ "node": ">=18.0.0"
61
+ },
62
+ "os": [
63
+ "darwin",
64
+ "linux",
65
+ "win32"
66
+ ],
67
+ "cpu": [
68
+ "x64",
69
+ "arm64"
70
+ ],
71
+ "keywords": [
72
+ "mcp",
73
+ "model-context-protocol",
74
+ "ai",
75
+ "llm",
76
+ "server",
77
+ "orchestrator",
78
+ "claude",
79
+ "opencode"
80
+ ],
81
+ "author": "Daniel Stefan <daniel.fstefan@gmail.com>",
82
+ "license": "MIT",
83
+ "repository": {
84
+ "type": "git",
85
+ "url": "git+ssh://git@git.intesyo.com:daniel/metalink.git"
86
+ },
87
+ "bugs": {
88
+ "url": "https://git.intesyo.com/daniel/metalink/issues"
89
+ },
90
+ "homepage": "https://git.intesyo.com/daniel/metalink",
91
+ "pnpm": {
92
+ "overrides": {
93
+ "typescript": "^5.0.0"
94
+ }
95
+ }
96
+ }
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/bin/cli.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env node
2
+ import { execute } from '@oclif/core';
3
+ execute({ dir: import.meta.url });
4
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/bin/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { Command } from '@oclif/core';
2
+ export default class ConfigInit extends Command {
3
+ static description: string;
4
+ static flags: {
5
+ force: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
6
+ };
7
+ run(): Promise<void>;
8
+ }
9
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/commands/config/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAC;AAI7C,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,OAAO;IAC7C,MAAM,CAAC,WAAW,SAA2C;IAE7D,MAAM,CAAC,KAAK;;MAKV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA4B3B"}
@@ -0,0 +1,38 @@
1
+ import { Command, Flags } from '@oclif/core';
2
+ import * as fs from 'fs';
3
+ import * as path from 'path';
4
+ class ConfigInit extends Command {
5
+ async run() {
6
+ const { flags } = await this.parse(ConfigInit);
7
+ const configPath = path.join(process.cwd(), 'metalink.config.yaml');
8
+ if (fs.existsSync(configPath) && !flags.force) {
9
+ this.error(`Config file already exists at ${configPath}. Use --force to overwrite.`);
10
+ }
11
+ const template = `# MetaLink Configuration
12
+ version: '1.0.0'
13
+
14
+ daemon:
15
+ port: 3000
16
+ host: '127.0.0.1'
17
+ logLevel: 'info'
18
+
19
+ servers: []
20
+
21
+ environment: {}
22
+
23
+ secrets:
24
+ provider: 'env'
25
+ `;
26
+ fs.writeFileSync(configPath, template);
27
+ this.log(`Created new config file at ${configPath}`);
28
+ }
29
+ }
30
+ ConfigInit.description = 'Initialize a new metalink.config.yaml';
31
+ ConfigInit.flags = {
32
+ force: Flags.boolean({
33
+ description: 'Overwrite existing config',
34
+ default: false,
35
+ }),
36
+ };
37
+ export default ConfigInit;
38
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/commands/config/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,MAAqB,UAAW,SAAQ,OAAO;IAU7C,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAE/C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,sBAAsB,CAAC,CAAC;QAEpE,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YAC9C,IAAI,CAAC,KAAK,CAAC,iCAAiC,UAAU,6BAA6B,CAAC,CAAC;QACvF,CAAC;QAED,MAAM,QAAQ,GAAG;;;;;;;;;;;;;;CAcpB,CAAC;QAEE,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACvC,IAAI,CAAC,GAAG,CAAC,8BAA8B,UAAU,EAAE,CAAC,CAAC;IACvD,CAAC;;AApCM,sBAAW,GAAG,uCAAuC,CAAC;AAEtD,gBAAK,GAAG;IACb,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC;QACnB,WAAW,EAAE,2BAA2B;QACxC,OAAO,EAAE,KAAK;KACf,CAAC;CACH,CAAC;eARiB,UAAU"}
@@ -0,0 +1,9 @@
1
+ import { Command } from '@oclif/core';
2
+ export default class ConfigValidate extends Command {
3
+ static description: string;
4
+ static flags: {
5
+ config: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
6
+ };
7
+ run(): Promise<void>;
8
+ }
9
+ //# sourceMappingURL=validate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../../src/commands/config/validate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAC;AAG7C,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,OAAO;IACjD,MAAM,CAAC,WAAW,SAAqC;IAEvD,MAAM,CAAC,KAAK;;MAKV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAuB3B"}
@@ -0,0 +1,34 @@
1
+ import { Command, Flags } from '@oclif/core';
2
+ import { ConfigLoader } from '@metalink/core';
3
+ class ConfigValidate extends Command {
4
+ async run() {
5
+ const { flags } = await this.parse(ConfigValidate);
6
+ try {
7
+ const loader = ConfigLoader.loadFromSync(flags.config);
8
+ const config = loader.getConfig();
9
+ this.log('✓ Configuration is valid');
10
+ this.log(` Servers: ${config.servers?.length || 0}`);
11
+ this.log(` Plugins: ${config.plugins?.length || 0}`);
12
+ this.log(` Profiles: ${config.profiles?.length || 0}`);
13
+ }
14
+ catch (error) {
15
+ const errorMsg = error instanceof Error ? error.message : String(error);
16
+ // If config file doesn't exist, that's OK - use defaults
17
+ if (errorMsg.includes('Config file not found') || errorMsg.includes('ENOENT')) {
18
+ this.log('✓ No project config file (using global config and defaults)');
19
+ this.log(' This is normal - config file is optional');
20
+ return;
21
+ }
22
+ this.error(`Configuration validation failed: ${errorMsg}`);
23
+ }
24
+ }
25
+ }
26
+ ConfigValidate.description = 'Validate metalink configuration';
27
+ ConfigValidate.flags = {
28
+ config: Flags.string({
29
+ description: 'Path to config file',
30
+ default: 'metalink.config.yaml',
31
+ }),
32
+ };
33
+ export default ConfigValidate;
34
+ //# sourceMappingURL=validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../src/commands/config/validate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,MAAqB,cAAe,SAAQ,OAAO;IAUjD,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAEnD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,YAAY,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACvD,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;YAClC,IAAI,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;YACrC,IAAI,CAAC,GAAG,CAAC,cAAc,MAAM,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,EAAE,CAAC,CAAC;YACtD,IAAI,CAAC,GAAG,CAAC,cAAc,MAAM,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,EAAE,CAAC,CAAC;YACtD,IAAI,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,QAAQ,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAExE,yDAAyD;YACzD,IAAI,QAAQ,CAAC,QAAQ,CAAC,uBAAuB,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC9E,IAAI,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAC;gBACxE,IAAI,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;gBACvD,OAAO;YACT,CAAC;YAED,IAAI,CAAC,KAAK,CAAC,oCAAoC,QAAQ,EAAE,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;;AA/BM,0BAAW,GAAG,iCAAiC,CAAC;AAEhD,oBAAK,GAAG;IACb,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;QACnB,WAAW,EAAE,qBAAqB;QAClC,OAAO,EAAE,sBAAsB;KAChC,CAAC;CACH,CAAC;eARiB,cAAc"}
@@ -0,0 +1,15 @@
1
+ import { Command } from '@oclif/core';
2
+ export default class DaemonRestart extends Command {
3
+ static description: string;
4
+ static flags: {
5
+ force: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
6
+ };
7
+ run(): Promise<void>;
8
+ private restartViaLaunchctl;
9
+ private restartViaUnloadLoad;
10
+ private restartManual;
11
+ private getPortPid;
12
+ private waitForStop;
13
+ private waitForDaemonRestart;
14
+ }
15
+ //# sourceMappingURL=restart.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"restart.d.ts","sourceRoot":"","sources":["../../../src/commands/daemon/restart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAC;AAW7C,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,OAAO;IAChD,MAAM,CAAC,WAAW,SAAiC;IAEnD,MAAM,CAAC,KAAK;;MAMV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;YAuBZ,mBAAmB;YAgCnB,oBAAoB;YAgCpB,aAAa;IAqC3B,OAAO,CAAC,UAAU;YAkBJ,WAAW;YAWX,oBAAoB;CA0BnC"}
@@ -0,0 +1,184 @@
1
+ import { Command, Flags } from '@oclif/core';
2
+ import { execSync, spawn } from 'child_process';
3
+ import { getConfiguredPort, isLaunchAgentLoaded, launchctlUnload, launchctlLoad, getLaunchdPid, LAUNCHD_SERVICE_NAME } from '../../utils/get-configured-port.js';
4
+ class DaemonRestart extends Command {
5
+ async run() {
6
+ const { flags } = await this.parse(DaemonRestart);
7
+ const port = getConfiguredPort();
8
+ try {
9
+ this.log('Restarting MetaLink daemon...');
10
+ this.log(`Target port: ${port}`);
11
+ const isManaged = isLaunchAgentLoaded();
12
+ this.log(`LaunchAgent status: ${isManaged ? 'loaded' : 'not loaded'}`);
13
+ if (isManaged) {
14
+ await this.restartViaLaunchctl(port, flags.force);
15
+ }
16
+ else {
17
+ await this.restartManual(port, flags.force);
18
+ }
19
+ this.log('✓ Daemon restart complete');
20
+ }
21
+ catch (error) {
22
+ this.error(`Failed to restart daemon: ${error instanceof Error ? error.message : String(error)}`);
23
+ }
24
+ }
25
+ async restartViaLaunchctl(port, force) {
26
+ try {
27
+ const oldPid = getLaunchdPid();
28
+ this.log(`Current daemon PID: ${oldPid || 'unknown'}`);
29
+ this.log('Attempting graceful restart via launchctl kickstart...');
30
+ try {
31
+ execSync(`launchctl kickstart -k gui/$(id -u)/${LAUNCHD_SERVICE_NAME}`, {
32
+ stdio: 'pipe',
33
+ encoding: 'utf-8'
34
+ });
35
+ this.log('Sent kickstart signal to launchd');
36
+ }
37
+ catch (error) {
38
+ this.log('Kickstart failed or not available, falling back to unload/load cycle');
39
+ await this.restartViaUnloadLoad(port, force);
40
+ return;
41
+ }
42
+ await this.waitForDaemonRestart(port, 10000);
43
+ const newPid = getLaunchdPid();
44
+ this.log(`New daemon PID: ${newPid || 'unknown'}`);
45
+ }
46
+ catch (error) {
47
+ if (force) {
48
+ this.log('Graceful restart failed, forcing restart via unload/load...');
49
+ await this.restartViaUnloadLoad(port, true);
50
+ }
51
+ else {
52
+ throw error;
53
+ }
54
+ }
55
+ }
56
+ async restartViaUnloadLoad(port, force) {
57
+ this.log('Unloading LaunchAgent...');
58
+ const oldPid = getLaunchdPid();
59
+ if (force && oldPid) {
60
+ this.log(`Force killing PID ${oldPid}...`);
61
+ try {
62
+ process.kill(oldPid, 'SIGKILL');
63
+ await new Promise(resolve => setTimeout(resolve, 500));
64
+ }
65
+ catch {
66
+ // Process may have already exited
67
+ }
68
+ }
69
+ if (!launchctlUnload()) {
70
+ if (!force)
71
+ throw new Error('Failed to unload LaunchAgent');
72
+ this.log('Warning: Failed to unload cleanly, continuing anyway...');
73
+ }
74
+ await this.waitForStop(port, 5000);
75
+ this.log('Port freed');
76
+ this.log('Loading LaunchAgent...');
77
+ if (!launchctlLoad()) {
78
+ throw new Error('Failed to load LaunchAgent');
79
+ }
80
+ await this.waitForDaemonRestart(port, 10000);
81
+ const newPid = getLaunchdPid();
82
+ this.log(`New daemon PID: ${newPid || 'unknown'}`);
83
+ }
84
+ async restartManual(port, force) {
85
+ this.log('Daemon not managed by launchd, performing manual restart...');
86
+ const portPid = this.getPortPid(port);
87
+ if (portPid) {
88
+ this.log(`Killing daemon at PID ${portPid}...`);
89
+ try {
90
+ process.kill(portPid, force ? 'SIGKILL' : 'SIGTERM');
91
+ await this.waitForStop(port, 5000);
92
+ this.log('Daemon stopped');
93
+ }
94
+ catch (error) {
95
+ if (force) {
96
+ this.log(`Warning: Failed to kill process: ${error instanceof Error ? error.message : String(error)}`);
97
+ }
98
+ else {
99
+ throw error;
100
+ }
101
+ }
102
+ }
103
+ this.log('Starting daemon via wrapper script...');
104
+ try {
105
+ // Use spawn to start in background (doesn't wait for completion)
106
+ const daemonProcess = spawn('/Users/daniel/mcp/metalink/metalink-daemon.sh', ['start'], {
107
+ detached: true,
108
+ stdio: 'ignore'
109
+ });
110
+ // Unref so parent process can exit
111
+ daemonProcess.unref();
112
+ await this.waitForDaemonRestart(port, 10000);
113
+ const newPortPid = this.getPortPid(port);
114
+ this.log(`Daemon started at PID ${newPortPid || 'unknown'}`);
115
+ }
116
+ catch (error) {
117
+ throw new Error(`Failed to start daemon: ${error instanceof Error ? error.message : String(error)}`);
118
+ }
119
+ }
120
+ getPortPid(port) {
121
+ try {
122
+ const result = execSync(`lsof -i :${port} -n -P 2>/dev/null | grep LISTEN`, {
123
+ encoding: 'utf-8',
124
+ stdio: ['pipe', 'pipe', 'ignore']
125
+ });
126
+ if (result && result.trim()) {
127
+ const pid = result.trim().split(/\s+/)[1];
128
+ if (pid && !isNaN(parseInt(pid, 10))) {
129
+ return parseInt(pid, 10);
130
+ }
131
+ }
132
+ }
133
+ catch {
134
+ // No process on port
135
+ }
136
+ return null;
137
+ }
138
+ async waitForStop(port, timeoutMs) {
139
+ const startTime = Date.now();
140
+ while (Date.now() - startTime < timeoutMs) {
141
+ if (!this.getPortPid(port)) {
142
+ return true;
143
+ }
144
+ await new Promise(resolve => setTimeout(resolve, 200));
145
+ }
146
+ return false;
147
+ }
148
+ async waitForDaemonRestart(port, timeoutMs) {
149
+ const startTime = Date.now();
150
+ while (Date.now() - startTime < timeoutMs) {
151
+ try {
152
+ const portPid = this.getPortPid(port);
153
+ if (portPid) {
154
+ try {
155
+ execSync(`curl -s -m 2 http://localhost:${port}/mcp > /dev/null 2>&1`, {
156
+ stdio: 'ignore'
157
+ });
158
+ return true;
159
+ }
160
+ catch {
161
+ if (Date.now() - startTime > 5000) {
162
+ return true;
163
+ }
164
+ }
165
+ }
166
+ }
167
+ catch {
168
+ // Continue waiting
169
+ }
170
+ await new Promise(resolve => setTimeout(resolve, 500));
171
+ }
172
+ return false;
173
+ }
174
+ }
175
+ DaemonRestart.description = 'Restart the MetaLink daemon';
176
+ DaemonRestart.flags = {
177
+ force: Flags.boolean({
178
+ char: 'f',
179
+ description: 'Force restart by killing stuck processes',
180
+ default: false
181
+ })
182
+ };
183
+ export default DaemonRestart;
184
+ //# sourceMappingURL=restart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"restart.js","sourceRoot":"","sources":["../../../src/commands/daemon/restart.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { Command } from '@oclif/core';
2
+ export default class DaemonStart extends Command {
3
+ static description: string;
4
+ run(): Promise<void>;
5
+ private waitForDaemon;
6
+ }
7
+ //# sourceMappingURL=start.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../../src/commands/daemon/start.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAYtC,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,OAAO;IAC9C,MAAM,CAAC,WAAW,SAA2C;IAEvD,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;YA8DZ,aAAa;CAe5B"}