@lagoon-protocol/lagoon-mcp 0.2.13 → 0.2.15

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 (64) 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 +82 -0
  6. package/dist/graphql/fragments/composition.fragment.d.ts.map +1 -0
  7. package/dist/graphql/fragments/composition.fragment.js +44 -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 +4 -0
  12. package/dist/graphql/fragments/index.js.map +1 -1
  13. package/dist/graphql/queries/composition.queries.d.ts +33 -0
  14. package/dist/graphql/queries/composition.queries.d.ts.map +1 -0
  15. package/dist/graphql/queries/composition.queries.js +37 -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 +22 -0
  22. package/dist/graphql/queries/portfolio.queries.d.ts.map +1 -1
  23. package/dist/graphql/queries/portfolio.queries.js +26 -0
  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 +4 -0
  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 +3 -1
  34. package/dist/services/analytics/risk.service.d.ts.map +1 -1
  35. package/dist/services/analytics/risk.service.js +43 -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 +97 -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 +19 -1
  48. package/dist/tools/registry.js.map +1 -1
  49. package/dist/tools/user-portfolio.d.ts.map +1 -1
  50. package/dist/tools/user-portfolio.js +135 -1
  51. package/dist/tools/user-portfolio.js.map +1 -1
  52. package/dist/tools/vault-composition.d.ts +34 -0
  53. package/dist/tools/vault-composition.d.ts.map +1 -0
  54. package/dist/tools/vault-composition.js +206 -0
  55. package/dist/tools/vault-composition.js.map +1 -0
  56. package/dist/utils/risk-scoring.d.ts +33 -0
  57. package/dist/utils/risk-scoring.d.ts.map +1 -1
  58. package/dist/utils/risk-scoring.js +73 -14
  59. package/dist/utils/risk-scoring.js.map +1 -1
  60. package/dist/utils/validators.d.ts +11 -0
  61. package/dist/utils/validators.d.ts.map +1 -1
  62. package/dist/utils/validators.js +8 -0
  63. package/dist/utils/validators.js.map +1 -1
  64. package/package.json +1 -1
@@ -5,10 +5,11 @@
5
5
  * Demonstrates service layer pattern for complex multi-step operations.
6
6
  */
7
7
  import { BaseService } from '../base.service.js';
8
- import { VaultData } from '../../graphql/fragments/index.js';
8
+ import { VaultData, RawVaultComposition } from '../../graphql/fragments/index.js';
9
9
  import { RiskScoreBreakdown } from '../../utils/risk-scoring.js';
10
10
  /**
11
11
  * Risk analysis input data extracted from GraphQL
12
+ * Note: composition now uses chain-based data from Octav API
12
13
  */
13
14
  export interface RiskAnalysisData {
14
15
  vault: VaultData;
@@ -37,6 +38,7 @@ export interface RiskAnalysisData {
37
38
  };
38
39
  }>;
39
40
  };
41
+ composition: RawVaultComposition | null;
40
42
  }
