@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 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAYzB,CAAC;AAEF;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,cAAc,CAE9D;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAEjD"}
@@ -0,0 +1,267 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * Health check configuration schema - common to both stdio and HTTP servers
4
+ */
5
+ export const HealthCheckSchema = z.object({
6
+ enabled: z.boolean().optional().default(true),
7
+ interval: z.number().int().positive().optional().default(30000), // 30 seconds
8
+ timeout: z.number().int().positive().optional().default(5000), // 5 seconds
9
+ });
10
+ /**
11
+ * Authentication schema for HTTP servers
12
+ */
13
+ export const HttpAuthSchema = z.object({
14
+ type: z.enum(['bearer', 'oauth2', 'api-key']).optional().default('bearer'),
15
+ token: z.string().optional(), // Can use ${secret:token_name} syntax
16
+ headerName: z.string().optional().default('Authorization'),
17
+ clientId: z.string().optional(), // For OAuth2
18
+ clientSecret: z.string().optional(), // For OAuth2
19
+ }).optional();
20
+ /**
21
+ * Session management schema for HTTP servers
22
+ */
23
+ export const HttpSessionSchema = z.object({
24
+ enabled: z.boolean().optional().default(true),
25
+ headerName: z.string().optional().default('Mcp-Session-Id'),
26
+ allowClientTermination: z.boolean().optional().default(false),
27
+ }).optional();
28
+ /**
29
+ * CORS schema for HTTP servers
30
+ */
31
+ export const HttpCorsSchema = z.object({
32
+ enabled: z.boolean().optional().default(false),
33
+ allowOrigin: z.string().optional().default('*'),
34
+ }).optional();
35
+ export const ServerSafetySchema = z.enum(['safe', 'risky', 'default']).optional()
36
+ .describe('Server-level safety: "safe" = all tools safe, "risky" = all tools risky, "default" = use tool-level classification (default)');
37
+ /**
38
+ * Stdio (command-based) server configuration
39
+ */
40
+ export const StdioServerConfigSchema = z.object({
41
+ name: z.string().min(1, 'Server name is required'),
42
+ transport: z.literal('stdio').optional().default('stdio'),
43
+ command: z.string().min(1, 'Command is required for stdio servers'),
44
+ args: z.array(z.string()).optional().default([]),
45
+ env: z.record(z.string()).optional().default({}),
46
+ cwd: z.string().optional()
47
+ .describe('Working directory for the server process (default: daemon working directory). Use ~ for home directory.'),
48
+ healthCheck: HealthCheckSchema.optional().default({}),
49
+ // v1.3.x: Server-level safety classification (optional, defaults to 'default')
50
+ safety: ServerSafetySchema,
51
+ });
52
+ /**
53
+ * HTTP (remote) server configuration
54
+ */
55
+ export const HttpServerConfigSchema = z.object({
56
+ name: z.string().min(1, 'Server name is required'),
57
+ transport: z.enum(['http', 'sse', 'sse-first', 'http-stream']),
58
+ url: z.string().url('URL must be a valid HTTP(S) endpoint'),
59
+ auth: HttpAuthSchema,
60
+ session: HttpSessionSchema,
61
+ cors: HttpCorsSchema,
62
+ env: z.record(z.string()).optional().default({}), // For additional environment context
63
+ healthCheck: HealthCheckSchema.optional().default({}),
64
+ // v1.3.x: Server-level safety classification
65
+ safety: ServerSafetySchema,
66
+ // P1: Timeout configuration
67
+ requestTimeoutMs: z.number().int().positive().optional()
68
+ .default(30000)
69
+ .describe('Per-request timeout in milliseconds (default 30s)'),
70
+ streamTimeoutMs: z.number().int().positive().optional()
71
+ .default(120000)
72
+ .describe('SSE/HTTP-stream response timeout in milliseconds (default 2min)'),
73
+ connectTimeoutMs: z.number().int().positive().optional()
74
+ .default(10000)
75
+ .describe('Connection initialization timeout in milliseconds (default 10s)'),
76
+ });
77
+ /**
78
+ * Server configuration schema - supports both stdio and HTTP transports
79
+ * Uses discriminated union to enforce correct fields per transport type
80
+ */
81
+ export const ServerConfigSchema = z.discriminatedUnion('transport', [
82
+ StdioServerConfigSchema,
83
+ HttpServerConfigSchema,
84
+ ]);
85
+ /**
86
+ * Daemon configuration schema
87
+ * Defines HTTP server, authentication, rate limiting settings
88
+ */
89
+ export const DaemonConfigSchema = z.object({
90
+ port: z.number().int().min(1).max(65535).optional().default(3000),
91
+ host: z.string().optional().default('0.0.0.0'),
92
+ logLevel: z.enum(['debug', 'info', 'warn', 'error']).optional().default('info'),
93
+ auth: z.object({
94
+ enabled: z.boolean().optional().default(false),
95
+ type: z.enum(['bearer', 'api-key']).optional().default('bearer'),
96
+ secret: z.string().optional(), // ${secret:auth_secret}
97
+ }).optional().default({}),
98
+ rateLimit: z.object({
99
+ enabled: z.boolean().optional().default(true),
100
+ windowMs: z.number().int().positive().optional().default(60000), // 1 minute
101
+ max: z.number().int().positive().optional().default(500), // 500 requests per minute
102
+ keyGenerator: z.enum(['ip', 'user']).optional().default('ip'),
103
+ }).optional().default({}),
104
+ });
105
+ /**
106
+ * Plugin configuration schema
107
+ * Allows extending functionality via before/after hooks
108
+ */
109
+ export const PluginConfigSchema = z.object({
110
+ name: z.string().min(1),
111
+ enabled: z.boolean().optional().default(true),
112
+ path: z.string().optional(), // Path to plugin module
113
+ config: z.record(z.unknown()).optional().default({}),
114
+ });
115
+ /**
116
+ * Profile configuration schema
117
+ * Supports multi-environment configurations (dev, prod, staging)
118
+ */
119
+ export const ProfileConfigSchema = z.object({
120
+ name: z.string().min(1),
121
+ description: z.string().optional(),
122
+ daemon: DaemonConfigSchema.optional(),
123
+ servers: z.array(ServerConfigSchema).optional().default([]),
124
+ environment: z.record(z.string()).optional().default({}),
125
+ });
126
+ /**
127
+ * Root configuration schema
128
+ * Complete metalink.config.yaml/json structure
129
+ */
130
+ export const MetalinkConfigSchema = z.object({
131
+ version: z.string().optional().default('1.0.0'),
132
+ description: z.string().optional(),
133
+ daemon: DaemonConfigSchema.optional(),
134
+ servers: z.array(ServerConfigSchema).optional().default([]),
135
+ plugins: z.array(PluginConfigSchema).optional().default([]),
136
+ profiles: z.array(ProfileConfigSchema).optional().default([]),
137
+ // Global environment variables (interpolated in server env)
138
+ environment: z.record(z.string()).optional().default({}),
139
+ // Secrets configuration
140
+ secrets: z.object({
141
+ provider: z.enum(['env', 'keyring', 'vault']).optional().default('env'),
142
+ keyringService: z.string().optional().default('metalink'),
143
+ }).optional().default({}),
144
+ // Schema caching configuration (in milliseconds)
145
+ schemasCacheTTL: z.number().int().positive().optional().default(300000), // 5 minutes default
146
+ // Schema cache directory path (v1.3.62: global cache across versions)
147
+ schemasCachePath: z.string().optional().default('~/.config/metalink/schemas'),
148
+ // Maximum number of schemas to keep in memory (LRU eviction)
149
+ maxSchemaCacheEntries: z.number().int().positive().optional().default(100),
150
+ // Enable background refresh of schemas
151
+ schemasBackgroundRefresh: z.boolean().optional().default(true),
152
+ // Enable background population of missing schemas (v1.3.62)
153
+ backgroundSchemaPopulation: z.boolean().optional().default(false),
154
+ // Base servers to auto-start on daemon init (always available and instant)
155
+ // If not specified, no servers are auto-started
156
+ base_servers: z.array(z.string()).optional(),
157
+ // Auto-start base servers on daemon init (default: true)
158
+ // When true: base servers start immediately for instant availability
159
+ // When false: base servers behave like regular servers (on-demand start)
160
+ base_servers_auto_start: z.boolean().optional().default(true),
161
+ // Expose base server tools in tools/list (default: false for token optimization)
162
+ // When false: base servers pre-started but tools hidden (optimal tokens + instant availability)
163
+ // When true: base server tools exposed in tools/list (legacy behavior)
164
+ base_servers_auto_expose_tools: z.boolean().optional().default(false),
165
+ // Tool safety classification rules for execute_tool vs execute_tool_confirm
166
+ toolSafetyRules: z.object({
167
+ // Regex patterns for safe operations (read-only)
168
+ safePatterns: z.array(z.string()).optional(),
169
+ // Regex patterns for risky operations (write/destructive)
170
+ riskyPatterns: z.array(z.string()).optional(),
171
+ // Explicit safe tool overrides (server:tool format, supports wildcards)
172
+ safeToolOverrides: z.array(z.string()).optional(),
173
+ // Explicit risky tool overrides (server:tool format, supports wildcards)
174
+ riskyToolOverrides: z.array(z.string()).optional(),
175
+ // v1.1.29: Argument-level inspection for command-based tools
176
+ argumentInspectionRules: z.array(z.object({
177
+ // Tool identifier (e.g., "ssh:runRemoteCommand")
178
+ tool: z.string(),
179
+ // Which argument field to inspect (e.g., "command")
180
+ argumentField: z.string(),
181
+ // Safe command patterns (regex applied to argument value)
182
+ safeCommandPatterns: z.array(z.string()).optional(),
183
+ // Risky command patterns (regex applied to argument value)
184
+ riskyCommandPatterns: z.array(z.string()).optional(),
185
+ // Whitelist mode: if true, only safeCommandPatterns are allowed
186
+ whitelistMode: z.boolean().optional().default(false),
187
+ // v1.1.55: Optional field mode - if field is missing, skip inspection (return null)
188
+ // Use for tools with multiple modes (e.g., metabase:execute with SQL or card_id)
189
+ optionalField: z.boolean().optional().default(false),
190
+ })).optional(),
191
+ }).optional(),
192
+ // Discovery TTL (v1.4.0): Time in milliseconds before discovered tools expire
193
+ // Default: 600000 (10 minutes). Set to 0 to disable expiration.
194
+ // Discovered tools are removed from tools/list after TTL of inactivity.
195
+ // Tool calls reset the timer (activity refresh pattern).
196
+ discoveryTTL: z.number().optional(),
197
+ // Dynamic tool exposure (v1.3.51 - Speakeasy optimization):
198
+ // false (default): Only expose 4 meta-tools (search_tools, describe_tool, execute_tool, execute_tool_confirm)
199
+ // Reduces token usage to ~280 tokens (fixed, regardless of server count)
200
+ // true: Expose all discovered tools dynamically in tools/list (original behavior)
201
+ // Token usage scales with discovery: 280 + (N servers × M tools × 70 tokens)
202
+ dynamicToolExposure: z.boolean().optional().default(false),
203
+ // Timeout configuration (in milliseconds)
204
+ timeouts: z.object({
205
+ // Server initialization timeout - time to wait for server to start and respond
206
+ serverInit: z.number().int().positive().optional().default(10000), // 10s
207
+ // Tool fetch timeout - time to wait for server to return tools/list
208
+ toolFetch: z.number().int().positive().optional().default(60000), // 60s
209
+ // Tool execution timeout - time to wait for tool execution to complete
210
+ toolExecution: z.number().int().positive().optional().default(300000), // 5min
211
+ // Graceful shutdown timeout - time to wait for server to shutdown gracefully before SIGKILL
212
+ gracefulShutdown: z.number().int().positive().optional().default(5000), // 5s
213
+ }).optional().default({}),
214
+ // Circuit breaker configuration for preventing cascade failures
215
+ circuitBreaker: z.object({
216
+ // Number of consecutive failures before opening circuit
217
+ failureThreshold: z.number().int().positive().optional().default(3),
218
+ // Time in milliseconds before attempting to close circuit after opening
219
+ resetTimeout: z.number().int().positive().optional().default(30000), // 30s
220
+ // Number of consecutive successes in HALF_OPEN state to close circuit
221
+ halfOpenSuccessThreshold: z.number().int().positive().optional().default(1),
222
+ }).optional().default({}),
223
+ // Auto-restart configuration for failed servers
224
+ autoRestart: z.object({
225
+ // Enable auto-restart for failed servers
226
+ enabled: z.boolean().optional().default(true),
227
+ // Maximum number of restart attempts before giving up
228
+ maxRetries: z.number().int().nonnegative().optional().default(3),
229
+ // Base delay in milliseconds for exponential backoff (first retry)
230
+ baseDelay: z.number().int().positive().optional().default(5000), // 5s
231
+ // Maximum delay in milliseconds between restart attempts
232
+ maxDelay: z.number().int().positive().optional().default(300000), // 5 minutes
233
+ // Multiplier for exponential backoff (delay = baseDelay * multiplier^attempt)
234
+ backoffMultiplier: z.number().positive().optional().default(2),
235
+ }).optional().default({}),
236
+ });
237
+ /**
238
+ * Export all schemas for use in loader
239
+ */
240
+ export const ConfigSchemas = {
241
+ ServerConfig: ServerConfigSchema,
242
+ StdioServerConfig: StdioServerConfigSchema,
243
+ HttpServerConfig: HttpServerConfigSchema,
244
+ HealthCheck: HealthCheckSchema,
245
+ HttpAuth: HttpAuthSchema,
246
+ HttpSession: HttpSessionSchema,
247
+ HttpCors: HttpCorsSchema,
248
+ DaemonConfig: DaemonConfigSchema,
249
+ PluginConfig: PluginConfigSchema,
250
+ ProfileConfig: ProfileConfigSchema,
251
+ MetalinkConfig: MetalinkConfigSchema,
252
+ };
253
+ /**
254
+ * Validates configuration against schema
255
+ * Returns parsed config or throws ZodError
256
+ */
257
+ export function validateConfig(config) {
258
+ return MetalinkConfigSchema.parse(config);
259
+ }
260
+ /**
261
+ * Safely validates configuration without throwing
262
+ * Returns { success: true, data } or { success: false, errors }
263
+ */
264
+ export function validateConfigSafe(config) {
265
+ return MetalinkConfigSchema.safeParse(config);
266
+ }
267
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * MetaLink Daemon
4
+ * Main entry point for the HTTP server
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=daemon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":";AAEA;;;GAGG"}
@@ -0,0 +1,116 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * MetaLink Daemon
4
+ * Main entry point for the HTTP server
5
+ */
6
+ import { config as dotenvConfig } from 'dotenv';
7
+ import path from 'path';
8
+ import { initializeConfigSync, HttpServer, getConfigLoader } from './index.js';
9
+ async function main() {
10
+ try {
11
+ console.log('[MetaLink] Starting daemon...');
12
+ // Load environment variables from ~/.config/metalink/.env
13
+ // This allows credentials to be stored separately from mcp-registry.json
14
+ const envPath = path.join(process.env.HOME || '~', '.config', 'metalink', '.env');
15
+ const envResult = dotenvConfig({ path: envPath });
16
+ if (envResult.parsed) {
17
+ console.log(`[MetaLink] Loaded ${Object.keys(envResult.parsed).length} env vars from ${envPath}`);
18
+ }
19
+ else if (envResult.error && envResult.error.code !== 'ENOENT') {
20
+ console.warn(`[MetaLink] Warning: Could not load .env file: ${envResult.error.message}`);
21
+ }
22
+ // Note: ENOENT (file not found) is silently ignored - .env is optional
23
+ console.log(`[MetaLink] Working directory: ${process.cwd()}`);
24
+ console.log(`[MetaLink] HOME: ${process.env.HOME}`);
25
+ console.log(`[MetaLink] METALINK_CONFIG: ${process.env.METALINK_CONFIG || 'not set'}`);
26
+ // Load configuration
27
+ initializeConfigSync(process.env.METALINK_CONFIG);
28
+ const configLoader = getConfigLoader();
29
+ console.log(`[MetaLink] Configuration loaded successfully`);
30
+ console.log(`[MetaLink] Registry path: ${configLoader['getRegistryPath']?.() || 'unknown'}`);
31
+ // Get daemon settings (check METALINK_PORT first, then PORT for backward compat)
32
+ const daemonConfig = configLoader.getDaemon();
33
+ const port = process.env.METALINK_PORT
34
+ ? parseInt(process.env.METALINK_PORT, 10)
35
+ : (process.env.PORT
36
+ ? parseInt(process.env.PORT, 10)
37
+ : daemonConfig.port || 3000);
38
+ const host = process.env.HOST || daemonConfig.host || '0.0.0.0';
39
+ const branch = process.env.BRANCH || 'unknown';
40
+ const logLevel = daemonConfig.logLevel || 'info';
41
+ // Warn about deprecated PORT variable
42
+ if (process.env.PORT && !process.env.METALINK_PORT) {
43
+ console.warn('⚠️ PORT environment variable is deprecated, use METALINK_PORT instead');
44
+ }
45
+ // Port validation
46
+ if (port < 1024 || port > 65535) {
47
+ throw new Error(`[MetaLink] Invalid METALINK_PORT: ${port}. Must be 1024-65535.`);
48
+ }
49
+ // Conventional port validation (warning only, not enforced)
50
+ const CONVENTIONAL_PORTS = {
51
+ production: 6655,
52
+ staging: 6656
53
+ };
54
+ if (CONVENTIONAL_PORTS[branch] && port !== CONVENTIONAL_PORTS[branch]) {
55
+ console.warn(`⚠️ BRANCH=${branch} conventionally uses port ${CONVENTIONAL_PORTS[branch]}, but METALINK_PORT=${port}`);
56
+ }
57
+ // Log startup context
58
+ console.log(`[MetaLink] Starting daemon on port ${port} (BRANCH: ${branch})`);
59
+ // Set log level
60
+ if (logLevel === 'debug') {
61
+ console.log('[MetaLink] Debug mode enabled');
62
+ }
63
+ // Create and start HTTP server
64
+ console.log('[MetaLink] Creating HTTP server...');
65
+ const httpServer = new HttpServer(configLoader);
66
+ console.log('[MetaLink] HTTP server created successfully');
67
+ // Register signal handlers BEFORE starting server
68
+ // This ensures they're active when daemon starts in background mode
69
+ process.on('SIGINT', async () => {
70
+ console.log('\n[MetaLink] Shutting down gracefully...');
71
+ await httpServer.cleanup();
72
+ process.exit(0);
73
+ });
74
+ process.on('SIGTERM', async () => {
75
+ console.log('[MetaLink] Received SIGTERM, shutting down...');
76
+ await httpServer.cleanup();
77
+ process.exit(0);
78
+ });
79
+ // Start HTTP server FIRST so validation can connect immediately
80
+ console.log(`[MetaLink] Starting HTTP server on ${host}:${port}...`);
81
+ await httpServer.listen(port, host);
82
+ // Initialize base servers in background (non-blocking for faster startup)
83
+ const baseServersAutoStart = configLoader.getConfig().base_servers_auto_start ?? true;
84
+ if (baseServersAutoStart) {
85
+ console.log('[MetaLink] Initializing base servers in background...');
86
+ // Don't await - let base servers initialize while HTTP server is already listening
87
+ httpServer.getServerManager().initializeBaseServers(configLoader)
88
+ .then(() => {
89
+ console.log('[MetaLink] Base servers initialized successfully');
90
+ })
91
+ .catch((error) => {
92
+ console.error('[MetaLink] Error initializing base servers:', error);
93
+ // Base servers are not critical for HTTP server operation
94
+ });
95
+ }
96
+ else {
97
+ console.log('[MetaLink] Base servers auto-start disabled (base_servers_auto_start: false)');
98
+ }
99
+ console.log(`[MetaLink] Daemon started successfully on ${host}:${port}`);
100
+ // Background schema population (v1.3.62) - runs AFTER daemon is fully started
101
+ const backgroundSchemaPopulation = configLoader.getConfig().backgroundSchemaPopulation ?? false;
102
+ if (backgroundSchemaPopulation) {
103
+ console.log('[MetaLink] Background schema population enabled, starting...');
104
+ // Run in background without blocking
105
+ httpServer.getServerManager().populateMissingSchemas(configLoader)
106
+ .then(() => console.log('[MetaLink] Background schema population complete'))
107
+ .catch(error => console.error('[MetaLink] Background schema population failed:', error));
108
+ }
109
+ }
110
+ catch (error) {
111
+ console.error('[MetaLink] Fatal error:', error);
112
+ process.exit(1);
113
+ }
114
+ }
115
+ main();
116
+ //# sourceMappingURL=daemon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon.js","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Retry Logic for HttpClient
3
+ *
4
+ * Provides exponential backoff retry mechanism for transient HTTP failures.
5
+ * This code is meant to be integrated into http-client.ts
6
+ */
7
+ /**
8
+ * HTTP status codes that indicate retryable errors
9
+ */
10
+ declare const RETRYABLE_STATUS_CODES: Set<number>;
11
+ /**
12
+ * HTTP status codes that should never be retried
13
+ */
14
+ declare const NON_RETRYABLE_STATUS_CODES: Set<number>;
15
+ /**
16
+ * Network error patterns that are retryable
17
+ */
18
+ declare const RETRYABLE_ERROR_PATTERNS: string[];
19
+ /**
20
+ * Retry configuration
21
+ */
22
+ interface RetryConfig {
23
+ maxRetries: number;
24
+ initialDelayMs: number;
25
+ maxDelayMs: number;
26
+ jitterMs: number;
27
+ }
28
+ /**
29
+ * Error type with optional status code
30
+ */
31
+ interface HttpError extends Error {
32
+ statusCode?: number;
33
+ isRetryable?: boolean;
34
+ }
35
+ /**
36
+ * Check if an error or response is retryable
37
+ *
38
+ * @param error - Error object or Response
39
+ * @returns true if the error should be retried
40
+ */
41
+ declare function isRetryable(error: Error | Response | HttpError): boolean;
42
+ /**
43
+ * Calculate exponential backoff delay with jitter
44
+ * Formula: min(baseDelay * 2^attempt + random(0, jitter), maxDelay)
45
+ *
46
+ * @param attempt - Retry attempt number (0-based)
47
+ * @param config - Retry configuration
48
+ * @returns Delay in milliseconds
49
+ */
50
+ declare function calculateBackoffDelay(attempt: number, config: RetryConfig): number;
51
+ /**
52
+ * Sleep for specified duration
53
+ * @param ms - Milliseconds to sleep
54
+ */
55
+ declare function sleep(ms: number): Promise<void>;
56
+ /**
57
+ * Execute fetch with exponential backoff retry
58
+ *
59
+ * @param url - URL to fetch
60
+ * @param options - Fetch options
61
+ * @param retryConfig - Retry configuration
62
+ * @returns Response object
63
+ * @throws Error if all retries exhausted
64
+ */
65
+ declare function fetchWithRetry(url: string, options: RequestInit, retryConfig?: RetryConfig): Promise<Response>;
66
+ export { fetchWithRetry, isRetryable, calculateBackoffDelay, sleep, RETRYABLE_STATUS_CODES, NON_RETRYABLE_STATUS_CODES, RETRYABLE_ERROR_PATTERNS, type RetryConfig, type HttpError, };
67
+ //# sourceMappingURL=http-client-retry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-client-retry.d.ts","sourceRoot":"","sources":["../src/http-client-retry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,QAAA,MAAM,sBAAsB,aAA2B,CAAC;AAExD;;GAEG;AACH,QAAA,MAAM,0BAA0B,aAAgC,CAAC;AAEjE;;GAEG;AACH,QAAA,MAAM,wBAAwB,UAO7B,CAAC;AAEF;;GAEG;AACH,UAAU,WAAW;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,UAAU,SAAU,SAAQ,KAAK;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;;;;GAKG;AACH,iBAAS,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,CA2BjE;AAED;;;;;;;GAOG;AACH,iBAAS,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,MAAM,CAK3E;AAED;;;GAGG;AACH,iBAAS,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAExC;AAED;;;;;;;;GAQG;AACH,iBAAe,cAAc,CAC3B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,WAAW,EACpB,WAAW,GAAE,WAKZ,GACA,OAAO,CAAC,QAAQ,CAAC,CAkDnB;AAED,OAAO,EACL,cAAc,EACd,WAAW,EACX,qBAAqB,EACrB,KAAK,EACL,sBAAsB,EACtB,0BAA0B,EAC1B,wBAAwB,EACxB,KAAK,WAAW,EAChB,KAAK,SAAS,GACf,CAAC"}
@@ -0,0 +1,133 @@
1
+ /**
2
+ * Retry Logic for HttpClient
3
+ *
4
+ * Provides exponential backoff retry mechanism for transient HTTP failures.
5
+ * This code is meant to be integrated into http-client.ts
6
+ */
7
+ /**
8
+ * HTTP status codes that indicate retryable errors
9
+ */
10
+ const RETRYABLE_STATUS_CODES = new Set([502, 503, 504]);
11
+ /**
12
+ * HTTP status codes that should never be retried
13
+ */
14
+ const NON_RETRYABLE_STATUS_CODES = new Set([400, 401, 403, 404]);
15
+ /**
16
+ * Network error patterns that are retryable
17
+ */
18
+ const RETRYABLE_ERROR_PATTERNS = [
19
+ 'ECONNREFUSED',
20
+ 'ECONNRESET',
21
+ 'ETIMEDOUT',
22
+ 'EHOSTUNREACH',
23
+ 'ENETUNREACH',
24
+ 'ERR_HTTP2_STREAM_RESET',
25
+ ];
26
+ /**
27
+ * Check if an error or response is retryable
28
+ *
29
+ * @param error - Error object or Response
30
+ * @returns true if the error should be retried
31
+ */
32
+ function isRetryable(error) {
33
+ // Handle Response objects (failed fetch)
34
+ if (error instanceof Response) {
35
+ if (NON_RETRYABLE_STATUS_CODES.has(error.status)) {
36
+ return false;
37
+ }
38
+ return RETRYABLE_STATUS_CODES.has(error.status);
39
+ }
40
+ // Handle Error objects
41
+ if (error instanceof Error) {
42
+ const message = error.message;
43
+ const httpError = error;
44
+ // Check if status code is set (from HTTP response)
45
+ if (httpError.statusCode) {
46
+ if (NON_RETRYABLE_STATUS_CODES.has(httpError.statusCode)) {
47
+ return false;
48
+ }
49
+ return RETRYABLE_STATUS_CODES.has(httpError.statusCode);
50
+ }
51
+ // Check for retryable network error patterns
52
+ return RETRYABLE_ERROR_PATTERNS.some(pattern => message.includes(pattern));
53
+ }
54
+ return false;
55
+ }
56
+ /**
57
+ * Calculate exponential backoff delay with jitter
58
+ * Formula: min(baseDelay * 2^attempt + random(0, jitter), maxDelay)
59
+ *
60
+ * @param attempt - Retry attempt number (0-based)
61
+ * @param config - Retry configuration
62
+ * @returns Delay in milliseconds
63
+ */
64
+ function calculateBackoffDelay(attempt, config) {
65
+ const baseDelay = config.initialDelayMs * Math.pow(2, attempt);
66
+ const jitter = Math.random() * config.jitterMs;
67
+ const delayWithJitter = baseDelay + jitter;
68
+ return Math.min(delayWithJitter, config.maxDelayMs);
69
+ }
70
+ /**
71
+ * Sleep for specified duration
72
+ * @param ms - Milliseconds to sleep
73
+ */
74
+ function sleep(ms) {
75
+ return new Promise(resolve => setTimeout(resolve, ms));
76
+ }
77
+ /**
78
+ * Execute fetch with exponential backoff retry
79
+ *
80
+ * @param url - URL to fetch
81
+ * @param options - Fetch options
82
+ * @param retryConfig - Retry configuration
83
+ * @returns Response object
84
+ * @throws Error if all retries exhausted
85
+ */
86
+ async function fetchWithRetry(url, options, retryConfig = {
87
+ maxRetries: 3,
88
+ initialDelayMs: 100,
89
+ maxDelayMs: 30000,
90
+ jitterMs: 1000,
91
+ }) {
92
+ let lastError = null;
93
+ for (let attempt = 0; attempt <= retryConfig.maxRetries; attempt++) {
94
+ try {
95
+ const response = await fetch(url, options);
96
+ // Success: return immediately
97
+ if (response.ok) {
98
+ return response;
99
+ }
100
+ // Non-retryable status code: throw immediately
101
+ if (!isRetryable(response)) {
102
+ const error = new Error(`HTTP ${response.status}: ${response.statusText}`);
103
+ error.statusCode = response.status;
104
+ throw error;
105
+ }
106
+ // Retryable status code - will retry below
107
+ lastError = response;
108
+ }
109
+ catch (error) {
110
+ lastError = error instanceof Error ? error : new Error(String(error));
111
+ // Non-retryable error: throw immediately
112
+ if (!isRetryable(lastError)) {
113
+ throw lastError;
114
+ }
115
+ }
116
+ // If this was the last attempt, throw
117
+ if (attempt === retryConfig.maxRetries) {
118
+ const message = lastError instanceof Response
119
+ ? `HTTP ${lastError.status} after ${retryConfig.maxRetries} retries`
120
+ : lastError instanceof Error
121
+ ? lastError.message
122
+ : 'Unknown error';
123
+ throw new Error(`Failed to fetch ${url}: ${message}`);
124
+ }
125
+ // Calculate backoff and wait
126
+ const delayMs = calculateBackoffDelay(attempt, retryConfig);
127
+ await sleep(delayMs);
128
+ }
129
+ // Should not reach here, but satisfy TypeScript
130
+ throw lastError || new Error('Unknown error in retry loop');
131
+ }
132
+ export { fetchWithRetry, isRetryable, calculateBackoffDelay, sleep, RETRYABLE_STATUS_CODES, NON_RETRYABLE_STATUS_CODES, RETRYABLE_ERROR_PATTERNS, };
133
+ //# sourceMappingURL=http-client-retry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-client-retry.js","sourceRoot":"","sources":["../src/http-client-retry.ts"],"names":[],"mappings":"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"}