@lagoon-protocol/lagoon-mcp 0.2.12 → 0.2.14

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 (67) hide show
  1. package/dist/cache/index.d.ts +2 -0
  2. package/dist/cache/index.d.ts.map +1 -1
  3. package/dist/cache/index.js +2 -0
  4. package/dist/cache/index.js.map +1 -1
  5. package/dist/graphql/fragments/composition.fragment.d.ts +49 -0
  6. package/dist/graphql/fragments/composition.fragment.d.ts.map +1 -0
  7. package/dist/graphql/fragments/composition.fragment.js +50 -0
  8. package/dist/graphql/fragments/composition.fragment.js.map +1 -0
  9. package/dist/graphql/fragments/index.d.ts +1 -0
  10. package/dist/graphql/fragments/index.d.ts.map +1 -1
  11. package/dist/graphql/fragments/index.js +2 -0
  12. package/dist/graphql/fragments/index.js.map +1 -1
  13. package/dist/graphql/queries/composition.queries.d.ts +22 -0
  14. package/dist/graphql/queries/composition.queries.d.ts.map +1 -0
  15. package/dist/graphql/queries/composition.queries.js +30 -0
  16. package/dist/graphql/queries/composition.queries.js.map +1 -0
  17. package/dist/graphql/queries/index.d.ts +1 -0
  18. package/dist/graphql/queries/index.d.ts.map +1 -1
  19. package/dist/graphql/queries/index.js +2 -0
  20. package/dist/graphql/queries/index.js.map +1 -1
  21. package/dist/graphql/queries/portfolio.queries.d.ts +17 -0
  22. package/dist/graphql/queries/portfolio.queries.d.ts.map +1 -1
  23. package/dist/graphql/queries/portfolio.queries.js +25 -1
  24. package/dist/graphql/queries/portfolio.queries.js.map +1 -1
  25. package/dist/graphql/queries/risk.queries.d.ts +1 -1
  26. package/dist/graphql/queries/risk.queries.d.ts.map +1 -1
  27. package/dist/graphql/queries/risk.queries.js +7 -1
  28. package/dist/graphql/queries/risk.queries.js.map +1 -1
  29. package/dist/prompts/financial-analysis.d.ts.map +1 -1
  30. package/dist/prompts/financial-analysis.js +87 -7
  31. package/dist/prompts/financial-analysis.js.map +1 -1
  32. package/dist/server.js +1 -1
  33. package/dist/services/analytics/risk.service.d.ts +12 -0
  34. package/dist/services/analytics/risk.service.d.ts.map +1 -1
  35. package/dist/services/analytics/risk.service.js +26 -0
  36. package/dist/services/analytics/risk.service.js.map +1 -1
  37. package/dist/skills/portfolio-review.d.ts.map +1 -1
  38. package/dist/skills/portfolio-review.js +80 -4
  39. package/dist/skills/portfolio-review.js.map +1 -1
  40. package/dist/skills/risk-expert.d.ts.map +1 -1
  41. package/dist/skills/risk-expert.js +76 -10
  42. package/dist/skills/risk-expert.js.map +1 -1
  43. package/dist/tools/compare-vaults.d.ts.map +1 -1
  44. package/dist/tools/compare-vaults.js +75 -1
  45. package/dist/tools/compare-vaults.js.map +1 -1
  46. package/dist/tools/registry.d.ts.map +1 -1
  47. package/dist/tools/registry.js +15 -1
  48. package/dist/tools/registry.js.map +1 -1
  49. package/dist/tools/search-vaults.d.ts.map +1 -1
  50. package/dist/tools/search-vaults.js +18 -10
  51. package/dist/tools/search-vaults.js.map +1 -1
  52. package/dist/tools/user-portfolio.d.ts.map +1 -1
  53. package/dist/tools/user-portfolio.js +115 -11
  54. package/dist/tools/user-portfolio.js.map +1 -1
  55. package/dist/tools/vault-composition.d.ts +27 -0
  56. package/dist/tools/vault-composition.d.ts.map +1 -0
  57. package/dist/tools/vault-composition.js +146 -0
  58. package/dist/tools/vault-composition.js.map +1 -0
  59. package/dist/utils/risk-scoring.d.ts +33 -0
  60. package/dist/utils/risk-scoring.d.ts.map +1 -1
  61. package/dist/utils/risk-scoring.js +73 -14
  62. package/dist/utils/risk-scoring.js.map +1 -1
  63. package/dist/utils/validators.d.ts +8 -0
  64. package/dist/utils/validators.d.ts.map +1 -1
  65. package/dist/utils/validators.js +4 -0
  66. package/dist/utils/validators.js.map +1 -1
  67. package/package.json +1 -1