41
43
  /**
42
44
  * Comparative risk context for benchmarking
@@ -1 +1 @@
1
- {"version":3,"file":"risk.service.d.ts","sourceRoot":"","sources":["../../../src/services/analytics/risk.service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAE7D,OAAO,EAAe,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAE9E;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,SAAS,CAAC;IACjB,SAAS,EAAE;QAAE,KAAK,EAAE,KAAK,CAAC;YAAE,KAAK,EAAE;gBAAE,cAAc,EAAE,MAAM,CAAA;aAAE,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC;IACnE,aAAa,EAAE;QAAE,KAAK,EAAE,KAAK,CAAC;YAAE,OAAO,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE;gBAAE,cAAc,EAAE,MAAM,CAAA;aAAE,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC;IACxF,YAAY,EAAE;QACZ,KAAK,EAAE,KAAK,CAAC;YACX,SAAS,EAAE,MAAM,CAAC;YAClB,IAAI,EAAE;gBACJ,WAAW,EAAE,MAAM,CAAC;gBACpB,cAAc,EAAE,MAAM,CAAC;gBACvB,WAAW,EAAE,MAAM,CAAC;aACrB,CAAC;SACH,CAAC,CAAC;KACJ,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,0BAA2B,SAAQ,kBAAkB;IACpE,WAAW,CAAC,EAAE,sBAAsB,CAAC;CACtC;AAED;;GAEG;AACH,qBAAa,WAAY,SAAQ,WAAW;IAC1C;;OAEG;IACG,aAAa,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAgB5F;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE,gBAAgB,GAAG,kBAAkB;IAkHzD;;;;;;OAMG;IACH,2BAA2B,CACzB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,gBAAgB,CAAC,WAAW,CAAC,GAC3C,sBAAsB;IAuEzB;;;;;;;OAOG;IACG,OAAO,CACX,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,MAAM,EACf,kBAAkB,GAAE,OAAc,GACjC,OAAO,CAAC,0BAA0B,GAAG,IAAI,CAAC;IA0B7C;;OAEG;IACH,mBAAmB,CACjB,SAAS,EAAE,0BAA0B,EACrC,cAAc,GAAE,OAAO,GAAG,SAAS,GAAG,UAAsB,GAC3D,MAAM;CAkMV"}
1
+ {"version":3,"file":"risk.service.d.ts","sourceRoot":"","sources":["../../../src/services/analytics/risk.service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAoB,MAAM,kCAAkC,CAAC;AAEpG,OAAO,EAAe,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAE9E;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,SAAS,CAAC;IACjB,SAAS,EAAE;QAAE,KAAK,EAAE,KAAK,CAAC;YAAE,KAAK,EAAE;gBAAE,cAAc,EAAE,MAAM,CAAA;aAAE,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC;IACnE,aAAa,EAAE;QAAE,KAAK,EAAE,KAAK,CAAC;YAAE,OAAO,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE;gBAAE,cAAc,EAAE,MAAM,CAAA;aAAE,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC;IACxF,YAAY,EAAE;QACZ,KAAK,EAAE,KAAK,CAAC;YACX,SAAS,EAAE,MAAM,CAAC;YAClB,IAAI,EAAE;gBACJ,WAAW,EAAE,MAAM,CAAC;gBACpB,cAAc,EAAE,MAAM,CAAC;gBACvB,WAAW,EAAE,MAAM,CAAC;aACrB,CAAC;SACH,CAAC,CAAC;KACJ,CAAC;IAEF,WAAW,EAAE,mBAAmB,GAAG,IAAI,CAAC;CACzC;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,0BAA2B,SAAQ,kBAAkB;IACpE,WAAW,CAAC,EAAE,sBAAsB,CAAC;CACtC;AAED;;GAEG;AACH,qBAAa,WAAY,SAAQ,WAAW;IAC1C;;OAEG;IACG,aAAa,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAgB5F;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE,gBAAgB,GAAG,kBAAkB;IAsJzD;;;;;;OAMG;IACH,2BAA2B,CACzB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,gBAAgB,CAAC,WAAW,CAAC,GAC3C,sBAAsB;IAuEzB;;;;;;;OAOG;IACG,OAAO,CACX,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,MAAM,EACf,kBAAkB,GAAE,OAAc,GACjC,OAAO,CAAC,0BAA0B,GAAG,IAAI,CAAC;IA0B7C;;OAEG;IACH,mBAAmB,CACjB,SAAS,EAAE,0BAA0B,EACrC,cAAc,GAAE,OAAO,GAAG,SAAS,GAAG,UAAsB,GAC3D,MAAM;CAiNV"}
@@ -104,6 +104,33 @@ export class RiskService extends BaseService {
104
104
  totalAssets,
105
105
  maxCapacity,
106
106
  };
107
+ // Extract composition data for chain diversification risk
108
+ // Transform RawVaultComposition (chain-keyed JSONObject) to risk analysis format
109
+ let compositionData;
110
+ if (data.composition && Object.keys(data.composition).length > 0) {
111
+ // Filter active chains (value > 0) and calculate percentages
112
+ const activeChains = Object.entries(data.composition)
113
+ .filter(([, chain]) => {
114
+ const value = parseFloat(chain.value);
115
+ return !isNaN(value) && value > 0;
116
+ })
117
+ .map(([, chain]) => ({
118
+ value: parseFloat(chain.value),
119
+ repartition: 0, // Will calculate after total
120
+ }));
121
+ const totalValue = activeChains.reduce((sum, c) => sum + c.value, 0);
122
+ // Calculate repartition (percentage) for each chain
123
+ activeChains.forEach((c) => {
124
+ c.repartition = totalValue > 0 ? (c.value / totalValue) * 100 : 0;
125
+ });
126
+ // Sort by value descending to get top chain
127
+ activeChains.sort((a, b) => b.value - a.value);
128
+ const topChainPercent = activeChains[0]?.repartition ?? null;
129
+ compositionData = {
130
+ compositions: activeChains.map((c) => ({ repartition: c.repartition })),
131
+ topProtocolPercent: topChainPercent,
132
+ };
133
+ }
107
134
  // Perform risk analysis using utility function
108
135
  return analyzeRisk({
109
136
  tvl: vaultTVL,
@@ -123,6 +150,7 @@ export class RiskService extends BaseService {
123
150
  settlementData,
124
151
  integrationCount,
125
152
  capacityData,
153
+ compositionData,
126
154
  });
127
155
  }
128
156
  /**
@@ -279,6 +307,8 @@ export class RiskService extends BaseService {
279
307
  { name: 'Settlement', score: breakdown.settlementRisk },
280
308
  { name: 'Integration Complexity', score: breakdown.integrationComplexityRisk },
281
309
  { name: 'Capacity Utilization', score: breakdown.capacityUtilizationRisk },
310
+ { name: 'Protocol Diversification', score: breakdown.protocolDiversificationRisk },
311
+ { name: 'Top Protocol Concentration', score: breakdown.topProtocolConcentrationRisk },
282
312
  ];
283
313
  const topRisks = riskFactors.sort((a, b) => b.score - a.score).slice(0, 3);
284
314
  let comparativeSection = '';
@@ -320,6 +350,8 @@ ${comparativeSection}
320
350
  | Fees | ${scoreToPercentage(breakdown.feeRisk)} | ${scoreToEmoji(breakdown.feeRisk)} |
321
351
  | Integration Complexity | ${scoreToPercentage(breakdown.integrationComplexityRisk)} | ${scoreToEmoji(breakdown.integrationComplexityRisk)} |
322
352
  | Capacity Utilization | ${scoreToPercentage(breakdown.capacityUtilizationRisk)} | ${scoreToEmoji(breakdown.capacityUtilizationRisk)} |
353
+ | Protocol Diversification | ${scoreToPercentage(breakdown.protocolDiversificationRisk)} | ${scoreToEmoji(breakdown.protocolDiversificationRisk)} |
354
+ | Top Protocol Concentration | ${scoreToPercentage(breakdown.topProtocolConcentrationRisk)} | ${scoreToEmoji(breakdown.topProtocolConcentrationRisk)} |
323
355
  `;
324
356
  }
325
357
  // Detailed format: Full breakdown with explanations
@@ -365,6 +397,12 @@ ${comparativeDetailedSection}## Risk Analysis Breakdown
365
397
  | **Concentration** | ${scoreToPercentage(breakdown.concentrationRisk)} | ${scoreToEmoji(breakdown.concentrationRisk)} |
366
398
  | **Liquidity** | ${scoreToPercentage(breakdown.liquidityRisk)} | ${scoreToEmoji(breakdown.liquidityRisk)} |
367
399
 
400
+ ### Composition Risk
401
+ | Risk Factor | Score | Level |
402
+ |-------------|-------|-------|
403
+ | **Protocol Diversification** | ${scoreToPercentage(breakdown.protocolDiversificationRisk)} | ${scoreToEmoji(breakdown.protocolDiversificationRisk)} |
404
+ | **Top Protocol Concentration** | ${scoreToPercentage(breakdown.topProtocolConcentrationRisk)} | ${scoreToEmoji(breakdown.topProtocolConcentrationRisk)} |
405
+
368
406
  ### Operational Risk
369
407
  | Risk Factor | Score | Level |
370
408
  |-------------|-------|-------|
@@ -404,6 +442,11 @@ ${comparativeDetailedSection}## Risk Analysis Breakdown
404
442
 
405
443
  **Liquidity**: Ability to meet redemption requests. Based on safe asset coverage of pending redemptions.
406
444
 
445
+ #### Composition
446
+ **Protocol Diversification**: Measures how well the vault's funds are distributed across DeFi protocols using HHI (Herfindahl-Hirschman Index). Lower concentration = better diversification.
447
+
448
+ **Top Protocol Concentration**: Evaluates risk from having too much exposure to a single protocol. A top protocol exceeding 50% of allocation signals elevated concentration risk.
449
+
407
450
  #### Operational
408
451
  **Settlement Time**: Average time to process redemptions plus pending operations burden. Longer delays increase exit risk.
409
452
 
@@ -1 +1 @@
1
- {"version":3,"file":"risk.service.js","sourceRoot":"","sources":["../../../src/services/analytics/risk.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"risk.service.js","sourceRoot":"","sources":["../../../src/services/analytics/risk.service.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"portfolio-review.d.ts","sourceRoot":"","sources":["../../src/skills/portfolio-review.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AA6Z9C;;GAEG;AACH,eAAO,MAAM,0BAA0B,EAAE,WA2CxC,CAAC;AAEF,eAAe,0BAA0B,CAAC"}
1
+ {"version":3,"file":"portfolio-review.d.ts","sourceRoot":"","sources":["../../src/skills/portfolio-review.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAme9C;;GAEG;AACH,eAAO,MAAM,0BAA0B,EAAE,WAiDxC,CAAC;AAEF,eAAe,0BAA0B,CAAC"}
@@ -80,6 +80,38 @@ Diversification Score: [X]/10
80
80
  (Based on asset types, chains, curators, strategies)
81
81
  \`\`\`
82
82
 
83
+ ### Portfolio Composition Analysis
84
+
85
+ The \`get_user_portfolio\` tool returns a \`compositionSummary\` field with portfolio-wide protocol exposure:
86
+
87
+ \`\`\`
88
+ PORTFOLIO COMPOSITION
89
+ =====================
90
+
91
+ Portfolio-Level Diversification:
92
+ - Portfolio HHI: [X] ([High/Medium/Low] diversification)
93
+ - Protocol Count: [X] unique protocols across all vaults
94
+
95
+ Top Protocol Exposures:
96
+ | Protocol | Exposure | Value | Vault Count |
97
+ |----------|----------|-------|-------------|
98
+ | [Name] | [X]% | $[X] | [N] vaults |
99
+ | [Name] | [X]% | $[X] | [N] vaults |
100
+
101
+ ACCIDENTAL CONCENTRATION WARNINGS
102
+ ---------------------------------
103
+ ⚠️ [Protocol] appears in [N] vaults with [X]% total exposure
104
+ - Consider: Single protocol failure affects [X]% of portfolio
105
+ - Vaults affected: [list]
106
+
107
+ COMPOSITION HEALTH ASSESSMENT
108
+ -----------------------------
109
+ [x] Portfolio HHI >0.25 (high concentration)
110
+ [ ] Single protocol >40% exposure
111
+ [x] Same protocol in 3+ vaults
112
+ [ ] Top 3 protocols >70% exposure
113
+ \`\`\`
114
+
83
115
  ## Step 3: Performance Analysis
84
116
 
85
117
  ### Historical Performance
@@ -273,6 +305,14 @@ const REVIEW_FRAMEWORK = `# Portfolio Review Framework
273
305
  - [ ] Chains (Ethereum, Arbitrum, etc.)
274
306
  - [ ] Curators (strategy managers)
275
307
  - [ ] Strategy types (lending, LP, derivatives)
308
+ - [ ] **Protocols (Aave, Compound, Uniswap, etc.)**
309
+
310
+ ### Phase 2.5: Composition Analysis
311
+ - [ ] Review portfolio-wide protocol exposure from compositionSummary
312
+ - [ ] Calculate portfolio HHI for diversification level
313
+ - [ ] Check for accidental concentration (same protocol in 3+ vaults)
314
+ - [ ] Identify top protocol exposure (>40% is concerning)
315
+ - [ ] Map hidden correlations (e.g., multiple vaults using Aave)
276
316
 
277
317
  ### Phase 3: Performance Review
278
318
  - [ ] Calculate absolute returns (USD)
@@ -300,6 +340,9 @@ const REVIEW_FRAMEWORK = `# Portfolio Review Framework
300
340
  | Diversification Score | # unique assets/chains/curators | High |
301
341
  | APR Achievement | Realized APR / Expected APR | >90% |
302
342
  | Risk Stability | Risk score change (30d) | <15 points |
343
+ | **Portfolio HHI** | Sum of squared protocol weights | <0.25 |
344
+ | **Top Protocol Exposure** | Largest protocol % | <40% |
345
+ | **Protocol Spread** | # unique protocols in portfolio | ≥5 |
303
346
 
304
347
  ## Review Frequency Guide
305
348
 
@@ -325,7 +368,19 @@ const REVIEW_FRAMEWORK = `# Portfolio Review Framework
325
368
  - Assess liquidity risk
326
369
 
327
370
  5. **Curator issues**
328
- - Research and consider exit`;
371
+ - Research and consider exit
372
+
373
+ 6. **Portfolio HHI >0.35 (Low diversification)**
374
+ - Protocol concentration creates correlated risk
375
+ - Consider vaults with different underlying protocols
376
+
377
+ 7. **Single protocol >50% of portfolio**
378
+ - Hidden concentration across multiple vaults
379
+ - Protocol failure could impact majority of holdings
380
+
381
+ 8. **Same protocol in 4+ vaults**
382
+ - Accidental concentration detected
383
+ - Review if diversification is illusory`;
329
384
  /**
330
385
  * Rebalancing criteria resource
331
386
  */
