@lagoon-protocol/lagoon-mcp 0.5.0 → 0.7.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 (189) hide show
  1. package/README.md +72 -54
  2. package/dist/cache/index.d.ts +4 -1
  3. package/dist/cache/index.d.ts.map +1 -1
  4. package/dist/cache/index.js +4 -1
  5. package/dist/cache/index.js.map +1 -1
  6. package/dist/config.d.ts +1 -1
  7. package/dist/config.js +1 -1
  8. package/dist/core/container.js +1 -1
  9. package/dist/graphql/fragments/apr-breakdown.fragment.d.ts +4 -1
  10. package/dist/graphql/fragments/apr-breakdown.fragment.d.ts.map +1 -1
  11. package/dist/graphql/fragments/apr-breakdown.fragment.js +3 -0
  12. package/dist/graphql/fragments/apr-breakdown.fragment.js.map +1 -1
  13. package/dist/graphql/fragments/composition.fragment.d.ts +23 -134
  14. package/dist/graphql/fragments/composition.fragment.d.ts.map +1 -1
  15. package/dist/graphql/fragments/composition.fragment.js +9 -7
  16. package/dist/graphql/fragments/composition.fragment.js.map +1 -1
  17. package/dist/graphql/fragments/index.d.ts +1 -1
  18. package/dist/graphql/fragments/index.d.ts.map +1 -1
  19. package/dist/graphql/fragments/index.js +5 -4
  20. package/dist/graphql/fragments/index.js.map +1 -1
  21. package/dist/graphql/fragments/transaction-base.fragment.d.ts +1 -1
  22. package/dist/graphql/fragments/transaction-base.fragment.d.ts.map +1 -1
  23. package/dist/graphql/fragments/transaction-base.fragment.js +0 -1
  24. package/dist/graphql/fragments/transaction-base.fragment.js.map +1 -1
  25. package/dist/graphql/fragments/vault.fragment.d.ts +29 -1
  26. package/dist/graphql/fragments/vault.fragment.d.ts.map +1 -1
  27. package/dist/graphql/fragments/vault.fragment.js +29 -0
  28. package/dist/graphql/fragments/vault.fragment.js.map +1 -1
  29. package/dist/graphql/queries/composition.queries.d.ts +10 -28
  30. package/dist/graphql/queries/composition.queries.d.ts.map +1 -1
  31. package/dist/graphql/queries/composition.queries.js +17 -28
  32. package/dist/graphql/queries/composition.queries.js.map +1 -1
  33. package/dist/graphql/queries/discovery.queries.d.ts +50 -0
  34. package/dist/graphql/queries/discovery.queries.d.ts.map +1 -0
  35. package/dist/graphql/queries/discovery.queries.js +188 -0
  36. package/dist/graphql/queries/discovery.queries.js.map +1 -0
  37. package/dist/graphql/queries/export.queries.d.ts +5 -7
  38. package/dist/graphql/queries/export.queries.d.ts.map +1 -1
  39. package/dist/graphql/queries/export.queries.js +22 -28
  40. package/dist/graphql/queries/export.queries.js.map +1 -1
  41. package/dist/graphql/queries/index.d.ts +4 -3
  42. package/dist/graphql/queries/index.d.ts.map +1 -1
  43. package/dist/graphql/queries/index.js +5 -3
  44. package/dist/graphql/queries/index.js.map +1 -1
  45. package/dist/graphql/queries/performance.queries.d.ts +6 -4
  46. package/dist/graphql/queries/performance.queries.d.ts.map +1 -1
  47. package/dist/graphql/queries/performance.queries.js +5 -11
  48. package/dist/graphql/queries/performance.queries.js.map +1 -1
  49. package/dist/graphql/queries/portfolio.queries.d.ts +6 -12
  50. package/dist/graphql/queries/portfolio.queries.d.ts.map +1 -1
  51. package/dist/graphql/queries/portfolio.queries.js +21 -88
  52. package/dist/graphql/queries/portfolio.queries.js.map +1 -1
  53. package/dist/graphql/queries/prediction.queries.d.ts +13 -15
  54. package/dist/graphql/queries/prediction.queries.d.ts.map +1 -1
  55. package/dist/graphql/queries/prediction.queries.js +12 -31
  56. package/dist/graphql/queries/prediction.queries.js.map +1 -1
  57. package/dist/graphql/queries/risk.queries.d.ts +3 -3
  58. package/dist/graphql/queries/risk.queries.d.ts.map +1 -1
  59. package/dist/graphql/queries/risk.queries.js +7 -22
  60. package/dist/graphql/queries/risk.queries.js.map +1 -1
  61. package/dist/graphql/queries/search.queries.d.ts.map +1 -1
  62. package/dist/graphql/queries/search.queries.js +6 -2
  63. package/dist/graphql/queries/search.queries.js.map +1 -1
  64. package/dist/graphql/queries/transaction.queries.d.ts +6 -26
  65. package/dist/graphql/queries/transaction.queries.d.ts.map +1 -1
  66. package/dist/graphql/queries/transaction.queries.js +227 -59
  67. package/dist/graphql/queries/transaction.queries.js.map +1 -1
  68. package/dist/graphql/queries/vault.queries.d.ts +21 -3
  69. package/dist/graphql/queries/vault.queries.d.ts.map +1 -1
  70. package/dist/graphql/queries/vault.queries.js +38 -0
  71. package/dist/graphql/queries/vault.queries.js.map +1 -1
  72. package/dist/index.js +0 -0
  73. package/dist/services/analytics/risk.service.d.ts +52 -33
  74. package/dist/services/analytics/risk.service.d.ts.map +1 -1
  75. package/dist/services/analytics/risk.service.js +165 -155
  76. package/dist/services/analytics/risk.service.js.map +1 -1
  77. package/dist/tools/compare-vaults.d.ts.map +1 -1
  78. package/dist/tools/compare-vaults.js +50 -77
  79. package/dist/tools/compare-vaults.js.map +1 -1
  80. package/dist/tools/export-data.d.ts.map +1 -1
  81. package/dist/tools/export-data.js +10 -16
  82. package/dist/tools/export-data.js.map +1 -1
  83. package/dist/tools/get-asset.d.ts +17 -0
  84. package/dist/tools/get-asset.d.ts.map +1 -0
  85. package/dist/tools/get-asset.js +44 -0
  86. package/dist/tools/get-asset.js.map +1 -0
  87. package/dist/tools/get-curator.d.ts +13 -0
  88. package/dist/tools/get-curator.d.ts.map +1 -0
  89. package/dist/tools/get-curator.js +81 -0
  90. package/dist/tools/get-curator.js.map +1 -0
  91. package/dist/tools/get-global-tvl.d.ts +20 -0
  92. package/dist/tools/get-global-tvl.d.ts.map +1 -0
  93. package/dist/tools/get-global-tvl.js +38 -0
  94. package/dist/tools/get-global-tvl.js.map +1 -0
  95. package/dist/tools/get-historical-state.d.ts +22 -0
  96. package/dist/tools/get-historical-state.d.ts.map +1 -0
  97. package/dist/tools/get-historical-state.js +65 -0
  98. package/dist/tools/get-historical-state.js.map +1 -0
  99. package/dist/tools/get-indexing-status.d.ts +20 -0
  100. package/dist/tools/get-indexing-status.d.ts.map +1 -0
  101. package/dist/tools/get-indexing-status.js +38 -0
  102. package/dist/tools/get-indexing-status.js.map +1 -0
  103. package/dist/tools/get-price-history.d.ts.map +1 -1
  104. package/dist/tools/get-price-history.js +55 -63
  105. package/dist/tools/get-price-history.js.map +1 -1
  106. package/dist/tools/get-transactions.d.ts.map +1 -1
  107. package/dist/tools/get-transactions.js +3 -1
  108. package/dist/tools/get-transactions.js.map +1 -1
  109. package/dist/tools/list-chains.d.ts +16 -0
  110. package/dist/tools/list-chains.d.ts.map +1 -0
  111. package/dist/tools/list-chains.js +46 -0
  112. package/dist/tools/list-chains.js.map +1 -0
  113. package/dist/tools/list-curators.d.ts +18 -0
  114. package/dist/tools/list-curators.d.ts.map +1 -0
  115. package/dist/tools/list-curators.js +49 -0
  116. package/dist/tools/list-curators.js.map +1 -0
  117. package/dist/tools/optimize-portfolio.d.ts.map +1 -1
  118. package/dist/tools/optimize-portfolio.js +6 -17
  119. package/dist/tools/optimize-portfolio.js.map +1 -1
  120. package/dist/tools/predict-yield.d.ts.map +1 -1
  121. package/dist/tools/predict-yield.js +109 -11
  122. package/dist/tools/predict-yield.js.map +1 -1
  123. package/dist/tools/registry.d.ts.map +1 -1
  124. package/dist/tools/registry.js +83 -11
  125. package/dist/tools/registry.js.map +1 -1
  126. package/dist/tools/search-vaults.d.ts.map +1 -1
  127. package/dist/tools/search-vaults.js +9 -2
  128. package/dist/tools/search-vaults.js.map +1 -1
  129. package/dist/tools/simulate-vault.d.ts +1 -1
  130. package/dist/tools/user-portfolio.d.ts.map +1 -1
  131. package/dist/tools/user-portfolio.js +30 -51
  132. package/dist/tools/user-portfolio.js.map +1 -1
  133. package/dist/tools/vault-composition.d.ts +18 -15
  134. package/dist/tools/vault-composition.d.ts.map +1 -1
  135. package/dist/tools/vault-composition.js +71 -155
  136. package/dist/tools/vault-composition.js.map +1 -1
  137. package/dist/tools/vault-performance.d.ts.map +1 -1
  138. package/dist/tools/vault-performance.js +7 -19
  139. package/dist/tools/vault-performance.js.map +1 -1
  140. package/dist/types/generated.d.ts +1191 -21
  141. package/dist/types/generated.d.ts.map +1 -1
  142. package/dist/utils/comparison-metrics.d.ts +13 -1
  143. package/dist/utils/comparison-metrics.d.ts.map +1 -1
  144. package/dist/utils/comparison-metrics.js +29 -4
  145. package/dist/utils/comparison-metrics.js.map +1 -1
  146. package/dist/utils/composition-metrics.d.ts +42 -0
  147. package/dist/utils/composition-metrics.d.ts.map +1 -0
  148. package/dist/utils/composition-metrics.js +50 -0
  149. package/dist/utils/composition-metrics.js.map +1 -0
  150. package/dist/utils/csv-generator.d.ts +4 -1
  151. package/dist/utils/csv-generator.d.ts.map +1 -1
  152. package/dist/utils/csv-generator.js +8 -4
  153. package/dist/utils/csv-generator.js.map +1 -1
  154. package/dist/utils/fee-formatting.d.ts +41 -0
  155. package/dist/utils/fee-formatting.d.ts.map +1 -0
  156. package/dist/utils/fee-formatting.js +57 -0
  157. package/dist/utils/fee-formatting.js.map +1 -0
  158. package/dist/utils/operational-signals.d.ts +55 -0
  159. package/dist/utils/operational-signals.d.ts.map +1 -0
  160. package/dist/utils/operational-signals.js +105 -0
  161. package/dist/utils/operational-signals.js.map +1 -0
  162. package/dist/utils/tool-error-handler.d.ts.map +1 -1
  163. package/dist/utils/tool-error-handler.js +8 -6
  164. package/dist/utils/tool-error-handler.js.map +1 -1
  165. package/dist/utils/validators.d.ts +112 -3
  166. package/dist/utils/validators.d.ts.map +1 -1
  167. package/dist/utils/validators.js +108 -4
  168. package/dist/utils/validators.js.map +1 -1
  169. package/dist/utils/yield-prediction.d.ts +3 -0
  170. package/dist/utils/yield-prediction.d.ts.map +1 -1
  171. package/dist/utils/yield-prediction.js +13 -1
  172. package/dist/utils/yield-prediction.js.map +1 -1
  173. package/package.json +2 -2
  174. package/dist/graphql/fragments.d.ts +0 -183
  175. package/dist/graphql/fragments.d.ts.map +0 -1
  176. package/dist/graphql/fragments.js +0 -297
  177. package/dist/graphql/fragments.js.map +0 -1
  178. package/dist/graphql/queries/period-summaries.d.ts +0 -15
  179. package/dist/graphql/queries/period-summaries.d.ts.map +0 -1
  180. package/dist/graphql/queries/period-summaries.js +0 -24
  181. package/dist/graphql/queries/period-summaries.js.map +0 -1
  182. package/dist/services/analytics/protocol-overview.service.d.ts +0 -61
  183. package/dist/services/analytics/protocol-overview.service.d.ts.map +0 -1
  184. package/dist/services/analytics/protocol-overview.service.js +0 -182
  185. package/dist/services/analytics/protocol-overview.service.js.map +0 -1
  186. package/dist/tools/index.d.ts +0 -26
  187. package/dist/tools/index.d.ts.map +0 -1
  188. package/dist/tools/index.js +0 -32
  189. package/dist/tools/index.js.map +0 -1