@@ -20,8 +20,9 @@ import { createExecuteAnalyzeRisk } from './analyze-risk.js';
20
20
  import { createExecutePredictYield } from './predict-yield.js';
21
21
  import { createExecuteOptimizePortfolio } from './optimize-portfolio.js';
22
22
  import { createExecuteSimulateVault, simulateVaultInputSchema } from './simulate-vault.js';
23
+ import { createExecuteGetVaultComposition } from './vault-composition.js';
23
24
  // Input schemas
24
- import { queryGraphQLInputSchema, getVaultDataInputSchema, getUserPortfolioInputSchema, searchVaultsInputSchema, getVaultPerformanceInputSchema, getTransactionsInputSchema, compareVaultsInputSchema, priceHistoryInputSchema, exportDataInputSchema, analyzeRiskInputSchema, predictYieldInputSchema, optimizePortfolioInputSchema, } from '../utils/validators.js';
25
+ import { queryGraphQLInputSchema, getVaultDataInputSchema, getUserPortfolioInputSchema, searchVaultsInputSchema, getVaultPerformanceInputSchema, getTransactionsInputSchema, compareVaultsInputSchema, priceHistoryInputSchema, exportDataInputSchema, analyzeRiskInputSchema, predictYieldInputSchema, optimizePortfolioInputSchema, getVaultCompositionInputSchema, } from '../utils/validators.js';
25
26
  // Tool utilities
26
27
  import { createToolHandler } from '../utils/tool-handler.js';