@@ -358,6 +413,21 @@ const REBALANCING_CRITERIA = `# Rebalancing Criteria Guide
358
413
  | Significant | <70% | >30 days | Consider exit |
359
414
  | Critical | <50% | >14 days | Urgent review |
360
415
 
416
+ ### Protocol Composition Thresholds
417
+ | Level | Portfolio HHI | Top Protocol % | Action |
418
+ |-------|---------------|----------------|--------|
419
+ | Well Diversified | <0.15 | <30% | No action |
420
+ | Moderate | 0.15-0.25 | 30-40% | Monitor |
421
+ | Concentrated | 0.25-0.35 | 40-50% | Plan rebalancing |
422
+ | Critical | >0.35 | >50% | Immediate review |
423
+
424
+ ### Accidental Concentration Thresholds
425
+ | Indicator | Threshold | Action |
426
+ |-----------|-----------|--------|
427
+ | Same protocol in vaults | 3+ vaults | Flag for review |
428
+ | Same protocol exposure | >40% total | Rebalance consideration |
429
+ | Hidden correlation | Same 2+ protocols in 3+ vaults | Correlation warning |
430
+
361
431
  ## Rebalancing Strategies
362
432
 
363
433
  ### Conservative Approach
@@ -439,6 +509,11 @@ export const lagoonPortfolioReviewSkill = {
439
509
  'how are my investments doing',
440
510
  'portfolio assessment',
441
511
  'quarterly review',
512
+ 'portfolio diversification',
513
+ 'am i diversified',
514
+ 'protocol exposure',
515
+ 'concentration risk',
516
+ 'portfolio composition',
442
517
  ],
443
518
  audience: 'customer-existing',
444
519
  instructions: INSTRUCTIONS,
@@ -447,7 +522,7 @@ export const lagoonPortfolioReviewSkill = {
447
522
  rebalancing: REBALANCING_CRITERIA,
448
523
  },
449
524
  metadata: {
450
- version: '1.0.0',
525
+ version: '1.1.0',
451
526
  category: 'portfolio',
452
527
  primaryTools: [
453
528
  'get_user_portfolio',
@@ -455,9 +530,10 @@ export const lagoonPortfolioReviewSkill = {
455
530
  'get_vault_performance',
456
531
  'predict_yield',
457
532
  'optimize_portfolio',
533
+ 'get_vault_composition',
458
534
  ],
459
- estimatedTokens: 3200,
460
- lastUpdated: '2024-12-15',
535
+ estimatedTokens: 3500,
536
+ lastUpdated: '2025-01-15',
461
537
  },
462
538
  };
463
539
  export default lagoonPortfolioReviewSkill;
@@ -1 +1 @@
1
- {"version":3,"file":"portfolio-review.js","sourceRoot":"","sources":["../../src/skills/portfolio-review.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAE3E;;GAEG;AACH,MAAM,YAAY,GAAG;;;;EAInB,kBAAkB,CAAC,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkOvB,wBAAwB;;;;;;;;;;;;6CAYmB,CAAC;AAE9C;;GAEG;AACH,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAqEO,CAAC;AAEjC;;GAEG;AACH,MAAM,oBAAoB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uBAoFN,CAAC;AAExB;;GAEG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAgB;IACrD,IAAI,EAAE,yBAAyB;IAC/B,WAAW,EACT,iPAAiP;IACnP,QAAQ,EAAE;QACR,kBAAkB;QAClB,qBAAqB;QACrB,kBAAkB;QAClB,oBAAoB;QACpB,oBAAoB;QACpB,qBAAqB;QACrB,gBAAgB;QAChB,oBAAoB;QACpB,WAAW;QACX,aAAa;QACb,WAAW;QACX,oBAAoB;QACpB,wBAAwB;QACxB,uBAAuB;QACvB,uBAAuB;QACvB,8BAA8B;QAC9B,sBAAsB;QACtB,kBAAkB;KACnB;IACD,QAAQ,EAAE,mBAAmB;IAC7B,YAAY,EAAE,YAAY;IAC1B,SAAS,EAAE;QACT,SAAS,EAAE,gBAAgB;QAC3B,WAAW,EAAE,oBAAoB;KAClC;IACD,QAAQ,EAAE;QACR,OAAO,EAAE,OAAO;QAChB,QAAQ,EAAE,WAAW;QACrB,YAAY,EAAE;YACZ,oBAAoB;YACpB,cAAc;YACd,uBAAuB;YACvB,eAAe;YACf,oBAAoB;SACrB;QACD,eAAe,EAAE,IAAI;QACrB,WAAW,EAAE,YAAY;KAC1B;CACF,CAAC;AAEF,eAAe,0BAA0B,CAAC"}
1
+ {"version":3,"file":"portfolio-review.js","sourceRoot":"","sources":["../../src/skills/portfolio-review.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAE3E;;GAEG;AACH,MAAM,YAAY,GAAG;;;;EAInB,kBAAkB,CAAC,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkQvB,wBAAwB;;;;;;;;;;;;6CAYmB,CAAC;AAE9C;;GAEG;AACH,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2CA4FkB,CAAC;AAE5C;;GAEG;AACH,MAAM,oBAAoB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uBAmGN,CAAC;AAExB;;GAEG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAgB;IACrD,IAAI,EAAE,yBAAyB;IAC/B,WAAW,EACT,iPAAiP;IACnP,QAAQ,EAAE;QACR,kBAAkB;QAClB,qBAAqB;QACrB,kBAAkB;QAClB,oBAAoB;QACpB,oBAAoB;QACpB,qBAAqB;QACrB,gBAAgB;QAChB,oBAAoB;QACpB,WAAW;QACX,aAAa;QACb,WAAW;QACX,oBAAoB;QACpB,wBAAwB;QACxB,uBAAuB;QACvB,uBAAuB;QACvB,8BAA8B;QAC9B,sBAAsB;QACtB,kBAAkB;QAClB,2BAA2B;QAC3B,kBAAkB;QAClB,mBAAmB;QACnB,oBAAoB;QACpB,uBAAuB;KACxB;IACD,QAAQ,EAAE,mBAAmB;IAC7B,YAAY,EAAE,YAAY;IAC1B,SAAS,EAAE;QACT,SAAS,EAAE,gBAAgB;QAC3B,WAAW,EAAE,oBAAoB;KAClC;IACD,QAAQ,EAAE;QACR,OAAO,EAAE,OAAO;QAChB,QAAQ,EAAE,WAAW;QACrB,YAAY,EAAE;YACZ,oBAAoB;YACpB,cAAc;YACd,uBAAuB;YACvB,eAAe;YACf,oBAAoB;YACpB,uBAAuB;SACxB;QACD,eAAe,EAAE,IAAI;QACrB,WAAW,EAAE,YAAY;KAC1B;CACF,CAAC;AAEF,eAAe,0BAA0B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"risk-expert.d.ts","sourceRoot":"","sources":["../../src/skills/risk-expert.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AA4Z9C;;GAEG;AACH,eAAO,MAAM,qBAAqB,EAAE,WAkCnC,CAAC;AAEF,eAAe,qBAAqB,CAAC"}
1
+ {"version":3,"file":"risk-expert.d.ts","sourceRoot":"","sources":["../../src/skills/risk-expert.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAod9C;;GAEG;AACH,eAAO,MAAM,qBAAqB,EAAE,WA4CnC,CAAC;AAEF,eAAe,qBAAqB,CAAC"}
@@ -87,6 +87,20 @@ RISK FACTOR BREAKDOWN
87
87
  - Curator Track Record: [Assessment]
88
88
  - Communication Quality: [Assessment]
89
89
  - Strategy Execution: [Assessment]
90
+
91
+ 6. Protocol Diversification Risk (Weight: 5%)
92
+ Score: [X]/100
93
+ Analysis: [Interpretation of protocol concentration]
94
+ - HHI Score: [X] ([Well/Moderately/Highly] diversified)
95
+ - Protocol Count: [X] protocols
96
+ - Diversification Level: [High/Medium/Low]
97
+
98
+ 7. Top Protocol Concentration Risk (Weight: 5%)
99
+ Score: [X]/100
100
+ Analysis: [Interpretation of top protocol exposure]
101
+ - Top Protocol: [Protocol Name]
102
+ - Top Protocol Exposure: [X]%
103
+ - Concentration Assessment: [Healthy/Moderate/High/Dangerous]
90
104
  \`\`\`
91
105
 
92
106
  ## Step 2: Historical Performance Analysis
@@ -295,14 +309,23 @@ const RISK_FRAMEWORKS = `# Risk Analysis Frameworks
295
309
 
