@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,291 @@
1
+ /**
2
+ * v1.2.0: Batch Executor Module
3
+ * Handles parallel tool execution with dependency resolution and error handling
4
+ */
5
+ /**
6
+ * Batch executor - handles parallel and sequential task execution
7
+ */
8
+ export class BatchExecutor {
9
+ /**
10
+ * Execute a batch of tasks with dependency resolution
11
+ */
12
+ static async executeBatch(request, toolExecutor) {
13
+ const startTime = Date.now();
14
+ const results = [];
15
+ const taskMap = new Map(request.tasks.map(t => [t.id, t]));
16
+ const resultMap = new Map();
17
+ const errors = [];
18
+ try {
19
+ // Validate and build dependency graph
20
+ const depGraph = this.buildDependencyGraph(request.tasks);
21
+ // Get execution order (topological sort)
22
+ const executionOrder = this.topologicalSort(depGraph);
23
+ // Execute tasks
24
+ const parallel = request.options?.parallel !== false;
25
+ const batchTimeout = request.options?.timeout || 60000;
26
+ const stopOnError = request.options?.stopOnError === true;
27
+ let theoreticalDuration = 0;
28
+ const startTimes = new Map();
29
+ const endTimes = new Map();
30
+ if (parallel) {
31
+ // Execute independent tasks concurrently
32
+ await this.executeParallel(executionOrder, taskMap, depGraph, resultMap, toolExecutor, stopOnError, batchTimeout, startTimes, endTimes, errors);
33
+ // Calculate parallelism savings
34
+ theoreticalDuration = Math.max(...Array.from(endTimes.values()).map(t => t - (Math.min(...Array.from(startTimes.values())) || 0)));
35
+ }
36
+ else {
37
+ // Execute tasks sequentially
38
+ for (const taskId of executionOrder) {
39
+ if (stopOnError && errors.length > 0)
40
+ break;
41
+ const task = taskMap.get(taskId);
42
+ if (!task)
43
+ continue;
44
+ const result = await this.executeTask(task, toolExecutor);
45
+ resultMap.set(taskId, result);
46
+ if (result.status === 'error') {
47
+ errors.push({ taskId, error: result.error?.message || 'Unknown error' });
48
+ }
49
+ }
50
+ }
51
+ // Collect results in request order
52
+ for (const task of request.tasks) {
53
+ const result = resultMap.get(task.id);
54
+ if (result) {
55
+ results.push(result);
56
+ }
57
+ }
58
+ const totalDuration = Date.now() - startTime;
59
+ const successCount = results.filter(r => r.status === 'success').length;
60
+ const errorCount = results.filter(r => r.status === 'error').length;
61
+ const skippedCount = results.filter(r => r.status === 'skipped').length;
62
+ // Calculate parallelism savings
63
+ let parallelismSavings = 0;
64
+ if (parallel && theoreticalDuration > 0) {
65
+ const sequentialEstimate = results.reduce((sum, r) => sum + r.duration, 0);
66
+ parallelismSavings = ((sequentialEstimate - totalDuration) / sequentialEstimate) * 100;
67
+ }
68
+ return {
69
+ id: request.id,
70
+ results,
71
+ stats: {
72
+ totalDuration,
73
+ successCount,
74
+ errorCount,
75
+ skippedCount,
76
+ parallelismSavings: Math.max(0, parallelismSavings)
77
+ },
78
+ ...(errors.length > 0 ? { errors } : {})
79
+ };
80
+ }
81
+ catch (error) {
82
+ throw new Error(`Batch execution failed: ${error.message}`);
83
+ }
84
+ }
85
+ /**
86
+ * Build dependency graph from tasks
87
+ */
88
+ static buildDependencyGraph(tasks) {
89
+ const graph = new Map();
90
+ // Initialize nodes
91
+ for (const task of tasks) {
92
+ graph.set(task.id, {
93
+ taskId: task.id,
94
+ dependencies: new Set(task.dependsOn || []),
95
+ dependents: new Set()
96
+ });
97
+ }
98
+ // Build reverse edges (dependents)
99
+ for (const task of tasks) {
100
+ if (task.dependsOn) {
101
+ for (const depId of task.dependsOn) {
102
+ const depNode = graph.get(depId);
103
+ if (depNode) {
104
+ depNode.dependents.add(task.id);
105
+ }
106
+ }
107
+ }
108
+ }
109
+ // Detect circular dependencies
110
+ this.detectCircularDependencies(graph);
111
+ return graph;
112
+ }
113
+ /**
114
+ * Detect circular dependencies in the graph
115
+ */
116
+ static detectCircularDependencies(graph) {
117
+ const visited = new Set();
118
+ const visiting = new Set();
119
+ const dfs = (nodeId) => {
120
+ if (visited.has(nodeId))
121
+ return;
122
+ if (visiting.has(nodeId)) {
123
+ throw new Error(`Circular dependency detected involving task: ${nodeId}`);
124
+ }
125
+ visiting.add(nodeId);
126
+ const node = graph.get(nodeId);
127
+ if (node) {
128
+ for (const depId of node.dependencies) {
129
+ dfs(depId);
130
+ }
131
+ }
132
+ visiting.delete(nodeId);
133
+ visited.add(nodeId);
134
+ };
135
+ for (const taskId of graph.keys()) {
136
+ if (!visited.has(taskId)) {
137
+ dfs(taskId);
138
+ }
139
+ }
140
+ }
141
+ /**
142
+ * Topological sort of task dependencies
143
+ */
144
+ static topologicalSort(graph) {
145
+ const result = [];
146
+ const visited = new Set();
147
+ const visiting = new Set();
148
+ const visit = (nodeId) => {
149
+ if (visited.has(nodeId))
150
+ return;
151
+ if (visiting.has(nodeId)) {
152
+ throw new Error(`Circular dependency detected involving task: ${nodeId}`);
153
+ }
154
+ visiting.add(nodeId);
155
+ const node = graph.get(nodeId);
156
+ if (node) {
157
+ for (const depId of node.dependencies) {
158
+ visit(depId);
159
+ }
160
+ }
161
+ visiting.delete(nodeId);
162
+ visited.add(nodeId);
163
+ result.push(nodeId);
164
+ };
165
+ for (const taskId of graph.keys()) {
166
+ if (!visited.has(taskId)) {
167
+ visit(taskId);
168
+ }
169
+ }
170
+ return result;
171
+ }
172
+ /**
173
+ * Execute independent tasks in parallel
174
+ */
175
+ static async executeParallel(executionOrder, taskMap, depGraph, resultMap, toolExecutor, stopOnError, batchTimeout, startTimes, endTimes, errors) {
176
+ const completed = new Set();
177
+ const batchStartTime = Date.now();
178
+ for (const taskId of executionOrder) {
179
+ // Check batch timeout
180
+ if (Date.now() - batchStartTime > batchTimeout) {
181
+ throw new Error(`Batch timeout exceeded (${batchTimeout}ms)`);
182
+ }
183
+ // Check if dependencies are met
184
+ const node = depGraph.get(taskId);
185
+ if (node && node.dependencies.size > 0) {
186
+ const unmetDeps = Array.from(node.dependencies).filter(d => !completed.has(d));
187
+ if (unmetDeps.length > 0) {
188
+ // Wait for dependencies
189
+ continue;
190
+ }
191
+ }
192
+ const task = taskMap.get(taskId);
193
+ if (!task)
194
+ continue;
195
+ if (stopOnError && errors.length > 0) {
196
+ resultMap.set(taskId, {
197
+ taskId,
198
+ status: 'skipped',
199
+ duration: 0,
200
+ attempt: 1
201
+ });
202
+ continue;
203
+ }
204
+ startTimes.set(taskId, Date.now());
205
+ const result = await this.executeTask(task, toolExecutor);
206
+ endTimes.set(taskId, Date.now());
207
+ resultMap.set(taskId, result);
208
+ completed.add(taskId);
209
+ if (result.status === 'error') {
210
+ errors.push({ taskId, error: result.error?.message || 'Unknown error' });
211
+ }
212
+ }
213
+ }
214
+ /**
215
+ * Execute a single task with retry logic
216
+ */
217
+ static async executeTask(task, toolExecutor) {
218
+ const startTime = Date.now();
219
+ const maxRetries = task.retryCount || 0;
220
+ let lastError = null;
221
+ for (let attempt = 1; attempt <= maxRetries + 1; attempt++) {
222
+ try {
223
+ const result = await toolExecutor(task.tool, task.arguments, task.timeout);
224
+ return {
225
+ taskId: task.id,
226
+ status: 'success',
227
+ result,
228
+ duration: Date.now() - startTime,
229
+ attempt
230
+ };
231
+ }
232
+ catch (error) {
233
+ lastError = error;
234
+ if (attempt < maxRetries + 1) {
235
+ // Exponential backoff: 100ms * 2^(attempt-1)
236
+ const delay = 100 * Math.pow(2, attempt - 1);
237
+ await new Promise(resolve => setTimeout(resolve, delay));
238
+ }
239
+ }
240
+ }
241
+ // All retries exhausted
242
+ return {
243
+ taskId: task.id,
244
+ status: 'error',
245
+ error: {
246
+ code: 'TOOL_EXECUTION_FAILED',
247
+ message: lastError?.message || 'Tool execution failed',
248
+ data: lastError
249
+ },
250
+ duration: Date.now() - startTime,
251
+ attempt: maxRetries + 1
252
+ };
253
+ }
254
+ }
255
+ /**
256
+ * Helper: Resolve output references in task arguments
257
+ * Example: "${task-1.result.id}" refers to task-1's result.id
258
+ */
259
+ export function resolveOutputReferences(arguments_, resultMap) {
260
+ const resolved = {};
261
+ for (const [key, value] of Object.entries(arguments_)) {
262
+ if (typeof value === 'string' && value.startsWith('${') && value.endsWith('}')) {
263
+ // Parse reference: ${taskId.resultPath}
264
+ const refContent = value.slice(2, -1); // Remove ${ and }
265
+ const [taskId, ...pathParts] = refContent.split('.');
266
+ const taskResult = resultMap.get(taskId);
267
+ if (taskResult && taskResult.status === 'success') {
268
+ // Navigate through result object
269
+ let current = taskResult.result;
270
+ for (const part of pathParts) {
271
+ if (current && typeof current === 'object') {
272
+ current = current[part];
273
+ }
274
+ else {
275
+ current = undefined;
276
+ break;
277
+ }
278
+ }
279
+ resolved[key] = current;
280
+ }
281
+ else {
282
+ resolved[key] = null; // Reference to failed task
283
+ }
284
+ }
285
+ else {
286
+ resolved[key] = value;
287
+ }
288
+ }
289
+ return resolved;
290
+ }
291
+ //# sourceMappingURL=batch-executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batch-executor.js","sourceRoot":"","sources":["../../src/server/batch-executor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,215 @@
1
+ /**
2
+ * Circuit Breaker Implementation for MetaLink
3
+ *
4
+ * Prevents cascade failures by monitoring server health and temporarily
5
+ * blocking requests to failing servers. Implements the Circuit Breaker pattern
6
+ * with three states: CLOSED, OPEN, and HALF_OPEN.
7
+ *
8
+ * @see https://martinfowler.com/bliki/CircuitBreaker.html
9
+ */
10
+ /**
11
+ * Circuit breaker states
12
+ *
13
+ * - CLOSED: Normal operation, requests flow through
14
+ * - OPEN: Server is failing, requests blocked immediately
15
+ * - HALF_OPEN: Testing if server has recovered, limited requests allowed
16
+ */
17
+ export declare enum CircuitState {
18
+ CLOSED = "CLOSED",
19
+ OPEN = "OPEN",
20
+ HALF_OPEN = "HALF_OPEN"
21
+ }
22
+ /**
23
+ * Circuit breaker configuration options
24
+ */
25
+ export interface CircuitBreakerConfig {
26
+ /**
27
+ * Number of consecutive failures before opening circuit
28
+ * @default 3
29
+ */
30
+ failureThreshold?: number;
31
+ /**
32
+ * Time in milliseconds before attempting to close circuit after opening
33
+ * @default 30000 (30 seconds)
34
+ */
35
+ resetTimeout?: number;
36
+ /**
37
+ * Number of consecutive successes in HALF_OPEN state to close circuit
38
+ * @default 1
39
+ */
40
+ halfOpenSuccessThreshold?: number;
41
+ /**
42
+ * Optional callback invoked when circuit state changes
43
+ */
44
+ onStateChange?: (oldState: CircuitState, newState: CircuitState, serverName: string) => void;
45
+ }
46
+ /**
47
+ * Circuit breaker metrics for monitoring
48
+ */
49
+ export interface CircuitBreakerMetrics {
50
+ state: CircuitState;
51
+ failures: number;
52
+ successes: number;
53
+ lastFailureTime: number | null;
54
+ lastSuccessTime: number | null;
55
+ stateChangedAt: number;
56
+ totalRequests: number;
57
+ rejectedRequests: number;
58
+ }
59
+ /**
60
+ * Circuit Breaker implementation
61
+ *
62
+ * Monitors server health and prevents cascade failures by temporarily blocking
63
+ * requests to failing servers. Automatically recovers when server becomes healthy.
64
+ *
65
+ * @example
66
+ * ```typescript
67
+ * const breaker = new CircuitBreaker('memory-server', {
68
+ * failureThreshold: 3,
69
+ * resetTimeout: 30000,
70
+ * halfOpenSuccessThreshold: 1,
71
+ * });
72
+ *
73
+ * // Before making request
74
+ * if (!breaker.canExecute()) {
75
+ * throw new Error('Circuit breaker is OPEN');
76
+ * }
77
+ *
78
+ * try {
79
+ * const result = await makeRequest();
80
+ * breaker.recordSuccess();
81
+ * return result;
82
+ * } catch (error) {
83
+ * breaker.recordFailure();
84
+ * throw error;
85
+ * }
86
+ * ```
87
+ */
88
+ export declare class CircuitBreaker {
89
+ private readonly serverName;
90
+ private readonly config;
91
+ private state;
92
+ private failureCount;
93
+ private successCount;
94
+ private lastFailureTime;
95
+ private lastSuccessTime;
96
+ private stateChangedAt;
97
+ private resetTimer;
98
+ private totalRequests;
99
+ private rejectedRequests;
100
+ /**
101
+ * Create a new circuit breaker for a server
102
+ *
103
+ * @param serverName - Name of the server being protected
104
+ * @param config - Circuit breaker configuration options
105
+ */
106
+ constructor(serverName: string, config?: CircuitBreakerConfig);
107
+ /**
108
+ * Check if a request can be executed
109
+ *
110
+ * @returns true if request should proceed, false if circuit is OPEN
111
+ */
112
+ canExecute(): boolean;
113
+ /**
114
+ * Record a successful operation
115
+ *
116
+ * Resets failure count and may transition circuit to CLOSED state
117
+ */
118
+ recordSuccess(): void;
119
+ /**
120
+ * Record a failed operation
121
+ *
122
+ * Increments failure count and may transition circuit to OPEN state
123
+ */
124
+ recordFailure(): void;
125
+ /**
126
+ * Get current circuit breaker state
127
+ *
128
+ * @returns Current state (CLOSED, OPEN, or HALF_OPEN)
129
+ */
130
+ getState(): CircuitState;
131
+ /**
132
+ * Get circuit breaker metrics
133
+ *
134
+ * @returns Current metrics including state, failure count, etc.
135
+ */
136
+ getMetrics(): CircuitBreakerMetrics;
137
+ /**
138
+ * Manually reset the circuit breaker to CLOSED state
139
+ *
140
+ * Use with caution - typically only for testing or administrative override
141
+ */
142
+ reset(): void;
143
+ /**
144
+ * Check if enough time has passed to attempt reset
145
+ *
146
+ * @returns true if reset timeout has elapsed
147
+ */
148
+ private shouldAttemptReset;
149
+ /**
150
+ * Transition to a new circuit state
151
+ *
152
+ * @param newState - Target state
153
+ */
154
+ private transitionTo;
155
+ /**
156
+ * Clean up resources
157
+ *
158
+ * Call this when circuit breaker is no longer needed
159
+ */
160
+ destroy(): void;
161
+ }
162
+ /**
163
+ * Circuit Breaker Manager
164
+ *
165
+ * Manages multiple circuit breakers for different servers.
166
+ * Provides centralized monitoring and control.
167
+ */
168
+ export declare class CircuitBreakerManager {
169
+ private breakers;
170
+ private readonly defaultConfig;
171
+ /**
172
+ * Create a new circuit breaker manager
173
+ *
174
+ * @param defaultConfig - Default configuration for all circuit breakers
175
+ */
176
+ constructor(defaultConfig?: CircuitBreakerConfig);
177
+ /**
178
+ * Get or create a circuit breaker for a server
179
+ *
180
+ * @param serverName - Name of the server
181
+ * @param config - Optional server-specific configuration
182
+ * @returns Circuit breaker instance
183
+ */
184
+ getBreaker(serverName: string, config?: CircuitBreakerConfig): CircuitBreaker;
185
+ /**
186
+ * Get all circuit breakers
187
+ *
188
+ * @returns Map of server names to circuit breakers
189
+ */
190
+ getAllBreakers(): Map<string, CircuitBreaker>;
191
+ /**
192
+ * Get aggregated metrics for all circuit breakers
193
+ *
194
+ * @returns Array of metrics for all servers
195
+ */
196
+ getAllMetrics(): Array<{
197
+ serverName: string;
198
+ metrics: CircuitBreakerMetrics;
199
+ }>;
200
+ /**
201
+ * Reset a specific circuit breaker
202
+ *
203
+ * @param serverName - Name of the server
204
+ */
205
+ reset(serverName: string): void;
206
+ /**
207
+ * Reset all circuit breakers
208
+ */
209
+ resetAll(): void;
210
+ /**
211
+ * Clean up all circuit breakers
212
+ */
213
+ destroy(): void;
214
+ }
215
+ //# sourceMappingURL=circuit-breaker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"circuit-breaker.d.ts","sourceRoot":"","sources":["../../src/server/circuit-breaker.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;;;;GAMG;AACH,oBAAY,YAAY;IACtB,MAAM,WAAW;IACjB,IAAI,SAAS;IACb,SAAS,cAAc;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAElC;;OAEG;IACH,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9F;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,YAAY,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiC;IAExD,OAAO,CAAC,KAAK,CAAqC;IAClD,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,cAAc,CAAsB;IAC5C,OAAO,CAAC,UAAU,CAA+B;IAGjD,OAAO,CAAC,aAAa,CAAa;IAClC,OAAO,CAAC,gBAAgB,CAAa;IAErC;;;;;OAKG;gBACS,UAAU,EAAE,MAAM,EAAE,MAAM,GAAE,oBAAyB;IAUjE;;;;OAIG;IACH,UAAU,IAAI,OAAO;IA0BrB;;;;OAIG;IACH,aAAa,IAAI,IAAI;IAyBrB;;;;OAIG;IACH,aAAa,IAAI,IAAI;IAuBrB;;;;OAIG;IACH,QAAQ,IAAI,YAAY;IAIxB;;;;OAIG;IACH,UAAU,IAAI,qBAAqB;IAanC;;;;OAIG;IACH,KAAK,IAAI,IAAI;IAQb;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAS1B;;;;OAIG;IACH,OAAO,CAAC,YAAY;IAmCpB;;;;OAIG;IACH,OAAO,IAAI,IAAI;CAMhB;AAED;;;;;GAKG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAA0C;IAC1D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAuB;IAErD;;;;OAIG;gBACS,aAAa,GAAE,oBAAyB;IAIpD;;;;;;OAMG;IACH,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,oBAAoB,GAAG,cAAc;IAY7E;;;;OAIG;IACH,cAAc,IAAI,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC;IAI7C;;;;OAIG;IACH,aAAa,IAAI,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,qBAAqB,CAAA;KAAE,CAAC;IAa9E;;;;OAIG;IACH,KAAK,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAO/B;;OAEG;IACH,QAAQ,IAAI,IAAI;IAMhB;;OAEG;IACH,OAAO,IAAI,IAAI;CAMhB"}