27
28
  /**
@@ -203,6 +204,19 @@ export const TOOL_REGISTRY = [
203
204
  schema: simulateVaultInputSchema,
204
205
  executorFactory: createExecuteSimulateVault,
205
206
  },
207
+ {
208
+ name: 'get_vault_composition',
209
+ description: 'Fetch vault protocol and token composition with diversification analysis. ' +
210
+ 'Returns breakdown by protocol (e.g., Aave, Morpho, Compound) and by position/token. ' +
211
+ 'Calculates HHI (Herfindahl-Hirschman Index) for diversification scoring. ' +
212
+ 'Diversification levels: High (HHI < 0.15), Medium (0.15-0.25), Low (> 0.25). ' +
213
+ 'Small allocations (<1%) are grouped into "Other" category with details. ' +
214
+ 'Best for: understanding protocol exposure, identifying concentration risks, portfolio composition analysis. ' +
215
+ 'Performance: ~300-500 tokens per vault. ' +
216
+ 'Features 15-minute caching (backend caches Octav API data for 6 hours).',
217
+ schema: getVaultCompositionInputSchema,
218
+ executorFactory: createExecuteGetVaultComposition,
219
+ },
206
220
  ];
207
221
  /**
208
222
  * Extract the raw shape from a Zod schema, handling ZodEffects wrappers.
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"search-vaults.d.ts","sourceRoot":"","sources":["../../src/tools/search-vaults.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAGpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAK3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAwGxD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,gBAAgB,GAC1B,CAAC,KAAK,EAAE,iBAAiB,KAAK,OAAO,CAAC,cAAc,CAAC,CA+FvD"}
1
+ {"version":3,"file":"search-vaults.d.ts","sourceRoot":"","sources":["../../src/tools/search-vaults.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAGpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAK3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAwGxD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,gBAAgB,GAC1B,CAAC,KAAK,EAAE,iBAAiB,KAAK,OAAO,CAAC,cAAc,CAAC,CAyGvD"}
@@ -146,27 +146,35 @@ export function createExecuteSearchVaults(container) {
146
146
  });
147
147
  // Execute query
148
148
  const result = await executor(input);
149
- // NEW: Fragment-level caching - cache each vault individually for reuse
150
- // This enables vault_data tool to reuse vaults from search results
149
+ // Post-process response to add flat chainId field for easier Claude extraction
150
+ // Also cache individual vaults for reuse by vault_data tool
151
151
  if (!result.isError && result.content[0]?.type === 'text') {
152
152
  try {
153
153
  const responseData = JSON.parse(result.content[0].text);
154
154
  if (responseData.vaults?.items && Array.isArray(responseData.vaults.items)) {
155
- // Cache each vault individually with vault-specific key
155
+ // Enrich each vault with flat chainId and cache individually
156
156
  const vaults = responseData.vaults.items;
157
157
  vaults.forEach((vault) => {
158
- if (vault.address && vault.chain?.id) {
159
- const vaultCacheKey = generateCacheKey(CacheTag.VAULT, {
160
- address: String(vault.address),
161
- chainId: Number(vault.chain.id),
162
- });
163
- container.cache.set(vaultCacheKey, vault, cacheTTL.vaultData);
158
+ if (vault.chain?.id) {
159
+ // Add flat chainId as integer for easier extraction by Claude
160
+ // This allows Claude to use vault.chainId directly instead of parseInt(vault.chain.id)
161
+ vault.chainId = Number(vault.chain.id);
162
+ // Cache each vault individually with vault-specific key
163
+ if (vault.address) {
164
+ const vaultCacheKey = generateCacheKey(CacheTag.VAULT, {
165
+ address: String(vault.address),
166
+ chainId: Number(vault.chain.id),
167
+ });
168
+ container.cache.set(vaultCacheKey, vault, cacheTTL.vaultData);
169
+ }
164
170
  }
165
171
  });
172
+ // Update the result content with enriched data
173
+ result.content[0].text = JSON.stringify(responseData);
166
174
  }
167
175
  }
168
176
  catch (error) {
169
- // If parsing fails, just return the result without fragment caching
177
+ // If parsing fails, just return the result without enrichment
170
178
  // This is a non-critical optimization
171
179
  }
172
180
  }
@@ -1 +1 @@
1
- {"version":3,"file":"search-vaults.js","sourceRoot":"","sources":["../../src/tools/search-vaults.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"search-vaults.js","sourceRoot":"","sources":["../../src/tools/search-vaults.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"user-portfolio.d.ts","sourceRoot":"","sources":["../../src/tools/user-portfolio.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAM/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAuHxD;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAC3C,SAAS,EAAE,gBAAgB,GAC1B,CAAC,KAAK,EAAE,qBAAqB,KAAK,OAAO,CAAC,cAAc,CAAC,CAkF3D"}
1
+ {"version":3,"file":"user-portfolio.d.ts","sourceRoot":"","sources":["../../src/tools/user-portfolio.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAS/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAuPxD;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAC3C,SAAS,EAAE,gBAAgB,GAC1B,CAAC,KAAK,EAAE,qBAAqB,KAAK,OAAO,CAAC,cAAc,CAAC,CAoI3D"}
@@ -18,10 +18,78 @@
18
18
  * - Cache tags: [CacheTag.PORTFOLIO] for invalidation
19
19
  */
20
20
  import { getToolDisclaimer } from '../utils/disclaimers.js';
21
- import { createGetUserPortfolioQuery } from '../graphql/queries/portfolio.queries.js';
21
+ import { createGetUserPortfolioQuery, SINGLE_VAULT_COMPOSITION_QUERY, } from '../graphql/queries/portfolio.queries.js';
22
22
  import { executeToolWithCache } from '../utils/execute-tool-with-cache.js';
23
23
  import { CacheTag } from '../core/cache-invalidation.js';
24
24
  import { cacheKeys, cacheTTL, generateCacheKey } from '../cache/index.js';
