@lagoon-protocol/lagoon-mcp 0.1.0

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 (335) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +618 -0
  3. package/dist/cache/index.d.ts +97 -0
  4. package/dist/cache/index.d.ts.map +1 -0
  5. package/dist/cache/index.js +106 -0
  6. package/dist/cache/index.js.map +1 -0
  7. package/dist/config.d.ts +34 -0
  8. package/dist/config.d.ts.map +1 -0
  9. package/dist/config.js +40 -0
  10. package/dist/config.js.map +1 -0
  11. package/dist/core/cache-adapter.d.ts +73 -0
  12. package/dist/core/cache-adapter.d.ts.map +1 -0
  13. package/dist/core/cache-adapter.js +47 -0
  14. package/dist/core/cache-adapter.js.map +1 -0
  15. package/dist/core/cache-invalidation.d.ts +72 -0
  16. package/dist/core/cache-invalidation.d.ts.map +1 -0
  17. package/dist/core/cache-invalidation.js +114 -0
  18. package/dist/core/cache-invalidation.js.map +1 -0
  19. package/dist/core/container.d.ts +34 -0
  20. package/dist/core/container.d.ts.map +1 -0
  21. package/dist/core/container.js +75 -0
  22. package/dist/core/container.js.map +1 -0
  23. package/dist/graphql/client.d.ts +32 -0
  24. package/dist/graphql/client.d.ts.map +1 -0
  25. package/dist/graphql/client.js +49 -0
  26. package/dist/graphql/client.js.map +1 -0
  27. package/dist/graphql/fragments/apr-breakdown.fragment.d.ts +64 -0
  28. package/dist/graphql/fragments/apr-breakdown.fragment.d.ts.map +1 -0
  29. package/dist/graphql/fragments/apr-breakdown.fragment.js +62 -0
  30. package/dist/graphql/fragments/apr-breakdown.fragment.js.map +1 -0
  31. package/dist/graphql/fragments/asset-info.fragment.d.ts +18 -0
  32. package/dist/graphql/fragments/asset-info.fragment.d.ts.map +1 -0
  33. package/dist/graphql/fragments/asset-info.fragment.js +36 -0
  34. package/dist/graphql/fragments/asset-info.fragment.js.map +1 -0
  35. package/dist/graphql/fragments/chain-info.fragment.d.ts +18 -0
  36. package/dist/graphql/fragments/chain-info.fragment.d.ts.map +1 -0
  37. package/dist/graphql/fragments/chain-info.fragment.js +32 -0
  38. package/dist/graphql/fragments/chain-info.fragment.js.map +1 -0
  39. package/dist/graphql/fragments/index.d.ts +15 -0
  40. package/dist/graphql/fragments/index.d.ts.map +1 -0
  41. package/dist/graphql/fragments/index.js +21 -0
  42. package/dist/graphql/fragments/index.js.map +1 -0
  43. package/dist/graphql/fragments/pageinfo.fragment.d.ts +33 -0
  44. package/dist/graphql/fragments/pageinfo.fragment.d.ts.map +1 -0
  45. package/dist/graphql/fragments/pageinfo.fragment.js +47 -0
  46. package/dist/graphql/fragments/pageinfo.fragment.js.map +1 -0
  47. package/dist/graphql/fragments/transaction-base.fragment.d.ts +19 -0
  48. package/dist/graphql/fragments/transaction-base.fragment.d.ts.map +1 -0
  49. package/dist/graphql/fragments/transaction-base.fragment.js +32 -0
  50. package/dist/graphql/fragments/transaction-base.fragment.js.map +1 -0
  51. package/dist/graphql/fragments/vault-list.fragment.d.ts +53 -0
  52. package/dist/graphql/fragments/vault-list.fragment.d.ts.map +1 -0
  53. package/dist/graphql/fragments/vault-list.fragment.js +51 -0
  54. package/dist/graphql/fragments/vault-list.fragment.js.map +1 -0
  55. package/dist/graphql/fragments/vault-summary.fragment.d.ts +68 -0
  56. package/dist/graphql/fragments/vault-summary.fragment.d.ts.map +1 -0
  57. package/dist/graphql/fragments/vault-summary.fragment.js +66 -0
  58. package/dist/graphql/fragments/vault-summary.fragment.js.map +1 -0
  59. package/dist/graphql/fragments/vault.fragment.d.ts +133 -0
  60. package/dist/graphql/fragments/vault.fragment.d.ts.map +1 -0
  61. package/dist/graphql/fragments/vault.fragment.js +119 -0
  62. package/dist/graphql/fragments/vault.fragment.js.map +1 -0
  63. package/dist/graphql/fragments.d.ts +183 -0
  64. package/dist/graphql/fragments.d.ts.map +1 -0
  65. package/dist/graphql/fragments.js +297 -0
  66. package/dist/graphql/fragments.js.map +1 -0
  67. package/dist/graphql/queries/export.queries.d.ts +72 -0
  68. package/dist/graphql/queries/export.queries.d.ts.map +1 -0
  69. package/dist/graphql/queries/export.queries.js +202 -0
  70. package/dist/graphql/queries/export.queries.js.map +1 -0
  71. package/dist/graphql/queries/index.d.ts +15 -0
  72. package/dist/graphql/queries/index.d.ts.map +1 -0
  73. package/dist/graphql/queries/index.js +23 -0
  74. package/dist/graphql/queries/index.js.map +1 -0
  75. package/dist/graphql/queries/performance.queries.d.ts +63 -0
  76. package/dist/graphql/queries/performance.queries.d.ts.map +1 -0
  77. package/dist/graphql/queries/performance.queries.js +133 -0
  78. package/dist/graphql/queries/performance.queries.js.map +1 -0
  79. package/dist/graphql/queries/period-summaries.d.ts +15 -0
  80. package/dist/graphql/queries/period-summaries.d.ts.map +1 -0
  81. package/dist/graphql/queries/period-summaries.js +24 -0
  82. package/dist/graphql/queries/period-summaries.js.map +1 -0
  83. package/dist/graphql/queries/portfolio.queries.d.ts +78 -0
  84. package/dist/graphql/queries/portfolio.queries.d.ts.map +1 -0
  85. package/dist/graphql/queries/portfolio.queries.js +198 -0
  86. package/dist/graphql/queries/portfolio.queries.js.map +1 -0
  87. package/dist/graphql/queries/prediction.queries.d.ts +38 -0
  88. package/dist/graphql/queries/prediction.queries.d.ts.map +1 -0
  89. package/dist/graphql/queries/prediction.queries.js +100 -0
  90. package/dist/graphql/queries/prediction.queries.js.map +1 -0
  91. package/dist/graphql/queries/risk.queries.d.ts +37 -0
  92. package/dist/graphql/queries/risk.queries.d.ts.map +1 -0
  93. package/dist/graphql/queries/risk.queries.js +90 -0
  94. package/dist/graphql/queries/risk.queries.js.map +1 -0
  95. package/dist/graphql/queries/search.queries.d.ts +61 -0
  96. package/dist/graphql/queries/search.queries.d.ts.map +1 -0
  97. package/dist/graphql/queries/search.queries.js +103 -0
  98. package/dist/graphql/queries/search.queries.js.map +1 -0
  99. package/dist/graphql/queries/transaction.queries.d.ts +60 -0
  100. package/dist/graphql/queries/transaction.queries.d.ts.map +1 -0
  101. package/dist/graphql/queries/transaction.queries.js +252 -0
  102. package/dist/graphql/queries/transaction.queries.js.map +1 -0
  103. package/dist/graphql/queries/vault.queries.d.ts +54 -0
  104. package/dist/graphql/queries/vault.queries.d.ts.map +1 -0
  105. package/dist/graphql/queries/vault.queries.js +78 -0
  106. package/dist/graphql/queries/vault.queries.js.map +1 -0
  107. package/dist/index.d.ts +12 -0
  108. package/dist/index.d.ts.map +1 -0
  109. package/dist/index.js +32 -0
  110. package/dist/index.js.map +1 -0
  111. package/dist/prompts/competitor-comparison.d.ts +8 -0
  112. package/dist/prompts/competitor-comparison.d.ts.map +1 -0
  113. package/dist/prompts/competitor-comparison.js +432 -0
  114. package/dist/prompts/competitor-comparison.js.map +1 -0
  115. package/dist/prompts/curator-performance.d.ts +8 -0
  116. package/dist/prompts/curator-performance.d.ts.map +1 -0
  117. package/dist/prompts/curator-performance.js +383 -0
  118. package/dist/prompts/curator-performance.js.map +1 -0
  119. package/dist/prompts/financial-analysis.d.ts +8 -0
  120. package/dist/prompts/financial-analysis.d.ts.map +1 -0
  121. package/dist/prompts/financial-analysis.js +480 -0
  122. package/dist/prompts/financial-analysis.js.map +1 -0
  123. package/dist/prompts/index.d.ts +21 -0
  124. package/dist/prompts/index.d.ts.map +1 -0
  125. package/dist/prompts/index.js +50 -0
  126. package/dist/prompts/index.js.map +1 -0
  127. package/dist/prompts/onboarding-first-vault.d.ts +8 -0
  128. package/dist/prompts/onboarding-first-vault.d.ts.map +1 -0
  129. package/dist/prompts/onboarding-first-vault.js +317 -0
  130. package/dist/prompts/onboarding-first-vault.js.map +1 -0
  131. package/dist/prompts/portfolio-optimization.d.ts +8 -0
  132. package/dist/prompts/portfolio-optimization.d.ts.map +1 -0
  133. package/dist/prompts/portfolio-optimization.js +412 -0
  134. package/dist/prompts/portfolio-optimization.js.map +1 -0
  135. package/dist/prompts/protocol-overview.d.ts +8 -0
  136. package/dist/prompts/protocol-overview.d.ts.map +1 -0
  137. package/dist/prompts/protocol-overview.js +398 -0
  138. package/dist/prompts/protocol-overview.js.map +1 -0
  139. package/dist/prompts/shared/disclaimers.d.ts +54 -0
  140. package/dist/prompts/shared/disclaimers.d.ts.map +1 -0
  141. package/dist/prompts/shared/disclaimers.js +400 -0
  142. package/dist/prompts/shared/disclaimers.js.map +1 -0
  143. package/dist/resources/glossary.d.ts +8 -0
  144. package/dist/resources/glossary.d.ts.map +1 -0
  145. package/dist/resources/glossary.js +407 -0
  146. package/dist/resources/glossary.js.map +1 -0
  147. package/dist/resources/index.d.ts +18 -0
  148. package/dist/resources/index.d.ts.map +1 -0
  149. package/dist/resources/index.js +29 -0
  150. package/dist/resources/index.js.map +1 -0
  151. package/dist/resources/schema.d.ts +22 -0
  152. package/dist/resources/schema.d.ts.map +1 -0
  153. package/dist/resources/schema.js +67 -0
  154. package/dist/resources/schema.js.map +1 -0
  155. package/dist/schemas/config.schema.d.ts +46 -0
  156. package/dist/schemas/config.schema.d.ts.map +1 -0
  157. package/dist/schemas/config.schema.js +48 -0
  158. package/dist/schemas/config.schema.js.map +1 -0
  159. package/dist/sdk/__tests__/apr-service.test.d.ts +7 -0
  160. package/dist/sdk/__tests__/apr-service.test.d.ts.map +1 -0
  161. package/dist/sdk/__tests__/apr-service.test.js +385 -0
  162. package/dist/sdk/__tests__/apr-service.test.js.map +1 -0
  163. package/dist/sdk/__tests__/math-utils.test.d.ts +7 -0
  164. package/dist/sdk/__tests__/math-utils.test.d.ts.map +1 -0
  165. package/dist/sdk/__tests__/math-utils.test.js +185 -0
  166. package/dist/sdk/__tests__/math-utils.test.js.map +1 -0
  167. package/dist/sdk/__tests__/simulation-service.test.d.ts +5 -0
  168. package/dist/sdk/__tests__/simulation-service.test.d.ts.map +1 -0
  169. package/dist/sdk/__tests__/simulation-service.test.js +397 -0
  170. package/dist/sdk/__tests__/simulation-service.test.js.map +1 -0
  171. package/dist/sdk/__tests__/vault-utils.test.d.ts +7 -0
  172. package/dist/sdk/__tests__/vault-utils.test.d.ts.map +1 -0
  173. package/dist/sdk/__tests__/vault-utils.test.js +189 -0
  174. package/dist/sdk/__tests__/vault-utils.test.js.map +1 -0
  175. package/dist/sdk/apr-service.d.ts +101 -0
  176. package/dist/sdk/apr-service.d.ts.map +1 -0
  177. package/dist/sdk/apr-service.js +175 -0
  178. package/dist/sdk/apr-service.js.map +1 -0
  179. package/dist/sdk/math-utils.d.ts +138 -0
  180. package/dist/sdk/math-utils.d.ts.map +1 -0
  181. package/dist/sdk/math-utils.js +218 -0
  182. package/dist/sdk/math-utils.js.map +1 -0
  183. package/dist/sdk/simulation-service.d.ts +106 -0
  184. package/dist/sdk/simulation-service.d.ts.map +1 -0
  185. package/dist/sdk/simulation-service.js +143 -0
  186. package/dist/sdk/simulation-service.js.map +1 -0
  187. package/dist/sdk/vault-utils.d.ts +125 -0
  188. package/dist/sdk/vault-utils.d.ts.map +1 -0
  189. package/dist/sdk/vault-utils.js +165 -0
  190. package/dist/sdk/vault-utils.js.map +1 -0
  191. package/dist/server.d.ts +21 -0
  192. package/dist/server.d.ts.map +1 -0
  193. package/dist/server.js +225 -0
  194. package/dist/server.js.map +1 -0
  195. package/dist/services/analytics/protocol-overview.service.d.ts +61 -0
  196. package/dist/services/analytics/protocol-overview.service.d.ts.map +1 -0
  197. package/dist/services/analytics/protocol-overview.service.js +182 -0
  198. package/dist/services/analytics/protocol-overview.service.js.map +1 -0
  199. package/dist/services/analytics/risk.service.d.ts +92 -0
  200. package/dist/services/analytics/risk.service.d.ts.map +1 -0
  201. package/dist/services/analytics/risk.service.js +423 -0
  202. package/dist/services/analytics/risk.service.js.map +1 -0
  203. package/dist/services/base.service.d.ts +39 -0
  204. package/dist/services/base.service.d.ts.map +1 -0
  205. package/dist/services/base.service.js +37 -0
  206. package/dist/services/base.service.js.map +1 -0
  207. package/dist/services/index.d.ts +30 -0
  208. package/dist/services/index.d.ts.map +1 -0
  209. package/dist/services/index.js +101 -0
  210. package/dist/services/index.js.map +1 -0
  211. package/dist/tools/__tests__/simulate-vault.test.d.ts +5 -0
  212. package/dist/tools/__tests__/simulate-vault.test.d.ts.map +1 -0
  213. package/dist/tools/__tests__/simulate-vault.test.js +363 -0
  214. package/dist/tools/__tests__/simulate-vault.test.js.map +1 -0
  215. package/dist/tools/analyze-risk.d.ts +34 -0
  216. package/dist/tools/analyze-risk.d.ts.map +1 -0
  217. package/dist/tools/analyze-risk.js +100 -0
  218. package/dist/tools/analyze-risk.js.map +1 -0
  219. package/dist/tools/compare-vaults.d.ts +29 -0
  220. package/dist/tools/compare-vaults.d.ts.map +1 -0
  221. package/dist/tools/compare-vaults.js +285 -0
  222. package/dist/tools/compare-vaults.js.map +1 -0
  223. package/dist/tools/export-data.d.ts +34 -0
  224. package/dist/tools/export-data.d.ts.map +1 -0
  225. package/dist/tools/export-data.js +309 -0
  226. package/dist/tools/export-data.js.map +1 -0
  227. package/dist/tools/get-price-history.d.ts +29 -0
  228. package/dist/tools/get-price-history.d.ts.map +1 -0
  229. package/dist/tools/get-price-history.js +236 -0
  230. package/dist/tools/get-price-history.js.map +1 -0
  231. package/dist/tools/get-transactions.d.ts +29 -0
  232. package/dist/tools/get-transactions.d.ts.map +1 -0
  233. package/dist/tools/get-transactions.js +181 -0
  234. package/dist/tools/get-transactions.js.map +1 -0
  235. package/dist/tools/index.d.ts +26 -0
  236. package/dist/tools/index.d.ts.map +1 -0
  237. package/dist/tools/index.js +32 -0
  238. package/dist/tools/index.js.map +1 -0
  239. package/dist/tools/optimize-portfolio.d.ts +37 -0
  240. package/dist/tools/optimize-portfolio.d.ts.map +1 -0
  241. package/dist/tools/optimize-portfolio.js +459 -0
  242. package/dist/tools/optimize-portfolio.js.map +1 -0
  243. package/dist/tools/predict-yield.d.ts +30 -0
  244. package/dist/tools/predict-yield.d.ts.map +1 -0
  245. package/dist/tools/predict-yield.js +248 -0
  246. package/dist/tools/predict-yield.js.map +1 -0
  247. package/dist/tools/query-graphql.d.ts +35 -0
  248. package/dist/tools/query-graphql.d.ts.map +1 -0
  249. package/dist/tools/query-graphql.js +54 -0
  250. package/dist/tools/query-graphql.js.map +1 -0
  251. package/dist/tools/registry.d.ts +42 -0
  252. package/dist/tools/registry.d.ts.map +1 -0
  253. package/dist/tools/registry.js +231 -0
  254. package/dist/tools/registry.js.map +1 -0
  255. package/dist/tools/search-vaults.d.ts +40 -0
  256. package/dist/tools/search-vaults.d.ts.map +1 -0
  257. package/dist/tools/search-vaults.js +184 -0
  258. package/dist/tools/search-vaults.js.map +1 -0
  259. package/dist/tools/simulate-vault.d.ts +80 -0
  260. package/dist/tools/simulate-vault.d.ts.map +1 -0
  261. package/dist/tools/simulate-vault.js +281 -0
  262. package/dist/tools/simulate-vault.js.map +1 -0
  263. package/dist/tools/user-portfolio.d.ts +30 -0
  264. package/dist/tools/user-portfolio.d.ts.map +1 -0
  265. package/dist/tools/user-portfolio.js +142 -0
  266. package/dist/tools/user-portfolio.js.map +1 -0
  267. package/dist/tools/vault-data.d.ts +23 -0
  268. package/dist/tools/vault-data.d.ts.map +1 -0
  269. package/dist/tools/vault-data.js +68 -0
  270. package/dist/tools/vault-data.js.map +1 -0
  271. package/dist/tools/vault-performance.d.ts +30 -0
  272. package/dist/tools/vault-performance.d.ts.map +1 -0
  273. package/dist/tools/vault-performance.js +275 -0
  274. package/dist/tools/vault-performance.js.map +1 -0
  275. package/dist/types/generated.d.ts +1109 -0
  276. package/dist/types/generated.d.ts.map +1 -0
  277. package/dist/types/generated.js +2 -0
  278. package/dist/types/generated.js.map +1 -0
  279. package/dist/types/index.d.ts +46 -0
  280. package/dist/types/index.d.ts.map +1 -0
  281. package/dist/types/index.js +8 -0
  282. package/dist/types/index.js.map +1 -0
  283. package/dist/utils/comparison-metrics.d.ts +120 -0
  284. package/dist/utils/comparison-metrics.d.ts.map +1 -0
  285. package/dist/utils/comparison-metrics.js +215 -0
  286. package/dist/utils/comparison-metrics.js.map +1 -0
  287. package/dist/utils/config-loader.d.ts +17 -0
  288. package/dist/utils/config-loader.d.ts.map +1 -0
  289. package/dist/utils/config-loader.js +45 -0
  290. package/dist/utils/config-loader.js.map +1 -0
  291. package/dist/utils/csv-generator.d.ts +89 -0
  292. package/dist/utils/csv-generator.d.ts.map +1 -0
  293. package/dist/utils/csv-generator.js +97 -0
  294. package/dist/utils/csv-generator.js.map +1 -0
  295. package/dist/utils/disclaimers.d.ts +70 -0
  296. package/dist/utils/disclaimers.d.ts.map +1 -0
  297. package/dist/utils/disclaimers.js +161 -0
  298. package/dist/utils/disclaimers.js.map +1 -0
  299. package/dist/utils/errors.d.ts +66 -0
  300. package/dist/utils/errors.d.ts.map +1 -0
  301. package/dist/utils/errors.js +86 -0
  302. package/dist/utils/errors.js.map +1 -0
  303. package/dist/utils/execute-tool-with-cache.d.ts +97 -0
  304. package/dist/utils/execute-tool-with-cache.d.ts.map +1 -0
  305. package/dist/utils/execute-tool-with-cache.js +105 -0
  306. package/dist/utils/execute-tool-with-cache.js.map +1 -0
  307. package/dist/utils/portfolio-optimization.d.ts +100 -0
  308. package/dist/utils/portfolio-optimization.d.ts.map +1 -0
  309. package/dist/utils/portfolio-optimization.js +283 -0
  310. package/dist/utils/portfolio-optimization.js.map +1 -0
  311. package/dist/utils/risk-scoring.d.ts +226 -0
  312. package/dist/utils/risk-scoring.d.ts.map +1 -0
  313. package/dist/utils/risk-scoring.js +523 -0
  314. package/dist/utils/risk-scoring.js.map +1 -0
  315. package/dist/utils/tool-error-handler.d.ts +16 -0
  316. package/dist/utils/tool-error-handler.d.ts.map +1 -0
  317. package/dist/utils/tool-error-handler.js +43 -0
  318. package/dist/utils/tool-error-handler.js.map +1 -0
  319. package/dist/utils/tool-handler.d.ts +33 -0
  320. package/dist/utils/tool-handler.d.ts.map +1 -0
  321. package/dist/utils/tool-handler.js +59 -0
  322. package/dist/utils/tool-handler.js.map +1 -0
  323. package/dist/utils/tool-response.d.ts +16 -0
  324. package/dist/utils/tool-response.d.ts.map +1 -0
  325. package/dist/utils/tool-response.js +25 -0
  326. package/dist/utils/tool-response.js.map +1 -0
  327. package/dist/utils/validators.d.ts +359 -0
  328. package/dist/utils/validators.d.ts.map +1 -0
  329. package/dist/utils/validators.js +233 -0
  330. package/dist/utils/validators.js.map +1 -0
  331. package/dist/utils/yield-prediction.d.ts +69 -0
  332. package/dist/utils/yield-prediction.d.ts.map +1 -0
  333. package/dist/utils/yield-prediction.js +290 -0
  334. package/dist/utils/yield-prediction.js.map +1 -0
  335. package/package.json +83 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,mDAAmD;AACnD,mFAAmF;AACnF,kFAAkF;AAClF,mFAAmF;AACnF,sCAAsC;AAEtC,2DAA2D;AAE3D,iBAAiB;AACjB,qEAAqE;AACrE,uDAAuD;AAEvD,qBAAqB;AACrB,6DAA6D;AAC7D,yEAAyE;AACzE,yEAAyE;AAEzE,qBAAqB;AACrB,6EAA6E;AAE7E,kBAAkB;AAClB,wDAAwD;AAExD;;GAEG;AACH,8BAA8B;AAC9B,oBAAoB;AACpB,aAAa;AACb,qCAAqC;AACrC,uBAAuB;AACvB,OAAO;AACP,EAAE;AACF,wBAAwB;AACxB,iBAAiB;AACjB,yBAAyB;AACzB,qCAAqC;AACrC,qCAAqC;AACrC,OAAO;AACP,EAAE;AACF,wBAAwB;AACxB,iBAAiB;AACjB,yCAAyC;AACzC,OAAO;AACP,EAAE;AACF,qBAAqB;AACrB,cAAc;AACd,uBAAuB;AACvB,OAAO;AACP,IAAI;AAEJ;;;;;;;;;;;;;;;;;;GAkBG;AACH,0EAA0E;AAC1E,aAAa;AACb,eAAe;AACf,sDAAsD;AACtD,wCAAwC;AACxC,SAAS;AACT,mBAAmB;AACnB,0CAA0C;AAC1C,sDAAsD;AACtD,sDAAsD;AACtD,SAAS;AACT,mBAAmB;AACnB,0DAA0D;AAC1D,SAAS;AACT,gBAAgB;AAChB,wCAAwC;AACxC,SAAS;AACT,OAAO;AACP,IAAI;AAEJ,qDAAqD;AACrD,WAAW;AACX,uBAAuB;AACvB,gBAAgB;AAChB,iBAAiB;AACjB,uBAAuB;AACvB,uBAAuB;AACvB,yBAAyB;AACzB,gBAAgB;AAChB,KAAK;AAEL,yBAAyB;AACzB,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Tests for simulate-vault tool
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=simulate-vault.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simulate-vault.test.d.ts","sourceRoot":"","sources":["../../../src/tools/__tests__/simulate-vault.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,363 @@
1
+ /**
2
+ * Tests for simulate-vault tool
3
+ */
4
+ import { describe, it, expect, vi, beforeEach } from 'vitest';
5
+ import { executeSimulateVault, simulateVaultInputSchema, } from '../simulate-vault.js';
6
+ // Mock dependencies
7
+ vi.mock('../../graphql/client.js', () => ({
8
+ graphqlClient: {
9
+ request: vi.fn(),
10
+ },
11
+ }));
12
+ vi.mock('../../sdk/simulation-service.js', () => ({
13
+ simulateVaultManagement: vi.fn(),
14
+ }));
15
+ vi.mock('../../sdk/apr-service.js', () => ({
16
+ transformPeriodSummariesToAPRData: vi.fn(),
17
+ }));
18
+ import { graphqlClient } from '../../graphql/client.js';
19
+ import { simulateVaultManagement } from '../../sdk/simulation-service.js';
20
+ import { transformPeriodSummariesToAPRData } from '../../sdk/apr-service.js';
21
+ describe('simulateVaultInputSchema', () => {
22
+ it('should validate correct input', () => {
23
+ const input = {
24
+ vaultAddress: '0x1234567890123456789012345678901234567890',
25
+ chainId: 42161,
26
+ newTotalAssets: '2000000000',
27
+ settleDeposit: true,
28
+ includeAPRCalculations: true,
29
+ };
30
+ const result = simulateVaultInputSchema.safeParse(input);
31
+ expect(result.success).toBe(true);
32
+ });
33
+ it('should apply default values for optional fields', () => {
34
+ const input = {
35
+ vaultAddress: '0x1234567890123456789012345678901234567890',
36
+ chainId: 42161,
37
+ newTotalAssets: '2000000000',
38
+ };
39
+ const result = simulateVaultInputSchema.parse(input);
40
+ expect(result.settleDeposit).toBe(true);
41
+ expect(result.includeAPRCalculations).toBe(true);
42
+ });
43
+ it('should reject invalid vault address', () => {
44
+ const input = {
45
+ vaultAddress: 'invalid-address',
46
+ chainId: 42161,
47
+ newTotalAssets: '2000000000',
48
+ };
49
+ const result = simulateVaultInputSchema.safeParse(input);
50
+ expect(result.success).toBe(false);
51
+ });
52
+ it('should reject negative chainId', () => {
53
+ const input = {
54
+ vaultAddress: '0x1234567890123456789012345678901234567890',
55
+ chainId: -1,
56
+ newTotalAssets: '2000000000',
57
+ };
58
+ const result = simulateVaultInputSchema.safeParse(input);
59
+ expect(result.success).toBe(false);
60
+ });
61
+ it('should reject invalid newTotalAssets format', () => {
62
+ const input = {
63
+ vaultAddress: '0x1234567890123456789012345678901234567890',
64
+ chainId: 42161,
65
+ newTotalAssets: 'invalid',
66
+ };
67
+ const result = simulateVaultInputSchema.safeParse(input);
68
+ expect(result.success).toBe(false);
69
+ });
70
+ it('should reject negative newTotalAssets', () => {
71
+ const input = {
72
+ vaultAddress: '0x1234567890123456789012345678901234567890',
73
+ chainId: 42161,
74
+ newTotalAssets: '-1000000000',
75
+ };
76
+ const result = simulateVaultInputSchema.safeParse(input);
77
+ expect(result.success).toBe(false);
78
+ });
79
+ });
80
+ describe('executeSimulateVault', () => {
81
+ const mockVault = {
82
+ address: '0x1234567890123456789012345678901234567890',
83
+ name: 'Test Vault',
84
+ symbol: 'TEST',
85
+ decimals: 18,
86
+ asset: {
87
+ address: '0xabcdef1234567890abcdef1234567890abcdef12',
88
+ symbol: 'USDC',
89
+ name: 'USD Coin',
90
+ decimals: 6,
91
+ },
92
+ state: {
93
+ totalSupply: '1000000000000000000',
94
+ totalAssets: '1000000000',
95
+ highWaterMark: '1000000000',
96
+ lastFeeTime: '1700000000',
97
+ managementFee: '200',
98
+ performanceFee: '1000',
99
+ version: 'v1',
100
+ safeAssetBalance: '500000000',
101
+ pendingSiloBalances: {
102
+ assets: '100000000',
103
+ shares: '100000000000000000',
104
+ },
105
+ pendingSettlement: {
106
+ assets: '50000000',
107
+ shares: '50000000000000000',
108
+ },
109
+ },
110
+ chainId: 42161,
111
+ tvl: 1000,
112
+ };
113
+ const mockSimulationResult = {
114
+ totalSupply: BigInt('2000000000000000000'),
115
+ totalAssets: BigInt('2000000000'),
116
+ feesAccrued: BigInt('10000000'),
117
+ pricePerShare: BigInt('1000000'),
118
+ };
119
+ beforeEach(() => {
120
+ vi.clearAllMocks();
121
+ });
122
+ it('should successfully simulate deposit scenario', async () => {
123
+ vi.mocked(graphqlClient.request).mockResolvedValueOnce({ vault: mockVault });
124
+ vi.mocked(simulateVaultManagement).mockResolvedValue(mockSimulationResult);
125
+ const input = {
126
+ vaultAddress: '0x1234567890123456789012345678901234567890',
127
+ chainId: 42161,
128
+ newTotalAssets: '2000000000',
129
+ settleDeposit: true,
130
+ includeAPRCalculations: false,
131
+ };
132
+ const result = await executeSimulateVault(input);
133
+ expect(result.content).toBeDefined();
134
+ expect(result.content[0].type).toBe('text');
135
+ const content = JSON.parse(result.content[0].text);
136
+ expect(content.simulation.vaultAddress).toBe(input.vaultAddress);
137
+ expect(content.currentState.totalAssets).toBe(mockVault.state.totalAssets);
138
+ expect(content.simulatedState.totalAssets).toBe('2000000000');
139
+ });
140
+ it('should include APR analysis when requested', async () => {
141
+ const mockPeriodSummaries = [
142
+ {
143
+ timestamp: '1700000000',
144
+ totalAssetsAtStart: '1000000000',
145
+ totalSupplyAtStart: '1000000000000000000',
146
+ },
147
+ ];
148
+ const mockAPRData = {
149
+ thirtyDay: {
150
+ timestamp: 1700000000,
151
+ pricePerShare: BigInt('1050000'),
152
+ },
153
+ inception: {
154
+ timestamp: 1690000000,
155
+ pricePerShare: BigInt('1000000'),
156
+ },
157
+ };
158
+ vi.mocked(graphqlClient.request)
159
+ .mockResolvedValueOnce({ vault: mockVault })
160
+ .mockResolvedValueOnce({ periodSummaries: mockPeriodSummaries });
161
+ vi.mocked(simulateVaultManagement).mockResolvedValue(mockSimulationResult);
162
+ vi.mocked(transformPeriodSummariesToAPRData).mockReturnValue(mockAPRData);
163
+ const input = {
164
+ vaultAddress: '0x1234567890123456789012345678901234567890',
165
+ chainId: 42161,
166
+ newTotalAssets: '2000000000',
167
+ settleDeposit: true,
168
+ includeAPRCalculations: true,
169
+ };
170
+ const result = await executeSimulateVault(input);
171
+ const content = JSON.parse(result.content[0].text);
172
+ expect(content.aprAnalysis).toBeDefined();
173
+ expect(content.aprAnalysis.method).toContain('Lagoon SDK');
174
+ expect(content.aprAnalysis.thirtyDay).toBeDefined();
175
+ expect(content.aprAnalysis.inception).toBeDefined();
176
+ });
177
+ it('should handle withdrawal scenario', async () => {
178
+ const withdrawalResult = {
179
+ totalSupply: BigInt('500000000000000000'),
180
+ totalAssets: BigInt('500000000'),
181
+ feesAccrued: BigInt('5000000'),
182
+ pricePerShare: BigInt('1000000'),
183
+ };
184
+ vi.mocked(graphqlClient.request).mockResolvedValueOnce({ vault: mockVault });
185
+ vi.mocked(simulateVaultManagement).mockResolvedValue(withdrawalResult);
186
+ const input = {
187
+ vaultAddress: '0x1234567890123456789012345678901234567890',
188
+ chainId: 42161,
189
+ newTotalAssets: '500000000',
190
+ settleDeposit: false,
191
+ includeAPRCalculations: false,
192
+ };
193
+ const result = await executeSimulateVault(input);
194
+ const content = JSON.parse(result.content[0].text);
195
+ expect(content.simulatedState.totalAssets).toBe('500000000');
196
+ expect(content.settlementAnalysis.settleDeposit).toBe(false);
197
+ });
198
+ it('should handle vault not found error', async () => {
199
+ vi.mocked(graphqlClient.request).mockResolvedValueOnce({ vault: null });
200
+ const input = {
201
+ vaultAddress: '0x1234567890123456789012345678901234567890',
202
+ chainId: 42161,
203
+ newTotalAssets: '2000000000',
204
+ settleDeposit: true,
205
+ includeAPRCalculations: false,
206
+ };
207
+ const result = await executeSimulateVault(input);
208
+ // Error responses are plain text, not JSON
209
+ expect(result.content[0].type).toBe('text');
210
+ expect(result.content[0].text).toContain('Vault not found');
211
+ });
212
+ it('should handle simulation failure gracefully', async () => {
213
+ vi.mocked(graphqlClient.request).mockResolvedValueOnce({ vault: mockVault });
214
+ vi.mocked(simulateVaultManagement).mockRejectedValue(new Error('SDK internal error'));
215
+ const input = {
216
+ vaultAddress: '0x1234567890123456789012345678901234567890',
217
+ chainId: 42161,
218
+ newTotalAssets: '2000000000',
219
+ settleDeposit: true,
220
+ includeAPRCalculations: false,
221
+ };
222
+ const result = await executeSimulateVault(input);
223
+ // Error responses are plain text, not JSON
224
+ expect(result.content[0].type).toBe('text');
225
+ expect(result.content[0].text).toContain('SDK internal error');
226
+ });
227
+ it('should continue without APR data on fetch failure', async () => {
228
+ vi.mocked(graphqlClient.request)
229
+ .mockResolvedValueOnce({ vault: mockVault })
230
+ .mockRejectedValueOnce(new Error('Period summaries not available'));
231
+ vi.mocked(simulateVaultManagement).mockResolvedValue(mockSimulationResult);
232
+ const input = {
233
+ vaultAddress: '0x1234567890123456789012345678901234567890',
234
+ chainId: 42161,
235
+ newTotalAssets: '2000000000',
236
+ settleDeposit: true,
237
+ includeAPRCalculations: true,
238
+ };
239
+ const result = await executeSimulateVault(input);
240
+ const content = JSON.parse(result.content[0].text);
241
+ expect(content.simulatedState).toBeDefined();
242
+ expect(content.aprAnalysis).toBeUndefined();
243
+ });
244
+ it('should calculate share price impact correctly', async () => {
245
+ // For this test, we need simulation returns different price
246
+ // To get price per share = 1.00, we need totalAssets = totalSupply (adjusting for decimals)
247
+ // Current: 1000000000 assets (1000 USDC, 6 decimals) / 1e18 shares = price = 0.001 per share
248
+ // This creates a 1:1 ratio in "real" value terms
249
+ //
250
+ // For appreciation test:
251
+ // New: 2100000000 assets (2100 USDC) / 2e18 shares
252
+ // New price per share = (2100000000 * 10^6) / 2000000000000000000 = 1050 (comparing in normalized units)
253
+ // Old price per share = (1000000000 * 10^6) / 1000000000000000000 = 1000
254
+ // Impact = (1050 - 1000) / 1000 * 100 = 5% increase
255
+ const appreciatedResult = {
256
+ totalSupply: BigInt('1000000000000000000'), // Keep same supply
257
+ totalAssets: BigInt('1050000000'), // Increase assets by 5%
258
+ feesAccrued: BigInt('10000000'),
259
+ pricePerShare: BigInt('1050000'), // 1.05 in 6 decimals (not used, but for reference)
260
+ };
261
+ vi.mocked(graphqlClient.request).mockResolvedValueOnce({ vault: mockVault });
262
+ vi.mocked(simulateVaultManagement).mockResolvedValue(appreciatedResult);
263
+ const input = {
264
+ vaultAddress: '0x1234567890123456789012345678901234567890',
265
+ chainId: 42161,
266
+ newTotalAssets: '2100000000',
267
+ settleDeposit: true,
268
+ includeAPRCalculations: false,
269
+ };
270
+ const result = await executeSimulateVault(input);
271
+ const content = JSON.parse(result.content[0].text);
272
+ // Current price per share: (1000000000 * 10^6) / 1000000000000000000 = 1000 (normalized units)
273
+ // New price per share: (1050000000 * 10^6) / 1000000000000000000 = 1050 (normalized units)
274
+ // Impact: (1050 - 1000) / 1000 * 100 = 5% increase
275
+ expect(content.simulatedState.sharePriceImpact.percentage).toBeGreaterThan(0);
276
+ expect(content.simulatedState.sharePriceImpact.direction).toBe('increase');
277
+ });
278
+ it('should handle zero supply vault (new vault)', async () => {
279
+ const newVault = {
280
+ ...mockVault,
281
+ state: {
282
+ ...mockVault.state,
283
+ totalSupply: '0',
284
+ totalAssets: '0',
285
+ },
286
+ };
287
+ const newVaultResult = {
288
+ totalSupply: BigInt('1000000000000000000'),
289
+ totalAssets: BigInt('1000000000'),
290
+ feesAccrued: BigInt('0'),
291
+ pricePerShare: BigInt('1000000'),
292
+ };
293
+ vi.mocked(graphqlClient.request).mockResolvedValueOnce({ vault: newVault });
294
+ vi.mocked(simulateVaultManagement).mockResolvedValue(newVaultResult);
295
+ const input = {
296
+ vaultAddress: '0x1234567890123456789012345678901234567890',
297
+ chainId: 42161,
298
+ newTotalAssets: '1000000000',
299
+ settleDeposit: true,
300
+ includeAPRCalculations: false,
301
+ };
302
+ const result = await executeSimulateVault(input);
303
+ const content = JSON.parse(result.content[0].text);
304
+ expect(content.currentState.totalSupply).toBe('0');
305
+ expect(content.simulatedState.totalSupply).toBe('1000000000000000000');
306
+ });
307
+ it('should include settlement analysis with all fields', async () => {
308
+ vi.mocked(graphqlClient.request).mockResolvedValueOnce({ vault: mockVault });
309
+ vi.mocked(simulateVaultManagement).mockResolvedValue(mockSimulationResult);
310
+ const input = {
311
+ vaultAddress: '0x1234567890123456789012345678901234567890',
312
+ chainId: 42161,
313
+ newTotalAssets: '2000000000',
314
+ settleDeposit: true,
315
+ includeAPRCalculations: false,
316
+ };
317
+ const result = await executeSimulateVault(input);
318
+ const content = JSON.parse(result.content[0].text);
319
+ expect(content.settlementAnalysis).toBeDefined();
320
+ expect(content.settlementAnalysis.assetsInSafe).toBe('500000000');
321
+ expect(content.settlementAnalysis.pendingSiloBalances.assets).toBe('100000000');
322
+ expect(content.settlementAnalysis.pendingSettlement.assets).toBe('50000000');
323
+ });
324
+ it('should format all BigInt values correctly', async () => {
325
+ vi.mocked(graphqlClient.request).mockResolvedValueOnce({ vault: mockVault });
326
+ vi.mocked(simulateVaultManagement).mockResolvedValue(mockSimulationResult);
327
+ const input = {
328
+ vaultAddress: '0x1234567890123456789012345678901234567890',
329
+ chainId: 42161,
330
+ newTotalAssets: '2000000000',
331
+ settleDeposit: true,
332
+ includeAPRCalculations: false,
333
+ };
334
+ const result = await executeSimulateVault(input);
335
+ const content = JSON.parse(result.content[0].text);
336
+ // All BigInt values should be strings
337
+ expect(typeof content.currentState.totalAssets).toBe('string');
338
+ expect(typeof content.simulatedState.totalAssets).toBe('string');
339
+ expect(typeof content.simulatedState.feesAccrued.total).toBe('string');
340
+ // Formatted versions should be decimal strings
341
+ expect(content.currentState.totalAssetsFormatted).toContain('.');
342
+ expect(content.simulatedState.totalAssetsFormatted).toContain('.');
343
+ });
344
+ it('should include metadata in response', async () => {
345
+ vi.mocked(graphqlClient.request).mockResolvedValueOnce({ vault: mockVault });
346
+ vi.mocked(simulateVaultManagement).mockResolvedValue(mockSimulationResult);
347
+ const input = {
348
+ vaultAddress: '0x1234567890123456789012345678901234567890',
349
+ chainId: 42161,
350
+ newTotalAssets: '2000000000',
351
+ settleDeposit: true,
352
+ includeAPRCalculations: false,
353
+ };
354
+ const result = await executeSimulateVault(input);
355
+ const content = JSON.parse(result.content[0].text);
356
+ expect(content.simulation).toBeDefined();
357
+ expect(content.simulation.vaultAddress).toBe(input.vaultAddress);
358
+ expect(content.simulation.chainId).toBe(input.chainId);
359
+ expect(content.simulation.timestamp).toBeGreaterThan(0);
360
+ expect(content.simulation.sdkVersion).toContain('@lagoon-protocol');
361
+ });
362
+ });
363
+ //# sourceMappingURL=simulate-vault.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simulate-vault.test.js","sourceRoot":"","sources":["../../../src/tools/__tests__/simulate-vault.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * analyze_risk Tool
3
+ *
4
+ * Multi-factor risk analysis for vault investment decisions.
5
+ * Analyzes TVL, concentration, volatility, age, and curator reputation.
6
+ *
7
+ * Use cases:
8
+ * - Investment risk assessment before deposit
9
+ * - Portfolio risk monitoring and rebalancing
10
+ * - Comparative risk analysis across vaults
11
+ * - Due diligence for large deposits
12
+ * - Performance: ~400-600 tokens per analysis
13
+ *
14
+ * Cache strategy:
15
+ * - 15-minute TTL (risk factors can change with market conditions)
16
+ * - Cache tags: [CacheTag.RISK, CacheTag.ANALYTICS, CacheTag.VAULT]
17
+ */
18
+ import { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
19
+ import { AnalyzeRiskInput } from '../utils/validators.js';
20
+ import { ServiceContainer } from '../core/container.js';
21
+ /**
22
+ * Create the executeAnalyzeRisk function with DI container
23
+ *
24
+ * This factory function demonstrates the service layer pattern:
25
+ * 1. Business logic encapsulated in RiskService
26
+ * 2. Complex multi-step operations cleanly organized
27
+ * 3. Service handles GraphQL queries and data processing
28
+ * 4. Tool focuses on caching and response formatting
29
+ *
30
+ * @param container - Service container with dependencies
31
+ * @returns Configured tool executor function
32
+ */
33
+ export declare function createExecuteAnalyzeRisk(container: ServiceContainer): (input: AnalyzeRiskInput) => Promise<CallToolResult>;
34
+ //# sourceMappingURL=analyze-risk.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyze-risk.d.ts","sourceRoot":"","sources":["../../src/tools/analyze-risk.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAKxD;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,gBAAgB,GAC1B,CAAC,KAAK,EAAE,gBAAgB,KAAK,OAAO,CAAC,cAAc,CAAC,CA2EtD"}
@@ -0,0 +1,100 @@
1
+ /**
2
+ * analyze_risk Tool
3
+ *
4
+ * Multi-factor risk analysis for vault investment decisions.
5
+ * Analyzes TVL, concentration, volatility, age, and curator reputation.
6
+ *
7
+ * Use cases:
8
+ * - Investment risk assessment before deposit
9
+ * - Portfolio risk monitoring and rebalancing
10
+ * - Comparative risk analysis across vaults
11
+ * - Due diligence for large deposits
12
+ * - Performance: ~400-600 tokens per analysis
13
+ *
14
+ * Cache strategy:
15
+ * - 15-minute TTL (risk factors can change with market conditions)
16
+ * - Cache tags: [CacheTag.RISK, CacheTag.ANALYTICS, CacheTag.VAULT]
17
+ */
18
+ import { getToolDisclaimer } from '../utils/disclaimers.js';
19
+ import { CacheTag } from '../core/cache-invalidation.js';
20
+ import { RiskService } from '../services/analytics/risk.service.js';
21
+ import { cacheTTL } from '../cache/index.js';
22
+ /**
23
+ * Create the executeAnalyzeRisk function with DI container
24
+ *
25
+ * This factory function demonstrates the service layer pattern:
26
+ * 1. Business logic encapsulated in RiskService
27
+ * 2. Complex multi-step operations cleanly organized
28
+ * 3. Service handles GraphQL queries and data processing
29
+ * 4. Tool focuses on caching and response formatting
30
+ *
31
+ * @param container - Service container with dependencies
32
+ * @returns Configured tool executor function
33
+ */
34
+ export function createExecuteAnalyzeRisk(container) {
35
+ const riskService = new RiskService('risk-analysis', container);
36
+ return async (input) => {
37
+ try {
38
+ // Generate cache key including responseFormat
39
+ const responseFormat = (input.responseFormat ?? 'detailed');
40
+ const cacheKey = `risk:${input.chainId}:${input.vaultAddress}:${responseFormat}`;
41
+ // Register cache tags for invalidation
42
+ container.cacheInvalidator.register(cacheKey, [
43
+ CacheTag.RISK,
44
+ CacheTag.ANALYTICS,
45
+ CacheTag.VAULT,
46
+ ]);
47
+ // Check cache
48
+ const cached = container.cache.get(cacheKey);
49
+ if (cached) {
50
+ return {
51
+ content: [
52
+ {
53
+ type: 'text',
54
+ text: `${riskService.formatRiskBreakdown(cached, responseFormat)}\n\n_Cached result from ${new Date().toISOString()}_`,
55
+ },
56
+ ],
57
+ isError: false,
58
+ };
59
+ }
60
+ // Perform analysis using service
61
+ const riskBreakdown = await riskService.analyze(input.vaultAddress, input.chainId);
62
+ if (!riskBreakdown) {
63
+ return {
64
+ content: [
65
+ {
66
+ type: 'text',
67
+ text: `No vault found at address ${input.vaultAddress} on chain ${input.chainId}`,
68
+ },
69
+ ],
70
+ isError: false,
71
+ };
72
+ }
73
+ // Cache the result
74
+ container.cache.set(cacheKey, riskBreakdown, cacheTTL.riskAnalysis);
75
+ // Return formatted analysis with legal disclaimer
76
+ return {
77
+ content: [
78
+ {
79
+ type: 'text',
80
+ text: riskService.formatRiskBreakdown(riskBreakdown, responseFormat) +
81
+ getToolDisclaimer('analyze_risk'),
82
+ },
83
+ ],
84
+ isError: false,
85
+ };
86
+ }
87
+ catch (error) {
88
+ return {
89
+ content: [
90
+ {
91
+ type: 'text',
92
+ text: `Error analyzing risk: ${error instanceof Error ? error.message : String(error)}`,
93
+ },
94
+ ],
95
+ isError: true,
96
+ };
97
+ }
98
+ };
99
+ }
100
+ //# sourceMappingURL=analyze-risk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyze-risk.js","sourceRoot":"","sources":["../../src/tools/analyze-risk.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAC;AACpE,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,wBAAwB,CACtC,SAA2B;IAE3B,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;IAEhE,OAAO,KAAK,EAAE,KAAuB,EAA2B,EAAE;QAChE,IAAI,CAAC;YACH,8CAA8C;YAC9C,MAAM,cAAc,GAAG,CAAC,KAAK,CAAC,cAAc,IAAI,UAAU,CAG5C,CAAC;YACf,MAAM,QAAQ,GAAG,QAAQ,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,YAAY,IAAI,cAAc,EAAE,CAAC;YAEjF,uCAAuC;YACvC,SAAS,CAAC,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,EAAE;gBAC5C,QAAQ,CAAC,IAAI;gBACb,QAAQ,CAAC,SAAS;gBAClB,QAAQ,CAAC,KAAK;aACf,CAAC,CAAC;YAEH,cAAc;YACd,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAA+C,QAAQ,CAAC,CAAC;YAC3F,IAAI,MAAM,EAAE,CAAC;gBACX,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,GAAG,WAAW,CAAC,mBAAmB,CAAC,MAAM,EAAE,cAAc,CAAC,2BAA2B,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,GAAG;yBACvH;qBACF;oBACD,OAAO,EAAE,KAAK;iBACf,CAAC;YACJ,CAAC;YAED,iCAAiC;YACjC,MAAM,aAAa,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YAEnF,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,6BAA6B,KAAK,CAAC,YAAY,aAAa,KAAK,CAAC,OAAO,EAAE;yBAClF;qBACF;oBACD,OAAO,EAAE,KAAK;iBACf,CAAC;YACJ,CAAC;YAED,mBAAmB;YACnB,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC;YAEpE,kDAAkD;YAClD,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EACF,WAAW,CAAC,mBAAmB,CAAC,aAAa,EAAE,cAAc,CAAC;4BAC9D,iBAAiB,CAAC,cAAc,CAAC;qBACpC;iBACF;gBACD,OAAO,EAAE,KAAK;aACf,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,yBAAyB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;qBACxF;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * compare_vaults Tool
3
+ *
4
+ * Side-by-side comparison of multiple vaults with normalized metrics and rankings.
5
+ * Supports comparing 2-10 vaults simultaneously.
6
+ *
7
+ * Use cases:
8
+ * - Evaluate investment opportunities across similar vaults
9
+ * - Identify best/worst performers in a category
10
+ * - Risk-adjusted return analysis
11
+ * - Performance: ~300 tokens per vault
12
+ *
13
+ * Cache strategy:
14
+ * - 15-minute TTL for comparison results
15
+ * - Cache key: compare:{sorted_addresses}:{chainId}
16
+ * - Cache hit rate target: 70-80%
17
+ * - Cache tags: [CacheTag.VAULT, CacheTag.ANALYTICS] for invalidation
18
+ */
19
+ import { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
20
+ import { CompareVaultsInput } from '../utils/validators.js';
21
+ import { ServiceContainer } from '../core/container.js';
22
+ /**
23
+ * Create the executeCompareVaults function with DI container
24
+ *
25
+ * @param container - Service container with dependencies
26
+ * @returns Configured tool executor function
27
+ */
28
+ export declare function createExecuteCompareVaults(container: ServiceContainer): (input: CompareVaultsInput) => Promise<CallToolResult>;
29
+ //# sourceMappingURL=compare-vaults.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compare-vaults.d.ts","sourceRoot":"","sources":["../../src/tools/compare-vaults.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAY5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AA2QxD;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,gBAAgB,GAC1B,CAAC,KAAK,EAAE,kBAAkB,KAAK,OAAO,CAAC,cAAc,CAAC,CAkFxD"}