296
310
  ## Risk Scoring Methodology
297
311
 
298
- ### Factor Weights
312
+ ### Factor Weights (14-Factor Model)
299
313
  | Factor | Weight | Rationale |
300
314
  |--------|--------|-----------|
301
- | TVL Risk | 25% | Liquidity and market validation |
302
- | Concentration Risk | 20% | Diversification and exposure |
303
- | Volatility Risk | 20% | Price stability and predictability |
304
- | Age Risk | 15% | Operational maturity |
305
- | Curator Risk | 20% | Management quality |
315
+ | TVL Risk | 8% | Liquidity and market validation |
316
+ | Concentration Risk | 8% | Portfolio-level vault exposure |
317
+ | Volatility Risk | 14% | Price stability and predictability |
318
+ | Age Risk | 9% | Operational maturity |
319
+ | Curator Risk | 9% | Management quality |
320
+ | Fee Risk | 9% | Cost structure impact |
321
+ | Liquidity Risk | 9% | Safe assets coverage |
322
+ | APR Consistency | 14% | Yield stability |
323
+ | Yield Sustainability | 5% | Long-term yield viability |
324
+ | Settlement Risk | 5% | Redemption processing |
325
+ | Integration Complexity | 5% | DeFi protocol integrations |
326
+ | Capacity Utilization | 5% | Vault capacity usage |
327
+ | **Protocol Diversification** | 5% | HHI-based concentration |
328
+ | **Top Protocol Concentration** | 5% | Single protocol exposure |
306
329
 