25
+ /**
26
+ * Aggregate composition data across all portfolio positions
27
+ *
28
+ * Calculates portfolio-wide protocol exposure weighted by position size,
29
+ * portfolio-level HHI, and detects accidental concentration across vaults.
30
+ *
31
+ * @param vaultCompositions - Array of vault compositions with position values
32
+ * @param totalPortfolioValue - Total portfolio value in USD
33
+ * @returns Portfolio composition summary with diversification metrics
34
+ */
35
+ function aggregatePortfolioComposition(vaultCompositions, totalPortfolioValue) {
36
+ // Track protocol exposure across all vaults
37
+ const protocolExposureMap = new Map();
38
+ // Aggregate weighted exposure from each vault
39
+ for (const entry of vaultCompositions) {
40
+ for (const comp of entry.compositions) {
41
+ // Weight the protocol exposure by position size
42
+ const weightedExposure = (comp.repartition / 100) * entry.positionValueUsd;
43
+ const existing = protocolExposureMap.get(comp.protocol);
44
+ if (existing) {
45
+ existing.valueUsd += weightedExposure;
46
+ if (!existing.vaultAddresses.includes(entry.vaultAddress)) {
47
+ existing.vaultAddresses.push(entry.vaultAddress);
48
+ }
49
+ }
50
+ else {
51
+ protocolExposureMap.set(comp.protocol, {
52
+ valueUsd: weightedExposure,
53
+ vaultAddresses: [entry.vaultAddress],
54
+ });
55
+ }
56
+ }
57
+ }
58
+ // Convert to array and calculate repartition percentages
59
+ const exposures = Array.from(protocolExposureMap.entries())
60
+ .map(([protocol, data]) => ({
61
+ protocol,
62
+ valueUsd: data.valueUsd,
63
+ repartition: totalPortfolioValue > 0 ? (data.valueUsd / totalPortfolioValue) * 100 : 0,
64
+ vaultCount: data.vaultAddresses.length,
65
+ }))
66
+ .sort((a, b) => b.repartition - a.repartition);
67
+ // Calculate portfolio-level HHI
68
+ const portfolioHHI = exposures.reduce((sum, e) => sum + Math.pow(e.repartition / 100, 2), 0);
69
+ // Determine diversification level
70
+ const diversificationLevel = portfolioHHI < 0.15 ? 'High' : portfolioHHI < 0.25 ? 'Medium' : 'Low';
71
+ // Detect accidental concentration (same protocol in 3+ vaults with >20% total exposure)
72
+ const accidentalConcentration = [];
73
+ for (const [protocol, data] of protocolExposureMap.entries()) {
74
+ const totalExposure = totalPortfolioValue > 0 ? (data.valueUsd / totalPortfolioValue) * 100 : 0;
75
+ if (data.vaultAddresses.length >= 3 && totalExposure >= 20) {
76
+ accidentalConcentration.push({
77
+ protocol,
78
+ vaultCount: data.vaultAddresses.length,
79
+ totalExposure,
80
+ vaultAddresses: data.vaultAddresses,
81
+ });
82
+ }
83
+ }
84
+ return {
85
+ protocolExposure: exposures.slice(0, 10), // Top 10 protocols
86
+ portfolioHHI,
87
+ diversificationLevel,
88
+ topProtocol: exposures[0]?.protocol || null,
89
+ topProtocolPercent: exposures[0]?.repartition || null,
90
+ accidentalConcentration,
91
+ };
92
+ }
25
93
  /**
26
94
  * Transform raw GraphQL response into aggregated portfolio
27
95
  */