@@ -1,297 +0,0 @@
1
- /**
2
- * Shared GraphQL Fragments
3
- *
4
- * Reusable query fragments for consistent data fetching across tools.
5
- * Maintains single source of truth for complex nested structures.
6
- */
7
- /**
8
- * Complete vault data GraphQL fragment
9
- *
10
- * Includes ALL available fields for comprehensive vault analysis.
11
- * Use this fragment in any query that needs complete vault information.
12
- *
13
- * Schema verified against working API query on 2025-01-04
14
- *
15
- * Usage:
16
- * ```graphql
17
- * query MyQuery {
18
- * someField {
19
- * vault {
20
- * ...VaultFragment
21
- * }
22
- * }
23
- * }
24
- * ${VAULT_FRAGMENT}
25
- * ```
26
- */
27
- export const VAULT_FRAGMENT = `
28
- fragment VaultFragment on Vault {
29
- address
30
- symbol
31
- decimals
32
- name
33
- description
34
- shortDescription
35
- maxCapacity
36
- logoUrl
37
- averageSettlement
38
- isVisible
39
- asset {
40
- id
41
- name
42
- symbol
43
- decimals
44
- address
45
- logoUrl
46
- description
47
- chain {
48
- id
49
- name
50
- nativeToken
51
- logoUrl
52
- }
53
- priceSources {
54
- chainlinkPriceFeed {
55
- address
56
- chainId
57
- }
58
- }
59
- priceUsd
60
- isVisible
61
- }
62
- chain {
63
- id
64
- name
65
- nativeToken
66
- logoUrl
67
- wrappedNativeToken {
68
- address
69
- decimals
70
- name
71
- symbol
72
- }
73
- factory
74
- }
75
- state {
76
- state
77
- totalAssets
78
- totalAssetsUsd
79
- totalSupply
80
- pricePerShare
81
- pricePerShareUsd
82
- safeAssetBalance
83
- liveAPR {
84
- grossApr
85
- name
86
- netApr
87
- description
88
- }
89
- roles {
90
- owner
91
- valuationManager
92
- whitelistManager
93
- safe
94
- feeReceiver
95
- }
96
- managementFee
97
- performanceFee
98
- pendingSettlement {
99
- assets
100
- assetsUsd
101
- }
102
- inceptionApr {
103
- linearNetApr
104
- linearNetAprWithoutExtraYields
105
- airdrops {
106
- name
107
- apr
108
- description
109
- distributionTimestamp
110
- endTimestamp
111
- isEstimation
112
- logoUrl
113
- multiplier
114
- ppsIncrease
115
- startTimestamp
116
- }
117
- incentives {
118
- name
119
- apr
120
- aprDescription
121
- description
122
- endTimestamp
123
- incentiveRate {
124
- incentiveAmount
125
- referenceToken {
126
- id
127
- }
128
- referenceTokenAmount
129
- }
130
- }
131
- nativeYields {
132
- name
133
- apr
134
- aprDescription
135
- description
136
- endTimestamp
137
- isEstimation
138
- logoUrl
139
- multiplier
140
- startTimestamp
141
- }
142
- }
143
- pendingSiloBalances {
144
- assets
145
- shares
146
- }
147
- monthlyApr {
148
- linearNetApr
149
- linearNetAprWithoutExtraYields
150
- airdrops {
151
- name
152
- apr
153
- description
154
- distributionTimestamp
155
- endTimestamp
156
- isEstimation
157
- logoUrl
158
- multiplier
159
- ppsIncrease
160
- startTimestamp
161
- }
162
- incentives {
163
- name
164
- apr
165
- aprDescription
166
- description
167
- endTimestamp
168
- incentiveRate {
169
- incentiveAmount
170
- referenceToken {
171
- id
172
- }
173
- referenceTokenAmount
174
- }
175
- }
176
- nativeYields {
177
- name
178
- apr
179
- aprDescription
180
- description
181
- endTimestamp
182
- isEstimation
183
- logoUrl
184
- multiplier
185
- startTimestamp
186
- }
187
- }
188
- newTotalAssets
189
- highWaterMark
190
- lastFeeTime
191
- safeAssetBalanceUsd
192
- weeklyApr {
193
- linearNetApr
194
- linearNetAprWithoutExtraYields
195
- airdrops {
196
- name
197
- apr
198
- description
199
- distributionTimestamp
200
- endTimestamp
201
- isEstimation
202
- logoUrl
203
- multiplier
204
- ppsIncrease
205
- startTimestamp
206
- }
207
- incentives {
208
- name
209
- apr
210
- aprDescription
211
- description
212
- endTimestamp
213
- incentiveRate {
214
- incentiveAmount
215
- referenceToken {
216
- id
217
- }
218
- referenceTokenAmount
219
- }
220
- }
221
- nativeYields {
222
- name
223
- apr
224
- aprDescription
225
- description
226
- endTimestamp
227
- isEstimation
228
- logoUrl
229
- multiplier
230
- startTimestamp
231
- }
232
- }
233
- yearlyApr {
234
- linearNetApr
235
- linearNetAprWithoutExtraYields
236
- airdrops {
237
- name
238
- apr
239
- description
240
- distributionTimestamp
241
- endTimestamp
242
- isEstimation
243
- logoUrl
244
- multiplier
245
- ppsIncrease
246
- startTimestamp
247
- }
248
- incentives {
249
- name
250
- apr
251
- aprDescription
252
- description
253
- endTimestamp
254
- incentiveRate {
255
- incentiveAmount
256
- referenceToken {
257
- id
258
- }
259
- referenceTokenAmount
260
- }
261
- }
262
- nativeYields {
263
- name
264
- apr
265
- aprDescription
266
- description
267
- endTimestamp
268
- isEstimation
269
- logoUrl
270
- multiplier
271
- startTimestamp
272
- }
273
- }
274
- }
275
- curators {
276
- name
277
- id
278
- aboutDescription
279
- logoUrl
280
- url
281
- }
282
- integrator {
283
- name
284
- url
285
- logoUrl
286
- aboutDescription
287
- }
288
- defiIntegrations {
289
- name
290
- description
291
- link
292
- logoUrl
293
- type
294
- }
295
- }
296
- `;
297
- //# sourceMappingURL=fragments.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fragments.js","sourceRoot":"","sources":["../../src/graphql/fragments.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAiMH;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6Q7B,CAAC"}
@@ -1,15 +0,0 @@
1
- /**
2
- * GraphQL Query: Period Summaries
3
- *
4
- * Fetch historical vault period summaries for APR calculations.
5
- */
6
- /**
7
- * Query to fetch period summaries for a vault
8
- *
9
- * Period summaries contain historical snapshots of vault state at regular intervals.
10
- * Used by SDK to calculate accurate APR from price per share changes over time.
11
- *
12
- * @returns Array of period summaries with timestamp and vault state
13
- */
14
- export declare const GET_PERIOD_SUMMARIES_QUERY: string;
15
- //# sourceMappingURL=period-summaries.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"period-summaries.d.ts","sourceRoot":"","sources":["../../../src/graphql/queries/period-summaries.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;;;;;;GAOG;AACH,eAAO,MAAM,0BAA0B,QAQtC,CAAC"}
@@ -1,24 +0,0 @@
1
- /**
2
- * GraphQL Query: Period Summaries
3
- *
4
- * Fetch historical vault period summaries for APR calculations.
5
- */
6
- import { gql } from 'graphql-request';
7
- /**
8
- * Query to fetch period summaries for a vault
9
- *
10
- * Period summaries contain historical snapshots of vault state at regular intervals.
11
- * Used by SDK to calculate accurate APR from price per share changes over time.
12
- *
13
- * @returns Array of period summaries with timestamp and vault state
14
- */
15
- export const GET_PERIOD_SUMMARIES_QUERY = gql `
16
- query GetPeriodSummaries($vaultAddress: String!, $chainId: Int!) {
17
- periodSummaries(vaultAddress: $vaultAddress, chainId: $chainId) {
18
- timestamp
19
- totalAssetsAtStart
20
- totalSupplyAtStart
21
- }
22
- }
23
- `;
24
- //# sourceMappingURL=period-summaries.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"period-summaries.js","sourceRoot":"","sources":["../../../src/graphql/queries/period-summaries.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAEtC;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAG,CAAA;;;;;;;;CAQ5C,CAAC"}
@@ -1,61 +0,0 @@
1
- /**
2
- * Protocol Overview Service
3
- *
4
- * Fetches real-time protocol metrics for dynamic prompt generation.
5
- * Provides comprehensive KPI data for protocol health dashboards.
6
- */
7
- import { BaseService } from '../base.service.js';
8
- /**
9
- * Protocol metrics for overview dashboard
10
- */
11
- export interface ProtocolMetrics {
12
- totalTVL: number;
13
- tvl7dChange: number;
14
- tvl30dChange: number;
15
- totalVolume24h: number;
16
- activeVaults: number;
17
- vaultsLast30d: number;
18
- avgAPR: number;
19
- medianAPR: number;
20
- totalUsers: number;
21
- activeUsers30d: number;
22
- newUsers30d: number;
23
- securityIncidents90d: number;
24
- avgRiskScore: number;
25
- totalCurators: number;
26
- activeCurators30d: number;
27
- lastUpdated: string;
28
- }
29
- /**
30
- * Protocol Overview Service
31
- * Fetches and aggregates protocol-level metrics
32
- */
33
- export declare class ProtocolOverviewService extends BaseService {
34
- private readonly CACHE_KEY;
35
- private readonly CACHE_TTL;
36
- /**
37
- * Fetch protocol metrics with caching
38
- */
39
- getMetrics(): Promise<ProtocolMetrics>;
40
- /**
41
- * Fetch protocol metrics from GraphQL
42
- */
43
- private fetchMetrics;
44
- /**
45
- * Calculate protocol metrics from GraphQL data
46
- */
47
- private calculateMetrics;
48
- /**
49
- * Fallback metrics when GraphQL fails
50
- */
51
- private getFallbackMetrics;
52
- /**
53
- * Format TVL with appropriate unit
54
- */
55
- formatTVL(tvl: number): string;
56
- /**
57
- * Format percentage change
58
- */
59
- formatPercentage(value: number): string;
60
- }
61
- //# sourceMappingURL=protocol-overview.service.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"protocol-overview.service.d.ts","sourceRoot":"","sources":["../../../src/services/analytics/protocol-overview.service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD;;GAEG;AACH,MAAM,WAAW,eAAe;IAE9B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IAGvB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAGlB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IAGpB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;IAGrB,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAG1B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,qBAAa,uBAAwB,SAAQ,WAAW;IACtD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA+B;IACzD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAO;IAEjC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,eAAe,CAAC;IAgB5C;;OAEG;YACW,YAAY;IA4E1B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAwFxB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAqB1B;;OAEG;IACH,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAU9B;;OAEG;IACH,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;CAIxC"}
@@ -1,182 +0,0 @@
1
- /**
2
- * Protocol Overview Service
3
- *
4
- * Fetches real-time protocol metrics for dynamic prompt generation.
5
- * Provides comprehensive KPI data for protocol health dashboards.
6
- */
7
- import { BaseService } from '../base.service.js';
8
- /**
9
- * Protocol Overview Service
10
- * Fetches and aggregates protocol-level metrics
11
- */
12
- export class ProtocolOverviewService extends BaseService {
13
- CACHE_KEY = 'protocol:overview:metrics';
14
- CACHE_TTL = 300; // 5 minutes
15
- /**
16
- * Fetch protocol metrics with caching
17
- */
18
- async getMetrics() {
19
- // Check cache
20
- const cached = this.cache.get(this.CACHE_KEY);
21
- if (cached) {
22
- return cached;
23
- }
24
- // Fetch from GraphQL
25
- const metrics = await this.fetchMetrics();
26
- // Cache results
27
- this.cache.set(this.CACHE_KEY, metrics, this.CACHE_TTL);
28
- return metrics;
29
- }
30
- /**
31
- * Fetch protocol metrics from GraphQL
32
- */
33
- async fetchMetrics() {
34
- const query = `
35
- query ProtocolOverview {
36
- vaults(first: 1000) {
37
- items {
38
- id
39
- address
40
- chain { id }
41
- state {
42
- totalAssetsUsd
43
- managementFee
44
- performanceFee
45
- }
46
- curators {
47
- id
48
- }
49
- createdAt
50
- }
51
- }
52
- events(
53
- first: 1000
54
- where: { type_in: ["Deposit", "Withdrawal"] }
55
- orderBy: "timestamp"
56
- orderDirection: "desc"
57
- ) {
58
- items {
59
- timestamp
60
- type
61
- data {
62
- ... on DepositEvent {
63
- assetsUsd
64
- }
65
- ... on WithdrawalEvent {
66
- assetsUsd
67
- }
68
- }
69
- }
70
- }
71
- }
72
- `;
73
- try {
74
- const data = await this.client.request(query);
75
- return this.calculateMetrics(data);
76
- }
77
- catch (error) {
78
- // Return fallback metrics on error
79
- console.error('Failed to fetch protocol metrics:', error);
80
- return this.getFallbackMetrics();
81
- }
82
- }
83
- /**
84
- * Calculate protocol metrics from GraphQL data
85
- */
86
- calculateMetrics(data) {
87
- const now = Date.now();
88
- const day30Ago = now - 30 * 24 * 60 * 60 * 1000;
89
- // Calculate total TVL
90
- const totalTVL = data.vaults.items.reduce((sum, v) => sum + (v.state?.totalAssetsUsd || 0), 0);
91
- // Calculate vault counts
92
- const activeVaults = data.vaults.items.filter((v) => (v.state?.totalAssetsUsd || 0) > 0).length;
93
- const vaultsCreatedLast30d = data.vaults.items.filter((v) => new Date(v.createdAt).getTime() > day30Ago).length;
94
- // Calculate weighted average APR (simplified - would need more data in real implementation)
95
- const avgAPR = 12.5; // Placeholder - needs actual APR calculation from performance data
96
- // Calculate median APR
97
- const medianAPR = 11.8; // Placeholder - needs actual APR calculation
98
- // Calculate 24h volume from events
99
- const volume24h = data.events.items
100
- .filter((e) => parseInt(e.timestamp, 10) * 1000 > now - 24 * 60 * 60 * 1000)
101
- .reduce((sum, e) => sum + (e.data.assetsUsd || 0), 0);
102
- // Extract unique user addresses (would need user-specific query in real implementation)
103
- const totalUsers = Math.floor(activeVaults * 2.5); // Estimated users per vault
104
- const activeUsers30d = Math.floor(totalUsers * 0.35); // 35% monthly active
105
- const newUsers30d = Math.floor(totalUsers * 0.15); // 15% new users
106
- // Security metrics (would need security incident tracking in real implementation)
107
- // TODO: Implement actual 90-day security incident tracking with date filtering
108
- const securityIncidents90d = 0;
109
- const avgRiskScore = 35; // Average risk score across all vaults
110
- // Curator metrics
111
- const uniqueCurators = new Set(data.vaults.items.flatMap((v) => v.curators.map((c) => c.id)));
112
- const totalCurators = uniqueCurators.size;
113
- const activeCurators30d = Math.floor(totalCurators * 0.7); // 70% active monthly
114
- // TVL changes (simplified - would need historical data)
115
- // TODO: Implement actual historical TVL tracking for 7d/30d change calculations
116
- const tvl7dChange = 5.2; // Placeholder percentage
117
- const tvl30dChange = 12.3; // Placeholder percentage
118
- return {
119
- totalTVL,
120
- tvl7dChange,
121
- tvl30dChange,
122
- totalVolume24h: volume24h,
123
- activeVaults,
124
- vaultsLast30d: vaultsCreatedLast30d,
125
- avgAPR,
126
- medianAPR,
127
- totalUsers,
128
- activeUsers30d,
129
- newUsers30d,
130
- securityIncidents90d,
131
- avgRiskScore,
132
- totalCurators,
133
- activeCurators30d,
134
- lastUpdated: new Date().toISOString(),
135
- };
136
- }
137
- /**
138
- * Fallback metrics when GraphQL fails
139
- */
140
- getFallbackMetrics() {
141
- return {
142
- totalTVL: 0,
143
- tvl7dChange: 0,
144
- tvl30dChange: 0,
145
- totalVolume24h: 0,
146
- activeVaults: 0,
147
- vaultsLast30d: 0,
148
- avgAPR: 0,
149
- medianAPR: 0,
150
- totalUsers: 0,
151
- activeUsers30d: 0,
152
- newUsers30d: 0,
153
- securityIncidents90d: 0,
154
- avgRiskScore: 0,
155
- totalCurators: 0,
156
- activeCurators30d: 0,
157
- lastUpdated: new Date().toISOString(),
158
- };
159
- }
160
- /**
161
- * Format TVL with appropriate unit
162
- */
163
- formatTVL(tvl) {
164
- if (tvl >= 1_000_000) {
165
- return `$${(tvl / 1_000_000).toFixed(1)}M`;
166
- }
167
- else if (tvl >= 1_000) {
168
- return `$${(tvl / 1_000).toFixed(1)}K`;
169
- }
170
- else {
171
- return `$${tvl.toFixed(0)}`;
172
- }
173
- }
174
- /**
175
- * Format percentage change
176
- */
177
- formatPercentage(value) {
178
- const sign = value >= 0 ? '+' : '';
179
- return `${sign}${value.toFixed(1)}%`;
180
- }
181
- }
182
- //# sourceMappingURL=protocol-overview.service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"protocol-overview.service.js","sourceRoot":"","sources":["../../../src/services/analytics/protocol-overview.service.ts"],"names":[],"mappings":"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"}
@@ -1,26 +0,0 @@
1
- /**
2
- * Tool Registry (DEPRECATED)
3
- *
4
- * This file is deprecated. Use src/tools/registry.ts instead.
5
- * Kept for backward compatibility only.
6
- */
7
- import { CallToolRequest, CallToolResult } from '@modelcontextprotocol/sdk/types.js';
8
- /**
9
- * @deprecated Use ToolDefinition from './registry.js' instead
10
- */
11
- export type { ToolDefinition as Tool } from './registry.js';
12
- /**
13
- * @deprecated Use TOOL_REGISTRY from './registry.js' instead
14
- * Tool array kept for backward compatibility only
15
- */
16
- export { TOOL_REGISTRY as tools } from './registry.js';
17
- /**
18
- * @deprecated Tool handlers are now managed by the registry
19
- * Use registerTools() from './registry.js' instead
20
- */
21
- /**
22
- * @deprecated Use registerTools() from './registry.js' instead
23
- * This function is kept for backward compatibility only
24
- */
25
- export declare function handleToolCall(request: CallToolRequest): CallToolResult;
26
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAErF;;GAEG;AACH,YAAY,EAAE,cAAc,IAAI,IAAI,EAAE,MAAM,eAAe,CAAC;AAE5D;;;GAGG;AACH,OAAO,EAAE,aAAa,IAAI,KAAK,EAAE,MAAM,eAAe,CAAC;AAEvD;;;GAGG;AAEH;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG,cAAc,CAYvE"}
@@ -1,32 +0,0 @@
1
- /**
2
- * Tool Registry (DEPRECATED)
3
- *
4
- * This file is deprecated. Use src/tools/registry.ts instead.
5
- * Kept for backward compatibility only.
6
- */
7
- /**
8
- * @deprecated Use TOOL_REGISTRY from './registry.js' instead
9
- * Tool array kept for backward compatibility only
10
- */
11
- export { TOOL_REGISTRY as tools } from './registry.js';
12
- /**
13
- * @deprecated Tool handlers are now managed by the registry
14
- * Use registerTools() from './registry.js' instead
15
- */
16
- /**
17
- * @deprecated Use registerTools() from './registry.js' instead
18
- * This function is kept for backward compatibility only
19
- */
20
- export function handleToolCall(request) {
21
- const toolName = request.params.name;
22
- return {
23
- content: [
24
- {
25
- type: 'text',
26
- text: `Tool "${toolName}" should be called via the MCP server. Use registerTools() from './registry.js'.`,
27
- },
28
- ],
29
- isError: true,
30
- };
31
- }
32
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH;;;GAGG;AACH,OAAO,EAAE,aAAa,IAAI,KAAK,EAAE,MAAM,eAAe,CAAC;AAEvD;;;GAGG;AAEH;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,OAAwB;IACrD,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;IAErC,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,SAAS,QAAQ,kFAAkF;aAC1G;SACF;QACD,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC"}