307
330
  ### Risk Score Interpretation
308
331
  | Score Range | Risk Level | Description |
@@ -346,6 +369,39 @@ const RISK_FRAMEWORKS = `# Risk Analysis Frameworks
346
369
  - **Recovery Time**: Days to recover previous high
347
370
  - **Ulcer Index**: Measure of downside risk duration
348
371
 
372
+ ## Protocol Composition Analysis
373
+
374
+ ### HHI (Herfindahl-Hirschman Index) Interpretation
375
+ The HHI measures concentration across protocols within a vault.
376
+
377
+ | HHI Score | Diversification | Risk Level |
378
+ |-----------|----------------|------------|
379
+ | <0.15 | High | Low - Well distributed across protocols |
380
+ | 0.15-0.25 | Medium | Moderate - Acceptable concentration |
381
+ | 0.25-0.50 | Low | High - Significant concentration risk |
382
+ | >0.50 | Very Low | Very High - Dangerous concentration |
383
+
384
+ ### Top Protocol Concentration
385
+ | Top Protocol % | Assessment | Implication |
386
+ |---------------|------------|-------------|
387
+ | <30% | Healthy | Good distribution across protocols |
388
+ | 30-50% | Moderate | Acceptable but monitor |
389
+ | 50-70% | High | Significant single-protocol dependency |
390
+ | >70% | Dangerous | Critical concentration risk |
391
+
392
+ ### Composition Risk Factors
393
+ When evaluating composition risk, consider:
394
+ 1. **Protocol Quality**: Are underlying protocols battle-tested?
395
+ 2. **Protocol Correlation**: Do protocols share similar risk profiles?
396
+ 3. **Smart Contract Risk**: Multiple protocols = multiple attack surfaces
397
+ 4. **Liquidity Depth**: Protocol exposure vs. available liquidity
398
+
399
+ ### Accidental Concentration Warning
400
+ For portfolio analysis, watch for:
401
+ - Same protocol appearing in 3+ vaults
402
+ - Total protocol exposure >40% of portfolio
403
+ - Hidden concentration through derivative positions
404
+
349
405
  ## Correlation Analysis
350
406
 
351
407
  ### Asset Correlation Matrix
@@ -438,6 +494,10 @@ export const lagoonRiskExpertSkill = {
438
494
  'correlation analysis',
439
495
  'risk-adjusted returns',
440
496
  'sharpe ratio',
497
+ 'protocol concentration',
498
+ 'composition risk',
499
+ 'hhi score',
500
+ 'diversification risk',
441
501
  ],
442
502
  audience: 'customer-advanced',
443
503
  instructions: INSTRUCTIONS,
@@ -445,11 +505,17 @@ export const lagoonRiskExpertSkill = {
445
505
  riskFrameworks: RISK_FRAMEWORKS,
446
506
  },
447
507
  metadata: {
448
- version: '1.0.0',
508
+ version: '1.1.0',
449
509
  category: 'risk',
450
- primaryTools: ['analyze_risk', 'get_vault_performance', 'get_price_history', 'compare_vaults'],
451
- estimatedTokens: 2200,
452
- lastUpdated: '2024-12-15',
510
+ primaryTools: [
511
+ 'analyze_risk',
512
+ 'get_vault_performance',
513
+ 'get_price_history',
514
+ 'compare_vaults',
515
+ 'get_vault_composition',
516
+ ],
517
+ estimatedTokens: 2500,
518
+ lastUpdated: '2025-01-15',
453
519
  },
454
520
  };
455
521
  export default lagoonRiskExpertSkill;
@@ -1 +1 @@
1
- {"version":3,"file":"risk-expert.js","sourceRoot":"","sources":["../../src/skills/risk-expert.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAG3E;;GAEG;AACH,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmRnB,kBAAkB,CAAC,IAAI;;EAEvB,wBAAwB,EAAE,CAAC;AAE7B;;GAEG;AACH,MAAM,eAAe,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6CA2HqB,CAAC;AAE9C;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAgB;IAChD,IAAI,EAAE,oBAAoB;IAC1B,WAAW,EACT,oJAAoJ;IACtJ,QAAQ,EAAE;QACR,oBAAoB;QACpB,oBAAoB;QACpB,cAAc;QACd,gBAAgB;QAChB,eAAe;QACf,eAAe;QACf,oBAAoB;QACpB,qBAAqB;QACrB,mBAAmB;QACnB,aAAa;QACb,mBAAmB;QACnB,iBAAiB;QACjB,cAAc;QACd,sBAAsB;QACtB,uBAAuB;QACvB,cAAc;KACf;IACD,QAAQ,EAAE,mBAAmB;IAC7B,YAAY,EAAE,YAAY;IAC1B,SAAS,EAAE;QACT,cAAc,EAAE,eAAe;KAChC;IACD,QAAQ,EAAE;QACR,OAAO,EAAE,OAAO;QAChB,QAAQ,EAAE,MAAM;QAChB,YAAY,EAAE,CAAC,cAAc,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,gBAAgB,CAAC;QAC9F,eAAe,EAAE,IAAI;QACrB,WAAW,EAAE,YAAY;KAC1B;CACF,CAAC;AAEF,eAAe,qBAAqB,CAAC"}
1
+ {"version":3,"file":"risk-expert.js","sourceRoot":"","sources":["../../src/skills/risk-expert.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAG3E;;GAEG;AACH,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiSnB,kBAAkB,CAAC,IAAI;;EAEvB,wBAAwB,EAAE,CAAC;AAE7B;;GAEG;AACH,MAAM,eAAe,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6CAqKqB,CAAC;AAE9C;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAgB;IAChD,IAAI,EAAE,oBAAoB;IAC1B,WAAW,EACT,oJAAoJ;IACtJ,QAAQ,EAAE;QACR,oBAAoB;QACpB,oBAAoB;QACpB,cAAc;QACd,gBAAgB;QAChB,eAAe;QACf,eAAe;QACf,oBAAoB;QACpB,qBAAqB;QACrB,mBAAmB;QACnB,aAAa;QACb,mBAAmB;QACnB,iBAAiB;QACjB,cAAc;QACd,sBAAsB;QACtB,uBAAuB;QACvB,cAAc;QACd,wBAAwB;QACxB,kBAAkB;QAClB,WAAW;QACX,sBAAsB;KACvB;IACD,QAAQ,EAAE,mBAAmB;IAC7B,YAAY,EAAE,YAAY;IAC1B,SAAS,EAAE;QACT,cAAc,EAAE,eAAe;KAChC;IACD,QAAQ,EAAE;QACR,OAAO,EAAE,OAAO;QAChB,QAAQ,EAAE,MAAM;QAChB,YAAY,EAAE;YACZ,cAAc;YACd,uBAAuB;YACvB,mBAAmB;YACnB,gBAAgB;YAChB,uBAAuB;SACxB;QACD,eAAe,EAAE,IAAI;QACrB,WAAW,EAAE,YAAY;KAC1B;CACF,CAAC;AAEF,eAAe,qBAAqB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"compare-vaults.d.ts","sourceRoot":"","sources":["../../src/tools/compare-vaults.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAY5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AA+XxD;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,gBAAgB,GAC1B,CAAC,KAAK,EAAE,kBAAkB,KAAK,OAAO,CAAC,cAAc,CAAC,CA6IxD"}
1
+ {"version":3,"file":"compare-vaults.d.ts","sourceRoot":"","sources":["../../src/tools/compare-vaults.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAa5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AA6cxD;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,gBAAgB,GAC1B,CAAC,KAAK,EAAE,kBAAkB,KAAK,OAAO,CAAC,cAAc,CAAC,CAiNxD"}
@@ -24,6 +24,7 @@
24
24
  */
25
25
  import { getToolDisclaimer } from '../utils/disclaimers.js';
26
26
  import { COMPARE_VAULTS_QUERY } from '../graphql/queries/index.js';
27
+ import { SINGLE_VAULT_COMPOSITION_QUERY } from '../graphql/queries/portfolio.queries.js';
27
28
  import { normalizeAndRankVaults, generateComparisonSummary, formatComparisonTable, } from '../utils/comparison-metrics.js';
28
29
  import { executeToolWithCache } from '../utils/execute-tool-with-cache.js';
29
30
  import { CacheTag } from '../core/cache-invalidation.js';
@@ -250,6 +251,50 @@ function normalizeRiskLevel(riskLevel) {
250
251
  return null;
251
252
  return riskLevel.toLowerCase();
252
253
  }
254
+ /**
255
+ * Calculate composition metrics from raw composition data
256
+ * Note: Backend API changed from protocol-based to chain-based composition
257
+ */
258
+ function calculateCompositionMetrics(rawComposition) {
259
+ if (!rawComposition || Object.keys(rawComposition).length === 0) {
260
+ return undefined;
261
+ }
262
+ // Filter and transform to chain data with values
263
+ const activeChains = Object.entries(rawComposition)
264
+ .filter(([, chain]) => {
265
+ const value = parseFloat(chain.value);
266
+ return !isNaN(value) && value > 0;
267
+ })
268
+ .map(([, chain]) => ({
269
+ chainName: chain.name,
270
+ valueUsd: parseFloat(chain.value),
271
+ percentage: 0, // Calculate after total
272
+ }));
273
+ if (activeChains.length === 0) {
274
+ return undefined;
275
+ }
276
+ // Calculate total and percentages
277
+ const totalValue = activeChains.reduce((sum, c) => sum + c.valueUsd, 0);
278
+ activeChains.forEach((c) => {
279
+ c.percentage = totalValue > 0 ? (c.valueUsd / totalValue) * 100 : 0;
280
+ });
281
+ // Sort by value descending
282
+ activeChains.sort((a, b) => b.valueUsd - a.valueUsd);
283
+ // Calculate HHI (Herfindahl-Hirschman Index)
284
+ const hhi = activeChains.reduce((sum, c) => sum + Math.pow(c.percentage / 100, 2), 0);
285
+ // Determine diversification level
286
+ const diversificationLevel = hhi < 0.15 ? 'High' : hhi < 0.25 ? 'Medium' : 'Low';
287
+ // Get top chain
288
+ const topChain = activeChains[0]?.chainName || null;
289
+ const topChainPercent = activeChains[0]?.percentage || null;
290
+ return {
291
+ hhi,
292
+ diversificationLevel,
293
+ topChain,
294
+ topChainPercent,
295
+ chainCount: activeChains.length,
296
+ };
297
+ }
253
298
  /**
254
299
  * Convert VaultData to StructuredVaultData for UI block rendering
255
300
  */
@@ -339,6 +384,29 @@ export function createExecuteCompareVaults(container) {
339
384
  const markdown = buildComparisonMarkdown(summary, table, chainIds, true);
340
385
  // Build structured vault data for UI block rendering (cached path)
341
386
  const structuredVaults = cachedVaults.map((vault, index) => convertToStructuredVaultData(vault, comparisonData[index]));
387
+ // Fetch composition data for each vault in parallel (cached path)
388
+ // Note: Backend API now uses walletAddress parameter
389
+ const compositionPromises = structuredVaults.map(async (vault) => {
390
+ try {
391
+ const compResponse = await container.graphqlClient.request(SINGLE_VAULT_COMPOSITION_QUERY, { walletAddress: vault.address });
392
+ return {
393
+ address: vault.address,
394
+ metrics: calculateCompositionMetrics(compResponse.vaultComposition),
395
+ };
396
+ }
397
+ catch {
398
+ return { address: vault.address, metrics: undefined };
399
+ }
400
+ });
401
+ const compositionResults = await Promise.all(compositionPromises);
402
+ const compositionMap = new Map(compositionResults.map((r) => [r.address.toLowerCase(), r.metrics]));
403
+ // Enrich structured vaults with composition data
404
+ for (const vault of structuredVaults) {
405
+ const metrics = compositionMap.get(vault.address.toLowerCase());
406
+ if (metrics) {
407
+ vault.composition = metrics;
408
+ }
409
+ }
342
410
  // Build response with both markdown and structured vaults
343
411
  const responseText = `${markdown}${getToolDisclaimer('compare_vaults')}