@@ -110,27 +178,63 @@ export function createExecuteGetUserPortfolio(container) {
110
178
  container.cacheInvalidator.register(cacheKey, [CacheTag.PORTFOLIO]);
111
179
  // Execute query
112
180
  const result = await executor(input);
113
- // NEW: Fragment-level caching - cache each vault from positions for reuse
114
- // This enables vault_data tool to reuse vaults from portfolio results
181
+ // Post-process response to add flat chainId field for easier Claude extraction
182
+ // Also cache individual vaults for reuse by vault_data tool
183
+ // And fetch composition data for portfolio-level diversification analysis
115
184
  if (!result.isError && result.content[0]?.type === 'text') {
116
185
  try {
117
186
  const responseData = JSON.parse(result.content[0].text);
118
187
  if (responseData.positions && Array.isArray(responseData.positions)) {
119
- // Cache each vault from positions individually with vault-specific key
188
+ // Enrich each vault with flat chainId and cache individually
120
189
  const positions = responseData.positions;
121
190
  positions.forEach((position) => {
122
- if (position.vault && position.vault.address && position.vault.chain?.id) {
123
- const vaultCacheKey = generateCacheKey(CacheTag.VAULT, {
124
- address: String(position.vault.address),
125
- chainId: Number(position.vault.chain.id),
126
- });
127
- container.cache.set(vaultCacheKey, position.vault, cacheTTL.vaultData);
191
+ if (position.vault && position.vault.chain?.id) {
192
+ // Add flat chainId as integer for easier extraction by Claude
193
+ // This allows Claude to use vault.chainId directly instead of parseInt(vault.chain.id)
194
+ position.vault.chainId = Number(position.vault.chain.id);
195
+ // Cache each vault from positions individually with vault-specific key
196
+ if (position.vault.address) {
197
+ const vaultCacheKey = generateCacheKey(CacheTag.VAULT, {
198
+ address: String(position.vault.address),
199
+ chainId: Number(position.vault.chain.id),
200
+ });
201
+ container.cache.set(vaultCacheKey, position.vault, cacheTTL.vaultData);
202
+ }
203
+ }
204
+ });
205
+ // Fetch composition data for each vault in parallel
206
+ // This enables portfolio-wide diversification analysis
207
+ const compositionPromises = positions.map(async (position) => {
208
+ try {
209
+ const compResponse = await container.graphqlClient.request(SINGLE_VAULT_COMPOSITION_QUERY, { vaultAddress: position.vaultAddress });
210
+ if (compResponse.vaultComposition?.compositions) {
211
+ return {
212
+ vaultAddress: position.vaultAddress,
213
+ positionValueUsd: parseFloat(position.sharesUsd || '0'),
214
+ compositions: compResponse.vaultComposition.compositions,
215
+ };
216
+ }
217
+ return null;
218
+ }
219
+ catch {
220
+ // If composition fetch fails for a vault, skip it
221
+ return null;
128
222
  }
129
223
  });
224
+ // Wait for all composition fetches (with timeout protection)
225
+ const compositionResults = await Promise.all(compositionPromises);
226
+ const validCompositions = compositionResults.filter((c) => c !== null);
227
+ // If we have composition data, calculate portfolio-level diversification
228
+ if (validCompositions.length > 0) {
229
+ const totalPortfolioValue = parseFloat(responseData.totalValueUsd || '0');
230
+ responseData.compositionSummary = aggregatePortfolioComposition(validCompositions, totalPortfolioValue);
231
+ }
232
+ // Update the result content with enriched data
233
+ result.content[0].text = JSON.stringify(responseData);
130
234
  }
131
235
  }
132
236
  catch (error) {
133
- // If parsing fails, just return the result without fragment caching
237
+ // If parsing fails, just return the result without enrichment
134
238
  // This is a non-critical optimization
135
239
  }
136
240
  }
@@ -1 +1 @@
1
- {"version":3,"file":"user-portfolio.js","sourceRoot":"","sources":["../../src/tools/user-portfolio.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"user-portfolio.js","sourceRoot":"","sources":["../../src/tools/user-portfolio.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * get_vault_composition Tool
3
+ *
4
+ * Fetch vault protocol and token composition with diversification analysis.
5
+ * Provides breakdown by protocol and by position/token.
6
+ *
7
+ * Use cases:
8
+ * - Understanding vault protocol exposure
9
+ * - Analyzing diversification levels via HHI score
10
+ * - Identifying concentration risks
11
+ * - Portfolio composition visualization
12
+ *
13
+ * Cache strategy:
14
+ * - 15-minute TTL aligned with vault data freshness
15
+ * - Cache key: composition:{address}
16
+ */
17
+ import { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
18
+ import { GetVaultCompositionInput } from '../utils/validators.js';
19
+ import { ServiceContainer } from '../core/container.js';
20
+ /**
21
+ * Create the executeGetVaultComposition function with DI container
22
+ *
23
+ * @param container - Service container with dependencies
24
+ * @returns Configured tool executor function
25
+ */
26
+ export declare function createExecuteGetVaultComposition(container: ServiceContainer): (input: GetVaultCompositionInput) => Promise<CallToolResult>;
27
+ //# sourceMappingURL=vault-composition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vault-composition.d.ts","sourceRoot":"","sources":["../../src/tools/vault-composition.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAKlE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AA2HxD;;;;;GAKG;AACH,wBAAgB,gCAAgC,CAC9C,SAAS,EAAE,gBAAgB,GAC1B,CAAC,KAAK,EAAE,wBAAwB,KAAK,OAAO,CAAC,cAAc,CAAC,CAqD9D"}
@@ -0,0 +1,146 @@
1
+ /**
2
+ * get_vault_composition Tool
3
+ *
4
+ * Fetch vault protocol and token composition with diversification analysis.
5
+ * Provides breakdown by protocol and by position/token.
6
+ *
7
+ * Use cases:
8
+ * - Understanding vault protocol exposure
9
+ * - Analyzing diversification levels via HHI score
10
+ * - Identifying concentration risks
11
+ * - Portfolio composition visualization
12
+ *
13
+ * Cache strategy:
14
+ * - 15-minute TTL aligned with vault data freshness
15
+ * - Cache key: composition:{address}
16
+ */
17
+ import { getToolDisclaimer } from '../utils/disclaimers.js';
18
+ import { GET_VAULT_COMPOSITION_QUERY } from '../graphql/queries/index.js';
19
+ import { executeToolWithCache } from '../utils/execute-tool-with-cache.js';
20
+ import { CacheTag } from '../core/cache-invalidation.js';
21
+ import { cacheKeys, cacheTTL } from '../cache/index.js';
22
+ import { createSuccessResponse } from '../utils/tool-response.js';
23
+ /**
24
+ * HHI (Herfindahl-Hirschman Index) calculation for diversification analysis
25
+ * Lower HHI = more diversified, Higher HHI = more concentrated
26
+ *
27
+ * HHI ranges (using market concentration thresholds):
28
+ * - < 0.15: High diversification (well-diversified)
29
+ * - 0.15 - 0.25: Moderate concentration
30
+ * - > 0.25: High concentration
31
+ *
32
+ * @param compositions - Array of protocol compositions with repartition percentages
33
+ * @returns HHI score between 0 and 1
34
+ */
35
+ function calculateHHI(compositions) {
36
+ if (compositions.length === 0)
37
+ return 0;
38
+ // HHI = sum of squared market shares (repartition is already in percentage, divide by 100)
39
+ return compositions.reduce((sum, c) => sum + Math.pow(c.repartition / 100, 2), 0);
40
+ }
41
+ /**
42
+ * Get diversification level label based on HHI score
43
+ */
44
+ function getDiversificationLevel(hhi) {
45
+ if (hhi < 0.15)
46
+ return 'High';
47
+ if (hhi < 0.25)
48
+ return 'Medium';
49
+ return 'Low';
50
+ }
51
+ /**
52
+ * Transform raw composition data into enhanced response with analysis
53
+ */
54
+ function transformToEnhancedResponse(data, vaultAddress) {
55
+ const composition = data.vaultComposition;
56
+ if (!composition) {
57
+ return {
58
+ vaultAddress,
59
+ compositions: [],
60
+ tokenCompositions: [],
61
+ analysis: {
62
+ protocolCount: 0,
63
+ positionCount: 0,
64
+ hhi: 0,
65
+ diversificationLevel: 'High',
66
+ topProtocol: null,
67
+ topProtocolPercent: null,
68
+ hasOtherCategory: false,
69
+ },
70
+ };
71
+ }
72
+ const { compositions, tokenCompositions } = composition;
73
+ // Calculate HHI from protocol compositions (excluding "Other" for accurate HHI)
74
+ const mainCompositions = compositions.filter((c) => c.protocol !== 'Other');
75
+ const hhi = calculateHHI(mainCompositions);
76
+ const diversificationLevel = getDiversificationLevel(hhi);
77
+ // Find top protocol
78
+ const topProtocol = mainCompositions.length > 0
79
+ ? mainCompositions.reduce((max, c) => (c.repartition > max.repartition ? c : max))
80
+ : null;
81
+ // Check for "Other" category
82
+ const hasOtherCategory = compositions.some((c) => c.protocol === 'Other');
83
+ return {
84
+ vaultAddress,
85
+ compositions,
86
+ tokenCompositions,
87
+ analysis: {
88
+ protocolCount: mainCompositions.length,
89
+ positionCount: tokenCompositions.filter((t) => t.symbol !== 'Other').length,
90
+ hhi: parseFloat(hhi.toFixed(4)),
91
+ diversificationLevel,
92
+ topProtocol: topProtocol?.protocol ?? null,
93
+ topProtocolPercent: topProtocol?.repartition ?? null,
94
+ hasOtherCategory,
95
+ },
96
+ };
97
+ }
98
+ /**
99
+ * Create the executeGetVaultComposition function with DI container
100
+ *
101
+ * @param container - Service container with dependencies
102
+ * @returns Configured tool executor function
103
+ */
104
+ export function createExecuteGetVaultComposition(container) {
105
+ return async (input) => {
106
+ // Check fragment-level cache first
107
+ const fragmentCacheKey = cacheKeys.composition(input.vaultAddress);
108
+ const cachedComposition = container.cache.get(fragmentCacheKey);
109
+ if (cachedComposition) {
110
+ return createSuccessResponse(cachedComposition);
111
+ }
112
+ // Capture vaultAddress for use in transformResult closure
113
+ const vaultAddress = input.vaultAddress;
114
+ // Cache miss - execute GraphQL query with standard caching
115
+ const executor = executeToolWithCache({
116
+ container,
117
+ cacheKey: () => cacheKeys.composition(vaultAddress),
118
+ cacheTTL: cacheTTL.composition,
119
+ query: GET_VAULT_COMPOSITION_QUERY,
120
+ variables: (toolInput) => ({
121
+ vaultAddress: toolInput.vaultAddress,
122
+ }),
123
+ validateResult: (data) => {
124
+ // Composition might be null if vault doesn't have data yet - that's okay
125
+ return {
126
+ valid: true,
127
+ message: data.vaultComposition
128
+ ? undefined
129
+ : 'No composition data available for this vault',
130
+ isError: false,
131
+ };
132
+ },
133
+ transformResult: (data) => transformToEnhancedResponse(data, vaultAddress),
134
+ toolName: 'get_vault_composition',
135
+ });
136
+ // Register cache tags for invalidation
137
+ container.cacheInvalidator.register(fragmentCacheKey, [CacheTag.VAULT]);
138
+ const result = await executor(input);
139
+ // Add legal disclaimer to output
140
+ if (!result.isError && result.content[0]?.type === 'text') {
141
+ result.content[0].text = result.content[0].text + getToolDisclaimer('vault_composition');
142
+ }
143
+ return result;
144
+ };
145
+ }
146
+ //# sourceMappingURL=vault-composition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vault-composition.js","sourceRoot":"","sources":["../../src/tools/vault-composition.ts"],"names":[],"mappings":"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"}
@@ -20,6 +20,8 @@ export interface RiskScoreBreakdown {
20
20
  settlementRisk: number;
21
21
  integrationComplexityRisk: number;
22
22
  capacityUtilizationRisk: number;
23
+ protocolDiversificationRisk: number;
24
+ topProtocolConcentrationRisk: number;
23
25
  overallRisk: number;
24
26
  riskLevel: 'Low' | 'Medium' | 'High' | 'Critical';
25
27
  }
@@ -156,6 +158,31 @@ export declare function calculateSettlementRisk(settlementData: {
156
158
  * @returns Risk score 0-1 (0 = lowest risk, 1 = highest risk)
157
159
  */
158
160
  export declare function calculateIntegrationComplexityRisk(integrationCount: number): number;
161
+ /**
162
+ * Calculate protocol diversification risk based on HHI (Herfindahl-Hirschman Index)
163
+ *
164
+ * HHI measures concentration: sum of squared market shares
165
+ * - HHI < 0.15: Well diversified across protocols
166
+ * - HHI 0.15-0.25: Moderate concentration
167
+ * - HHI 0.25-0.50: High concentration
168
+ * - HHI > 0.50: Very high concentration (single protocol dominance)
169
+ *
170
+ * @param compositions - Array of protocol compositions with repartition (0-100%)
171
+ * @returns Risk score 0-1 (lower = better diversification)
172
+ */
173
+ export declare function calculateProtocolDiversificationRisk(compositions: Array<{
174
+ repartition: number;
175
+ }> | null | undefined): number;
176
+ /**
177
+ * Calculate top protocol concentration risk
178
+ *
179
+ * Evaluates the risk of having too much exposure to a single protocol.
180
+ * Complements HHI by specifically flagging dominant protocol exposure.
181
+ *
182
+ * @param topProtocolPercent - Percentage allocation to top protocol (0-100 or null)
183
+ * @returns Risk score 0-1 (lower = healthier distribution)
184
+ */
185
+ export declare function calculateTopProtocolConcentrationRisk(topProtocolPercent: number | null | undefined): number;
159
186
  /**
160
187
  * Calculate capacity utilization risk score
161
188
  * Assesses deposit headroom and demand signals
@@ -222,5 +249,11 @@ export declare function analyzeRisk(params: {
222
249
  totalAssets: number;
223
250
  maxCapacity: number | null;
224
251
  };
252
+ compositionData?: {
253
+ compositions?: Array<{
254
+ repartition: number;
255
+ }>;
256
+ topProtocolPercent?: number | null;
257
+ };
225
258
  }): RiskScoreBreakdown;
226
259
  //# sourceMappingURL=risk-scoring.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"risk-scoring.d.ts","sourceRoot":"","sources":["../../src/utils/risk-scoring.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"risk-scoring.d.ts","sourceRoot":"","sources":["../../src/utils/risk-scoring.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,uBAAuB,EAAE,MAAM,CAAC;IAChC,cAAc,EAAE,MAAM,CAAC;IACvB,yBAAyB,EAAE,MAAM,CAAC;IAClC,uBAAuB,EAAE,MAAM,CAAC;IAChC,2BAA2B,EAAE,MAAM,CAAC;IACpC,4BAA4B,EAAE,MAAM,CAAC;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;CACnD;AAED;;GAEG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;CA+B3B,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAYpD;AAED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,MAAM,CAgB7F;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,MAAM,CAiCrE;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAU1D;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,iBAAiB,EAAE,MAAM,EACzB,kBAAkB,GAAE,MAAY,EAChC,mBAAmB,CAAC,EAAE;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,cAAc,EAAE,OAAO,CAAC;IACxB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;CACtB,GACA,MAAM,CA0CR;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,MAAM,EACtB,oBAAoB,EAAE,OAAO,GAC5B,MAAM,CAgBR;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,GAAG,MAAM,CAqB7F;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,EAAE;IACnD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,GAAG,MAAM,CAiCT;AAED;;;;;;GAMG;AACH,wBAAgB,gCAAgC,CAAC,gBAAgB,EAAE;IACjE,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;CACvB,GAAG,MAAM,CAmBT;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,cAAc,EAAE;IACtD,qBAAqB,EAAE,MAAM,CAAC;IAC9B,sBAAsB,EAAE,MAAM,CAAC;CAChC,GAAG,MAAM,CA4BT;AAED;;;;;;GAMG;AACH,wBAAgB,kCAAkC,CAAC,gBAAgB,EAAE,MAAM,GAAG,MAAM,CAYnF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,oCAAoC,CAClD,YAAY,EAAE,KAAK,CAAC;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,IAAI,GAAG,SAAS,GAC9D,MAAM,CAaR;AAED;;;;;;;;GAQG;AACH,wBAAgB,qCAAqC,CACnD,kBAAkB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC5C,MAAM,CASR;AAED;;;;;;GAMG;AACH,wBAAgB,gCAAgC,CAAC,eAAe,EAAE;IAChE,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B,GAAG,MAAM,CAkBT;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,IAAI,CAAC,kBAAkB,EAAE,aAAa,GAAG,WAAW,CAAC,GAC/D;IACD,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;CACnD,CAgDA;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,0BAA0B,CAAC,EAAE;QAC3B,UAAU,EAAE,OAAO,CAAC;QACpB,cAAc,EAAE,OAAO,CAAC;QACxB,gBAAgB,EAAE,OAAO,CAAC;QAC1B,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB,EAAE,OAAO,CAAC;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,MAAM,CAAC;IAE3B,OAAO,CAAC,EAAE;QACR,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,gBAAgB,CAAC,EAAE;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,eAAe,EAAE,MAAM,CAAC;QACxB,WAAW,EAAE,MAAM,CAAC;QACpB,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,cAAc,CAAC,EAAE;QACf,qBAAqB,EAAE,MAAM,CAAC;QAC9B,sBAAsB,EAAE,MAAM,CAAC;KAChC,CAAC;IACF,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;KAC5B,CAAC;IAEF,eAAe,CAAC,EAAE;QAChB,YAAY,CAAC,EAAE,KAAK,CAAC;YAAE,WAAW,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAC9C,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KACpC,CAAC;CACH,GAAG,kBAAkB,CAiFrB"}