@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,128 @@
1
+ /**
2
+ * ProcessManager - Handles spawning and managing stdio MCP server processes
3
+ *
4
+ * Extracted from ServerManager as part of v1.1.67 refactor.
5
+ * Responsibilities:
6
+ * - Spawn/kill stdio processes
7
+ * - Health checks for stdio servers
8
+ * - Auto-restart logic for crashed servers
9
+ * - stdout/stderr handling
10
+ */
11
+ import { ChildProcess } from "child_process";
12
+ import { EventEmitter } from "events";
13
+ import { ServerConfig, StdioServerConfig } from "../../config/index.js";
14
+ import { ServerProcess } from "../types.js";
15
+ import { CircuitBreakerManager } from "../circuit-breaker.js";
16
+ export interface ToolInfo {
17
+ name: string;
18
+ description?: string;
19
+ inputSchema?: Record<string, unknown>;
20
+ inputExamples?: Array<Record<string, unknown>>;
21
+ annotations?: {
22
+ safety: "safe" | "risky";
23
+ safetyReason: string;
24
+ requiresConfirmation: boolean;
25
+ };
26
+ }
27
+ /**
28
+ * v1.1.8: Startup Mutex - Prevents race condition when multiple concurrent
29
+ * requests try to start the same server simultaneously
30
+ */
31
+ export interface StartupMutexEntry {
32
+ promise: Promise<void>;
33
+ startTime: number;
34
+ callerCount: number;
35
+ }
36
+ export declare class ProcessManager extends EventEmitter {
37
+ private processes;
38
+ private serverStates;
39
+ private healthCheckIntervals;
40
+ private startupMutex;
41
+ private restartAttempts;
42
+ private stdoutBuffers;
43
+ private circuitBreakerManager;
44
+ private autoRestartConfig;
45
+ private timeouts;
46
+ constructor(circuitBreakerManager: CircuitBreakerManager, config?: {
47
+ autoRestart?: {
48
+ enabled?: boolean;
49
+ maxRetries?: number;
50
+ baseDelay?: number;
51
+ maxDelay?: number;
52
+ backoffMultiplier?: number;
53
+ };
54
+ });
55
+ /**
56
+ * Start a stdio server process
57
+ */
58
+ startStdioServer(config: StdioServerConfig): Promise<ServerProcess>;
59
+ /**
60
+ * Stop a stdio server process
61
+ */
62
+ stopServer(serverName: string): Promise<void>;
63
+ /**
64
+ * Restart a server process
65
+ */
66
+ restartServer(config: ServerConfig): Promise<ServerProcess>;
67
+ /**
68
+ * Get a running process
69
+ */
70
+ getProcess(serverName: string): ChildProcess | undefined;
71
+ /**
72
+ * Get server state
73
+ */
74
+ getServerState(serverName: string): ServerProcess | undefined;
75
+ /**
76
+ * Check if a process is running
77
+ */
78
+ isProcessRunning(serverName: string): boolean;
79
+ /**
80
+ * Start health check for a stdio server
81
+ */
82
+ startHealthCheck(serverName: string, interval?: number): void;
83
+ /**
84
+ * Health check for stdio server
85
+ */
86
+ private healthCheck;
87
+ /**
88
+ * Handle server process errors
89
+ */
90
+ private handleServerError;
91
+ /**
92
+ * Handle server process exit
93
+ */
94
+ private handleServerExit;
95
+ /**
96
+ * Schedule automatic server restart with backoff
97
+ */
98
+ private scheduleServerRestart;
99
+ /**
100
+ * Calculate backoff delay with exponential backoff
101
+ */
102
+ private calculateBackoffDelay;
103
+ /**
104
+ * Attempt to restart a server
105
+ */
106
+ private attemptServerRestart;
107
+ /**
108
+ * Acquire startup mutex to prevent race conditions
109
+ */
110
+ acquireStartupMutex(serverName: string): Promise<void>;
111
+ /**
112
+ * Release startup mutex
113
+ */
114
+ releaseStartupMutex(serverName: string): void;
115
+ /**
116
+ * Get stdout buffer for a server
117
+ */
118
+ getStdoutBuffer(serverName: string): string;
119
+ /**
120
+ * Append to stdout buffer
121
+ */
122
+ appendStdoutBuffer(serverName: string, data: string): void;
123
+ /**
124
+ * Clean up all resources
125
+ */
126
+ cleanup(): Promise<void>;
127
+ }
128
+ //# sourceMappingURL=ProcessManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProcessManager.d.ts","sourceRoot":"","sources":["../../../src/server/managers/ProcessManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,443 @@
1
+ /**
2
+ * ProcessManager - Handles spawning and managing stdio MCP server processes
3
+ *
4
+ * Extracted from ServerManager as part of v1.1.67 refactor.
5
+ * Responsibilities:
6
+ * - Spawn/kill stdio processes
7
+ * - Health checks for stdio servers
8
+ * - Auto-restart logic for crashed servers
9
+ * - stdout/stderr handling
10
+ */
11
+ import { spawn } from "child_process";
12
+ import path from "path";
13
+ import { EventEmitter } from "events";
14
+ import { globalMetrics } from "../../metrics/index.js";
15
+ export class ProcessManager extends EventEmitter {
16
+ constructor(circuitBreakerManager, config) {
17
+ super();
18
+ this.processes = new Map();
19
+ this.serverStates = new Map();
20
+ this.healthCheckIntervals = new Map();
21
+ this.startupMutex = new Map();
22
+ this.restartAttempts = new Map();
23
+ this.stdoutBuffers = new Map();
24
+ // Auto-restart configuration
25
+ this.autoRestartConfig = {
26
+ enabled: true,
27
+ maxRetries: 3,
28
+ baseDelay: 5000, // 5 seconds
29
+ maxDelay: 300000, // 5 minutes
30
+ backoffMultiplier: 2,
31
+ };
32
+ // Timeouts (in milliseconds)
33
+ this.timeouts = {
34
+ serverInit: 10000, // 10s - Server initialization timeout
35
+ gracefulShutdown: 5000, // 5s - Graceful shutdown timeout
36
+ };
37
+ this.circuitBreakerManager = circuitBreakerManager;
38
+ // Initialize auto-restart configuration
39
+ if (config?.autoRestart) {
40
+ this.autoRestartConfig = {
41
+ ...this.autoRestartConfig,
42
+ ...config.autoRestart,
43
+ };
44
+ }
45
+ }
46
+ /**
47
+ * Start a stdio server process
48
+ */
49
+ async startStdioServer(config) {
50
+ try {
51
+ // Helper to expand env var syntax: ${VAR} and ~/path
52
+ const expandEnvVar = (value, env) => {
53
+ let expanded = value.replace(/\$\{([^}]+)\}/g, (_, key) => env[key] || value);
54
+ if (expanded.startsWith("~")) {
55
+ expanded = expanded.replace(/^~/, env.HOME || "/root");
56
+ }
57
+ return expanded;
58
+ };
59
+ // Replace environment variables in args and env values
60
+ const processEnv = {
61
+ ...process.env,
62
+ };
63
+ if (config.env) {
64
+ for (const [key, value] of Object.entries(config.env)) {
65
+ processEnv[key] = expandEnvVar(value, processEnv);
66
+ }
67
+ }
68
+ // Resolve env vars in args
69
+ const args = (config.args || []).map((arg) => expandEnvVar(arg, processEnv));
70
+ // Prepare spawn options with optional cwd
71
+ const spawnOptions = {
72
+ env: processEnv,
73
+ stdio: "pipe",
74
+ };
75
+ if (config.cwd) {
76
+ let cwdPath = config.cwd;
77
+ if (cwdPath.startsWith("~")) {
78
+ cwdPath = cwdPath.replace(/^~/, processEnv.HOME || "/root");
79
+ }
80
+ spawnOptions.cwd = path.resolve(cwdPath);
81
+ console.log(`[${config.name}] Starting with cwd: ${spawnOptions.cwd}`);
82
+ }
83
+ console.log(`[${config.name}] Spawning: ${config.command} ${args.join(" ")}`);
84
+ const childProcess = spawn(config.command, args, spawnOptions);
85
+ // Store process reference immediately
86
+ this.processes.set(config.name, childProcess);
87
+ // Create and store server state
88
+ const serverState = {
89
+ pid: childProcess.pid || 0,
90
+ status: "running",
91
+ uptime: Date.now(),
92
+ lastHealthCheck: Date.now(),
93
+ errorCount: 0,
94
+ };
95
+ this.serverStates.set(config.name, serverState);
96
+ // Reset circuit breaker on successful start
97
+ this.circuitBreakerManager.getBreaker(config.name).recordSuccess();
98
+ // Handle process errors
99
+ childProcess.on("error", (error) => {
100
+ this.handleServerError(config.name, error);
101
+ });
102
+ childProcess.on("exit", (code) => {
103
+ this.handleServerExit(config.name, code);
104
+ });
105
+ // Start health checks if enabled
106
+ if (config.healthCheck?.enabled) {
107
+ this.startHealthCheck(config.name, config.healthCheck.interval || 30000);
108
+ }
109
+ // Emit event
110
+ this.emit("server:started", { name: config.name, pid: childProcess.pid });
111
+ return serverState;
112
+ }
113
+ catch (error) {
114
+ console.error(`[${config.name}] Failed to spawn process:`, error);
115
+ this.circuitBreakerManager.getBreaker(config.name).recordFailure();
116
+ throw error;
117
+ }
118
+ }
119
+ /**
120
+ * Stop a stdio server process
121
+ */
122
+ async stopServer(serverName) {
123
+ const childProcess = this.processes.get(serverName);
124
+ if (!childProcess) {
125
+ console.log(`[${serverName}] No process to stop`);
126
+ return;
127
+ }
128
+ console.log(`[${serverName}] Stopping process (PID: ${childProcess.pid})...`);
129
+ // Clear restart timer if exists
130
+ const restartInfo = this.restartAttempts.get(serverName);
131
+ if (restartInfo?.restartTimer) {
132
+ clearTimeout(restartInfo.restartTimer);
133
+ console.log(`[${serverName}] Cancelled pending restart`);
134
+ }
135
+ this.restartAttempts.delete(serverName);
136
+ // Clear health check
137
+ const healthInterval = this.healthCheckIntervals.get(serverName);
138
+ if (healthInterval) {
139
+ clearInterval(healthInterval);
140
+ this.healthCheckIntervals.delete(serverName);
141
+ }
142
+ // Clear startup mutex if exists
143
+ this.startupMutex.delete(serverName);
144
+ // Reset circuit breaker
145
+ this.circuitBreakerManager.reset(serverName);
146
+ // Send SIGTERM for graceful shutdown
147
+ if (!childProcess.killed) {
148
+ childProcess.kill("SIGTERM");
149
+ // Wait for graceful shutdown
150
+ await Promise.race([
151
+ new Promise((resolve) => {
152
+ childProcess.on("exit", () => resolve());
153
+ }),
154
+ new Promise((resolve) => setTimeout(resolve, this.timeouts.gracefulShutdown)),
155
+ ]);
156
+ // Force kill if still running
157
+ if (!childProcess.killed) {
158
+ console.warn(`[${serverName}] Process didn't exit gracefully, sending SIGKILL`);
159
+ childProcess.kill("SIGKILL");
160
+ }
161
+ }
162
+ // Clean up
163
+ this.processes.delete(serverName);
164
+ this.serverStates.delete(serverName);
165
+ this.stdoutBuffers.delete(serverName);
166
+ this.emit("server:stopped", { name: serverName });
167
+ console.log(`[${serverName}] Process stopped`);
168
+ }
169
+ /**
170
+ * Restart a server process
171
+ */
172
+ async restartServer(config) {
173
+ console.log(`[${config.name}] Restarting server...`);
174
+ // Stop existing process
175
+ await this.stopServer(config.name);
176
+ // Wait a moment for cleanup
177
+ await new Promise((resolve) => setTimeout(resolve, 1000));
178
+ // Start new process
179
+ if (config.transport === "stdio") {
180
+ return this.startStdioServer(config);
181
+ }
182
+ throw new Error(`Unsupported transport: ${config.transport}`);
183
+ }
184
+ /**
185
+ * Get a running process
186
+ */
187
+ getProcess(serverName) {
188
+ return this.processes.get(serverName);
189
+ }
190
+ /**
191
+ * Get server state
192
+ */
193
+ getServerState(serverName) {
194
+ return this.serverStates.get(serverName);
195
+ }
196
+ /**
197
+ * Check if a process is running
198
+ */
199
+ isProcessRunning(serverName) {
200
+ const process = this.processes.get(serverName);
201
+ return process !== undefined && !process.killed;
202
+ }
203
+ /**
204
+ * Start health check for a stdio server
205
+ */
206
+ startHealthCheck(serverName, interval = 30000) {
207
+ // Clear existing health check
208
+ const existingInterval = this.healthCheckIntervals.get(serverName);
209
+ if (existingInterval) {
210
+ clearInterval(existingInterval);
211
+ }
212
+ const healthCheckInterval = setInterval(async () => {
213
+ const result = await this.healthCheck(serverName);
214
+ // Update metrics - just use counter name with unit
215
+ globalMetrics.incrementCounter(`health_checks_total`, "checks");
216
+ this.emit("health:check", result);
217
+ }, interval);
218
+ this.healthCheckIntervals.set(serverName, healthCheckInterval);
219
+ console.log(`[${serverName}] Health check started (${interval}ms interval)`);
220
+ }
221
+ /**
222
+ * Health check for stdio server
223
+ */
224
+ async healthCheck(serverName) {
225
+ const childProcess = this.processes.get(serverName);
226
+ const timestamp = Date.now();
227
+ if (!childProcess) {
228
+ return {
229
+ serverName,
230
+ healthy: false,
231
+ error: "Process not found",
232
+ timestamp,
233
+ };
234
+ }
235
+ if (childProcess.killed) {
236
+ return { serverName, healthy: false, error: "Process killed", timestamp };
237
+ }
238
+ // Check if process is still running
239
+ try {
240
+ process.kill(childProcess.pid, 0);
241
+ return { serverName, healthy: true, timestamp };
242
+ }
243
+ catch (error) {
244
+ return {
245
+ serverName,
246
+ healthy: false,
247
+ error: "Process not responding",
248
+ timestamp,
249
+ };
250
+ }
251
+ }
252
+ /**
253
+ * Handle server process errors
254
+ */
255
+ handleServerError(serverName, error) {
256
+ console.error(`[${serverName}] Process error:`, error);
257
+ const state = this.serverStates.get(serverName);
258
+ if (state) {
259
+ state.errorCount++;
260
+ this.serverStates.set(serverName, state);
261
+ }
262
+ this.emit("server:error", { name: serverName, error: error.message });
263
+ }
264
+ /**
265
+ * Handle server process exit
266
+ */
267
+ handleServerExit(serverName, code) {
268
+ console.log(`[${serverName}] Process exited with code ${code}`);
269
+ // Update server state
270
+ const state = this.serverStates.get(serverName);
271
+ if (state) {
272
+ state.status = code === 0 ? "stopped" : "crashed";
273
+ this.serverStates.set(serverName, state);
274
+ }
275
+ // Clean up
276
+ this.processes.delete(serverName);
277
+ const healthInterval = this.healthCheckIntervals.get(serverName);
278
+ if (healthInterval) {
279
+ clearInterval(healthInterval);
280
+ this.healthCheckIntervals.delete(serverName);
281
+ }
282
+ // Emit event
283
+ this.emit("server:exited", { name: serverName, code });
284
+ // Schedule restart if enabled and not killed intentionally
285
+ if (this.autoRestartConfig.enabled && code !== 0 && code !== null) {
286
+ this.scheduleServerRestart(serverName);
287
+ }
288
+ }
289
+ /**
290
+ * Schedule automatic server restart with backoff
291
+ */
292
+ scheduleServerRestart(serverName) {
293
+ if (!this.autoRestartConfig.enabled) {
294
+ console.log(`[${serverName}] Auto-restart disabled, not scheduling restart`);
295
+ return;
296
+ }
297
+ let restartInfo = this.restartAttempts.get(serverName);
298
+ if (!restartInfo) {
299
+ restartInfo = {
300
+ count: 0,
301
+ lastAttempt: 0,
302
+ nextRetryTime: 0,
303
+ };
304
+ this.restartAttempts.set(serverName, restartInfo);
305
+ }
306
+ // Check if we've exceeded max retries
307
+ if (restartInfo.count >= this.autoRestartConfig.maxRetries) {
308
+ console.error(`[${serverName}] Max restart attempts (${this.autoRestartConfig.maxRetries}) reached, giving up`);
309
+ this.emit("server:restart-limit-reached", {
310
+ serverName,
311
+ attempts: restartInfo.count,
312
+ });
313
+ this.restartAttempts.delete(serverName);
314
+ return;
315
+ }
316
+ // Calculate backoff delay
317
+ const delay = this.calculateBackoffDelay(restartInfo.count);
318
+ const nextRetryTime = Date.now() + delay;
319
+ restartInfo.count++;
320
+ restartInfo.lastAttempt = Date.now();
321
+ restartInfo.nextRetryTime = nextRetryTime;
322
+ console.log(`[${serverName}] Scheduling restart attempt ${restartInfo.count}/${this.autoRestartConfig.maxRetries} in ${delay}ms`);
323
+ this.emit("server:restart-scheduled", {
324
+ serverName,
325
+ attempt: restartInfo.count,
326
+ delay,
327
+ });
328
+ // Schedule restart
329
+ restartInfo.restartTimer = setTimeout(async () => {
330
+ await this.attemptServerRestart(serverName);
331
+ }, delay);
332
+ }
333
+ /**
334
+ * Calculate backoff delay with exponential backoff
335
+ */
336
+ calculateBackoffDelay(attemptNumber) {
337
+ const { baseDelay, maxDelay, backoffMultiplier } = this.autoRestartConfig;
338
+ const delay = baseDelay * Math.pow(backoffMultiplier, attemptNumber);
339
+ return Math.min(delay, maxDelay);
340
+ }
341
+ /**
342
+ * Attempt to restart a server
343
+ */
344
+ async attemptServerRestart(serverName) {
345
+ console.log(`[${serverName}] Attempting restart...`);
346
+ try {
347
+ // Note: We need the config to restart. This is a limitation of the refactor.
348
+ // The ServerManager (parent) will need to provide the config.
349
+ this.emit("server:restart-requested", { serverName });
350
+ }
351
+ catch (error) {
352
+ console.error(`[${serverName}] Restart failed:`, error);
353
+ this.emit("server:restart-failed", {
354
+ serverName,
355
+ error: error.message,
356
+ });
357
+ // Schedule another attempt
358
+ this.scheduleServerRestart(serverName);
359
+ }
360
+ }
361
+ /**
362
+ * Acquire startup mutex to prevent race conditions
363
+ */
364
+ async acquireStartupMutex(serverName) {
365
+ const existing = this.startupMutex.get(serverName);
366
+ if (existing) {
367
+ // Wait for existing startup to complete
368
+ existing.callerCount++;
369
+ console.log(`[${serverName}] Waiting for existing startup (${existing.callerCount} concurrent callers)`);
370
+ await existing.promise;
371
+ existing.callerCount--;
372
+ return;
373
+ }
374
+ // Create new mutex
375
+ let resolve;
376
+ const promise = new Promise((r) => {
377
+ resolve = r;
378
+ });
379
+ this.startupMutex.set(serverName, {
380
+ promise,
381
+ startTime: Date.now(),
382
+ callerCount: 1,
383
+ });
384
+ // Return release function
385
+ return;
386
+ }
387
+ /**
388
+ * Release startup mutex
389
+ */
390
+ releaseStartupMutex(serverName) {
391
+ const mutex = this.startupMutex.get(serverName);
392
+ if (mutex) {
393
+ // Resolve the promise to unblock waiters
394
+ mutex.callerCount--;
395
+ if (mutex.callerCount <= 0) {
396
+ this.startupMutex.delete(serverName);
397
+ }
398
+ }
399
+ }
400
+ /**
401
+ * Get stdout buffer for a server
402
+ */
403
+ getStdoutBuffer(serverName) {
404
+ return this.stdoutBuffers.get(serverName) || "";
405
+ }
406
+ /**
407
+ * Append to stdout buffer
408
+ */
409
+ appendStdoutBuffer(serverName, data) {
410
+ const current = this.stdoutBuffers.get(serverName) || "";
411
+ this.stdoutBuffers.set(serverName, current + data);
412
+ }
413
+ /**
414
+ * Clean up all resources
415
+ */
416
+ async cleanup() {
417
+ console.log("[ProcessManager] Cleaning up...");
418
+ // Stop all health checks
419
+ for (const [serverName, interval] of this.healthCheckIntervals) {
420
+ clearInterval(interval);
421
+ console.log(`[${serverName}] Health check stopped`);
422
+ }
423
+ this.healthCheckIntervals.clear();
424
+ // Clear all restart timers
425
+ for (const [serverName, restartInfo] of this.restartAttempts) {
426
+ if (restartInfo.restartTimer) {
427
+ clearTimeout(restartInfo.restartTimer);
428
+ console.log(`[${serverName}] Restart timer cleared`);
429
+ }
430
+ }
431
+ this.restartAttempts.clear();
432
+ // Stop all processes
433
+ const stopPromises = Array.from(this.processes.keys()).map((serverName) => this.stopServer(serverName).catch((error) => {
434
+ console.error(`[${serverName}] Error stopping during cleanup:`, error);
435
+ }));
436
+ await Promise.all(stopPromises);
437
+ this.startupMutex.clear();
438
+ this.stdoutBuffers.clear();
439
+ this.serverStates.clear();
440
+ console.log("[ProcessManager] Cleanup complete");
441
+ }
442
+ }
443
+ //# sourceMappingURL=ProcessManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProcessManager.js","sourceRoot":"","sources":["../../../src/server/managers/ProcessManager.ts"],"names":[],"mappings":"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"}