344
412
 
@@ -346,6 +414,7 @@ export function createExecuteCompareVaults(container) {
346
414
  ## Structured Vault Data (for UI blocks)
347
415
  The following JSON contains structured vault data for building comparison UI blocks.
348
416
  Use the \`vaults\` array directly - fees are in basis points (100 = 1%).
417
+ Composition metrics include HHI (0-1), diversification level, and top protocol exposure.
349
418
 
350
419
  \`\`\`json
351
420
  ${JSON.stringify({ vaults: structuredVaults }, null, 2)}
@@ -397,15 +466,42 @@ ${JSON.stringify({ vaults: structuredVaults }, null, 2)}
397
466
  if (!result.isError && result.content[0]?.type === 'text') {
398
467
  try {
399
468
  const output = JSON.parse(result.content[0].text);
469
+ // Fetch composition data for each vault in parallel
470
+ // This enables diversification comparison between vaults
471
+ // Note: Backend API now uses walletAddress parameter
472
+ const compositionPromises = output.vaults.map(async (vault) => {
473
+ try {
474
+ const compResponse = await container.graphqlClient.request(SINGLE_VAULT_COMPOSITION_QUERY, { walletAddress: vault.address });
475
+ return {
476
+ address: vault.address,
477
+ metrics: calculateCompositionMetrics(compResponse.vaultComposition),
478
+ };
479
+ }
480
+ catch {
481
+ // If composition fetch fails, skip it
482
+ return { address: vault.address, metrics: undefined };
483
+ }
484
+ });
485
+ const compositionResults = await Promise.all(compositionPromises);
486
+ // Create a map for quick lookup
487
+ const compositionMap = new Map(compositionResults.map((r) => [r.address.toLowerCase(), r.metrics]));
488
+ // Enrich structured vaults with composition data
489
+ for (const vault of output.vaults) {
490
+ const metrics = compositionMap.get(vault.address.toLowerCase());
491
+ if (metrics) {
492
+ vault.composition = metrics;
493
+ }
494
+ }
400
495
  // Build response with:
401
496
  // 1. Human-readable markdown (with disclaimer)
402
- // 2. Structured vaults array for UI block construction
497
+ // 2. Structured vaults array for UI block construction (now with composition)
403
498
  const responseText = `${output.markdown}${getToolDisclaimer('compare_vaults')}
404
499
 
405
500
  ---
406
501
  ## Structured Vault Data (for UI blocks)
407
502
  The following JSON contains structured vault data for building comparison UI blocks.
408
503
  Use the \`vaults\` array directly - fees are in basis points (100 = 1%).
504
+ Composition metrics include HHI (0-1), diversification level, and top protocol exposure.
409
505
 
410
506
  \`\`\`json
411
507
  ${JSON.stringify({ vaults: output.vaults }, null, 2)}