@lagoon-protocol/lagoon-mcp 0.2.20 → 0.2.21

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 (42) hide show
  1. package/dist/graphql/queries/index.d.ts +1 -1
  2. package/dist/graphql/queries/index.d.ts.map +1 -1
  3. package/dist/graphql/queries/index.js +1 -1
  4. package/dist/graphql/queries/index.js.map +1 -1
  5. package/dist/graphql/queries/vault.queries.d.ts +17 -0
  6. package/dist/graphql/queries/vault.queries.d.ts.map +1 -1
  7. package/dist/graphql/queries/vault.queries.js +30 -0
  8. package/dist/graphql/queries/vault.queries.js.map +1 -1
  9. package/dist/server.js +1 -1
  10. package/dist/services/analytics/risk.service.d.ts.map +1 -1
  11. package/dist/services/analytics/risk.service.js +26 -2
  12. package/dist/services/analytics/risk.service.js.map +1 -1
  13. package/dist/tools/compare-vaults.d.ts.map +1 -1
  14. package/dist/tools/compare-vaults.js +76 -12
  15. package/dist/tools/compare-vaults.js.map +1 -1
  16. package/dist/tools/predict-yield.d.ts.map +1 -1
  17. package/dist/tools/predict-yield.js +32 -0
  18. package/dist/tools/predict-yield.js.map +1 -1
  19. package/dist/utils/comparison-metrics.d.ts +2 -2
  20. package/dist/utils/comparison-metrics.d.ts.map +1 -1
  21. package/dist/utils/comparison-metrics.js +22 -10
  22. package/dist/utils/comparison-metrics.js.map +1 -1
  23. package/dist/utils/portfolio-optimization.d.ts.map +1 -1
  24. package/dist/utils/portfolio-optimization.js +66 -17
  25. package/dist/utils/portfolio-optimization.js.map +1 -1
  26. package/dist/utils/risk-scoring.d.ts +61 -2
  27. package/dist/utils/risk-scoring.d.ts.map +1 -1
  28. package/dist/utils/risk-scoring.js +109 -32
  29. package/dist/utils/risk-scoring.js.map +1 -1
  30. package/dist/utils/safe-math.d.ts +64 -0
  31. package/dist/utils/safe-math.d.ts.map +1 -0
  32. package/dist/utils/safe-math.js +116 -0
  33. package/dist/utils/safe-math.js.map +1 -0
  34. package/dist/utils/yield-prediction.d.ts +7 -0
  35. package/dist/utils/yield-prediction.d.ts.map +1 -1
  36. package/dist/utils/yield-prediction.js +49 -31
  37. package/dist/utils/yield-prediction.js.map +1 -1
  38. package/package.json +1 -1
  39. package/dist/services/analytics/protocol-overview.service.d.ts +0 -61
  40. package/dist/services/analytics/protocol-overview.service.d.ts.map +0 -1
  41. package/dist/services/analytics/protocol-overview.service.js +0 -182
  42. package/dist/services/analytics/protocol-overview.service.js.map +0 -1
@@ -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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"}