@lagoon-protocol/lagoon-mcp 0.6.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 (132) 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/graphql/fragments/apr-breakdown.fragment.d.ts +4 -1
  7. package/dist/graphql/fragments/apr-breakdown.fragment.d.ts.map +1 -1
  8. package/dist/graphql/fragments/apr-breakdown.fragment.js +3 -0
  9. package/dist/graphql/fragments/apr-breakdown.fragment.js.map +1 -1
  10. package/dist/graphql/fragments/composition.fragment.d.ts +23 -134
  11. package/dist/graphql/fragments/composition.fragment.d.ts.map +1 -1
  12. package/dist/graphql/fragments/composition.fragment.js +9 -7
  13. package/dist/graphql/fragments/composition.fragment.js.map +1 -1
  14. package/dist/graphql/fragments/index.d.ts +1 -1
  15. package/dist/graphql/fragments/index.d.ts.map +1 -1
  16. package/dist/graphql/fragments/index.js +5 -4
  17. package/dist/graphql/fragments/index.js.map +1 -1
  18. package/dist/graphql/fragments/vault.fragment.d.ts +28 -1
  19. package/dist/graphql/fragments/vault.fragment.d.ts.map +1 -1
  20. package/dist/graphql/fragments/vault.fragment.js +28 -0
  21. package/dist/graphql/fragments/vault.fragment.js.map +1 -1
  22. package/dist/graphql/queries/composition.queries.d.ts +10 -28
  23. package/dist/graphql/queries/composition.queries.d.ts.map +1 -1
  24. package/dist/graphql/queries/composition.queries.js +17 -28
  25. package/dist/graphql/queries/composition.queries.js.map +1 -1
  26. package/dist/graphql/queries/discovery.queries.d.ts +50 -0
  27. package/dist/graphql/queries/discovery.queries.d.ts.map +1 -0
  28. package/dist/graphql/queries/discovery.queries.js +188 -0
  29. package/dist/graphql/queries/discovery.queries.js.map +1 -0
  30. package/dist/graphql/queries/export.queries.d.ts +1 -1
  31. package/dist/graphql/queries/export.queries.d.ts.map +1 -1
  32. package/dist/graphql/queries/index.d.ts +1 -0
  33. package/dist/graphql/queries/index.d.ts.map +1 -1
  34. package/dist/graphql/queries/index.js +2 -0
  35. package/dist/graphql/queries/index.js.map +1 -1
  36. package/dist/graphql/queries/portfolio.queries.d.ts +2 -2
  37. package/dist/graphql/queries/portfolio.queries.d.ts.map +1 -1
  38. package/dist/graphql/queries/portfolio.queries.js +9 -3
  39. package/dist/graphql/queries/portfolio.queries.js.map +1 -1
  40. package/dist/graphql/queries/risk.queries.d.ts +3 -3
  41. package/dist/graphql/queries/risk.queries.d.ts.map +1 -1
  42. package/dist/graphql/queries/vault.queries.d.ts +3 -3
  43. package/dist/graphql/queries/vault.queries.d.ts.map +1 -1
  44. package/dist/index.js +0 -0
  45. package/dist/services/analytics/risk.service.d.ts +43 -21
  46. package/dist/services/analytics/risk.service.d.ts.map +1 -1
  47. package/dist/services/analytics/risk.service.js +141 -129
  48. package/dist/services/analytics/risk.service.js.map +1 -1
  49. package/dist/tools/compare-vaults.d.ts.map +1 -1
  50. package/dist/tools/compare-vaults.js +44 -74
  51. package/dist/tools/compare-vaults.js.map +1 -1
  52. package/dist/tools/get-asset.d.ts +17 -0
  53. package/dist/tools/get-asset.d.ts.map +1 -0
  54. package/dist/tools/get-asset.js +44 -0
  55. package/dist/tools/get-asset.js.map +1 -0
  56. package/dist/tools/get-curator.d.ts +13 -0
  57. package/dist/tools/get-curator.d.ts.map +1 -0
  58. package/dist/tools/get-curator.js +81 -0
  59. package/dist/tools/get-curator.js.map +1 -0
  60. package/dist/tools/get-global-tvl.d.ts +20 -0
  61. package/dist/tools/get-global-tvl.d.ts.map +1 -0
  62. package/dist/tools/get-global-tvl.js +38 -0
  63. package/dist/tools/get-global-tvl.js.map +1 -0
  64. package/dist/tools/get-historical-state.d.ts +22 -0
  65. package/dist/tools/get-historical-state.d.ts.map +1 -0
  66. package/dist/tools/get-historical-state.js +65 -0
  67. package/dist/tools/get-historical-state.js.map +1 -0
  68. package/dist/tools/get-indexing-status.d.ts +20 -0
  69. package/dist/tools/get-indexing-status.d.ts.map +1 -0
  70. package/dist/tools/get-indexing-status.js +38 -0
  71. package/dist/tools/get-indexing-status.js.map +1 -0
  72. package/dist/tools/list-chains.d.ts +16 -0
  73. package/dist/tools/list-chains.d.ts.map +1 -0
  74. package/dist/tools/list-chains.js +46 -0
  75. package/dist/tools/list-chains.js.map +1 -0
  76. package/dist/tools/list-curators.d.ts +18 -0
  77. package/dist/tools/list-curators.d.ts.map +1 -0
  78. package/dist/tools/list-curators.js +49 -0
  79. package/dist/tools/list-curators.js.map +1 -0
  80. package/dist/tools/predict-yield.d.ts.map +1 -1
  81. package/dist/tools/predict-yield.js +77 -6
  82. package/dist/tools/predict-yield.js.map +1 -1
  83. package/dist/tools/registry.d.ts.map +1 -1
  84. package/dist/tools/registry.js +83 -11
  85. package/dist/tools/registry.js.map +1 -1
  86. package/dist/tools/simulate-vault.d.ts +1 -1
  87. package/dist/tools/user-portfolio.d.ts.map +1 -1
  88. package/dist/tools/user-portfolio.js +30 -51
  89. package/dist/tools/user-portfolio.js.map +1 -1
  90. package/dist/tools/vault-composition.d.ts +18 -15
  91. package/dist/tools/vault-composition.d.ts.map +1 -1
  92. package/dist/tools/vault-composition.js +71 -155
  93. package/dist/tools/vault-composition.js.map +1 -1
  94. package/dist/types/generated.d.ts +393 -15
  95. package/dist/types/generated.d.ts.map +1 -1
  96. package/dist/utils/comparison-metrics.d.ts +13 -1
  97. package/dist/utils/comparison-metrics.d.ts.map +1 -1
  98. package/dist/utils/comparison-metrics.js +29 -4
  99. package/dist/utils/comparison-metrics.js.map +1 -1
  100. package/dist/utils/composition-metrics.d.ts +42 -0
  101. package/dist/utils/composition-metrics.d.ts.map +1 -0
  102. package/dist/utils/composition-metrics.js +50 -0
  103. package/dist/utils/composition-metrics.js.map +1 -0
  104. package/dist/utils/fee-formatting.d.ts +41 -0
  105. package/dist/utils/fee-formatting.d.ts.map +1 -0
  106. package/dist/utils/fee-formatting.js +57 -0
  107. package/dist/utils/fee-formatting.js.map +1 -0
  108. package/dist/utils/operational-signals.d.ts +55 -0
  109. package/dist/utils/operational-signals.d.ts.map +1 -0
  110. package/dist/utils/operational-signals.js +105 -0
  111. package/dist/utils/operational-signals.js.map +1 -0
  112. package/dist/utils/validators.d.ts +103 -0
  113. package/dist/utils/validators.d.ts.map +1 -1
  114. package/dist/utils/validators.js +59 -1
  115. package/dist/utils/validators.js.map +1 -1
  116. package/package.json +2 -2
  117. package/dist/graphql/fragments.d.ts +0 -183
  118. package/dist/graphql/fragments.d.ts.map +0 -1
  119. package/dist/graphql/fragments.js +0 -297
  120. package/dist/graphql/fragments.js.map +0 -1
  121. package/dist/graphql/queries/period-summaries.d.ts +0 -15
  122. package/dist/graphql/queries/period-summaries.d.ts.map +0 -1
  123. package/dist/graphql/queries/period-summaries.js +0 -24
  124. package/dist/graphql/queries/period-summaries.js.map +0 -1
  125. package/dist/services/analytics/protocol-overview.service.d.ts +0 -61
  126. package/dist/services/analytics/protocol-overview.service.d.ts.map +0 -1
  127. package/dist/services/analytics/protocol-overview.service.js +0 -182
  128. package/dist/services/analytics/protocol-overview.service.js.map +0 -1
  129. package/dist/tools/index.d.ts +0 -26
  130. package/dist/tools/index.d.ts.map +0 -1
  131. package/dist/tools/index.js +0 -32
  132. package/dist/tools/index.js.map +0 -1
@@ -23,6 +23,7 @@
23
23
  * - GraphQL query uses `chainId_in` filter for cross-chain queries
24
24
  */
25
25
  import { getToolDisclaimer } from '../utils/disclaimers.js';
26
+ import { calculateHHI, getDiversificationLevel, } from '../utils/composition-metrics.js';
26
27
  import { COMPARE_VAULTS_QUERY, BATCH_VAULT_FIRST_TRANSACTIONS_QUERY, } from '../graphql/queries/index.js';
27
28
  import { SINGLE_VAULT_COMPOSITION_QUERY } from '../graphql/queries/portfolio.queries.js';
28
29
  import { normalizeAndRankVaults, generateComparisonSummary, formatComparisonTable, } from '../utils/comparison-metrics.js';
@@ -189,6 +190,20 @@ function convertToComparisonData(vault, allVaults, vaultAgeMap) {
189
190
  }
190
191
  // Get actual vault age (already computed above for risk scoring)
191
192
  const actualAge = vaultAgeMap?.get(vault.address.toLowerCase());
193
+ // Sustainable APR (excludes airdrops/incentives). Same period selection as
194
+ // `apr` above — prefer weekly, fall back to monthly. Total - sustainable
195
+ // gives the incentive contribution; clamp to 0 since the gap can be slightly
196
+ // negative due to how the backend nets extra-yield removal.
197
+ const weeklySustainable = vault.state?.weeklyApr?.linearNetAprWithoutExtraYields;
198
+ const monthlySustainable = vault.state?.monthlyApr?.linearNetAprWithoutExtraYields;
199
+ const sustainableNetApr = typeof weeklySustainable === 'number'
200
+ ? weeklySustainable
201
+ : typeof monthlySustainable === 'number'
202
+ ? monthlySustainable
203
+ : undefined;
204
+ const incentiveContribution = typeof sustainableNetApr === 'number' ? Math.max(0, apr - sustainableNetApr) : undefined;
205
+ // TWRR variant is more honest for volatile vaults; surface alongside.
206
+ const twrrNetApr = vault.state?.weeklyApr?.twrrNetApr ?? vault.state?.monthlyApr?.twrrNetApr ?? null;
192
207
  return {
193
208
  address: vault.address,
194
209
  name: vault.name || 'Unknown Vault',
@@ -196,6 +211,9 @@ function convertToComparisonData(vault, allVaults, vaultAgeMap) {
196
211
  chainId: chainId,
197
212
  tvl: typeof tvl === 'number' ? tvl : 0,
198
213
  apr: apr,
214
+ sustainableNetApr,
215
+ incentiveContribution,
216
+ twrrNetApr,
199
217
  totalShares: vault.state?.totalSupply,
200
218
  totalAssets: vault.state?.totalAssets,
201
219
  // Track record fields
@@ -336,72 +354,25 @@ function normalizeRiskLevel(riskLevel) {
336
354
  return riskLevel.toLowerCase();
337
355
  }
338
356
  /**
339
- * Calculate composition metrics from raw composition data
340
- * Note: Backend API changed from protocol-based to chain-based composition
341
- */
342
- /**
343
- * Calculate composition metrics from protocol-based data
344
- *
345
- * Uses assetByProtocols from Octav API for DeFi protocol analysis.
346
- * "wallet" protocol (idle assets) is excluded from HHI calculation
347
- * but tracked separately as idlePercent for capital efficiency analysis.
348
- *
349
- * @param rawComposition - Full vault composition response from Octav API
350
- * @returns Composition metrics with protocol-based diversification
357
+ * Calculate composition metrics from typed Vault.composition (v0.6+).
358
+ * Backend provides `repartition` (percentage) sorted desc no client
359
+ * recalculation. The typed API has no "Wallet" entry, so HHI walks every
360
+ * row (see docs/agent-notes.md gotcha #8).
351
361
  */
352
- function calculateCompositionMetrics(rawComposition) {
353
- if (!rawComposition ||
354
- !rawComposition.assetByProtocols ||
355
- Object.keys(rawComposition.assetByProtocols).length === 0) {
362
+ function calculateCompositionMetrics(composition) {
363
+ if (!composition || composition.compositions.length === 0) {
356
364
  return undefined;
357
365
  }
358
- // Filter and transform to protocol data with values
359
- const allProtocols = Object.entries(rawComposition.assetByProtocols)
360
- .filter(([, protocol]) => {
361
- const value = parseFloat(protocol.value);
362
- return !isNaN(value) && value > 0;
363
- })
364
- .map(([key, protocol]) => ({
365
- protocolKey: key,
366
- protocolName: protocol.name,
367
- valueUsd: parseFloat(protocol.value),
368
- percentage: 0, // Calculate after total
369
- }));
370
- if (allProtocols.length === 0) {
366
+ const entries = composition.compositions.filter((p) => p.valueInUsd > 0);
367
+ if (entries.length === 0)
371
368
  return undefined;
372
- }
373
- // Calculate total and percentages (including wallet)
374
- const totalValue = allProtocols.reduce((sum, p) => sum + p.valueUsd, 0);
375
- allProtocols.forEach((p) => {
376
- p.percentage = totalValue > 0 ? (p.valueUsd / totalValue) * 100 : 0;
377
- });
378
- // Sort by value descending
379
- allProtocols.sort((a, b) => b.valueUsd - a.valueUsd);
380
- // Separate wallet (idle assets) from DeFi protocols for HHI calculation
381
- const walletProtocol = allProtocols.find((p) => p.protocolKey === 'wallet');
382
- const defiProtocols = allProtocols.filter((p) => p.protocolKey !== 'wallet');
383
- // Recalculate percentages for DeFi-only (for HHI)
384
- const defiTotalValue = defiProtocols.reduce((sum, p) => sum + p.valueUsd, 0);
385
- const defiProtocolsForHHI = defiProtocols.map((p) => ({
386
- ...p,
387
- percentage: defiTotalValue > 0 ? (p.valueUsd / defiTotalValue) * 100 : 0,
388
- }));
389
- // Calculate HHI (Herfindahl-Hirschman Index) - excluding wallet
390
- const hhi = defiProtocolsForHHI.reduce((sum, p) => sum + Math.pow(p.percentage / 100, 2), 0);
391
- // Determine diversification level
392
- const diversificationLevel = hhi < 0.15 ? 'High' : hhi < 0.25 ? 'Medium' : 'Low';
393
- // Get top DeFi protocol (not wallet)
394
- const topProtocol = defiProtocols[0]?.protocolName || null;
395
- const topProtocolPercent = defiProtocols[0]?.percentage || null;
396
- // Calculate idle assets percentage
397
- const idlePercent = walletProtocol?.percentage || 0;
369
+ const hhi = calculateHHI(entries.map((p) => p.repartition));
398
370
  return {
399
- hhi: parseFloat(hhi.toFixed(4)),
400
- diversificationLevel,
401
- topProtocol,
402
- topProtocolPercent: topProtocolPercent ? parseFloat(topProtocolPercent.toFixed(2)) : null,
403
- protocolCount: defiProtocols.length,
404
- idlePercent: parseFloat(idlePercent.toFixed(2)),
371
+ hhi,
372
+ diversificationLevel: getDiversificationLevel(hhi),
373
+ topProtocol: entries[0]?.protocol ?? null,
374
+ topProtocolPercent: entries[0] ? parseFloat(entries[0].repartition.toFixed(2)) : null,
375
+ protocolCount: entries.length,
405
376
  };
406
377
  }
407
378
  /**
@@ -446,8 +417,9 @@ function createTransformComparisonData(input, vaultAgeMap) {
446
417
  // Convert to comparison data - chainId is now extracted from vault.chain.id
447
418
  // Pass vault age map for actual age-based risk calculation
448
419
  const comparisonData = data.vaults.items.map((vault) => convertToComparisonData(vault, data.vaults.items, vaultAgeMap));
449
- // Normalize and rank vaults
450
- const normalizedVaults = normalizeAndRankVaults(comparisonData);
420
+ // Normalize and rank vaults (rankBy: 'totalApr' by default, 'sustainableApr'
421
+ // when caller asked to exclude airdrops/incentives from the ranking).
422
+ const normalizedVaults = normalizeAndRankVaults(comparisonData, input.rankBy);
451
423
  // Generate summary statistics
452
424
  const summary = generateComparisonSummary(comparisonData);
453
425
  // Format as markdown table
@@ -496,21 +468,21 @@ export function createExecuteCompareVaults(container) {
496
468
  // Fetch vault ages in parallel for accurate age-based risk calculation
497
469
  const vaultAgeMap = await fetchVaultAges(input.vaultAddresses, container.graphqlClient);
498
470
  const comparisonData = cachedVaults.map((vault) => convertToComparisonData(vault, cachedVaults, vaultAgeMap));
499
- const normalizedVaults = normalizeAndRankVaults(comparisonData);
471
+ const normalizedVaults = normalizeAndRankVaults(comparisonData, input.rankBy);
500
472
  const summary = generateComparisonSummary(comparisonData);
501
473
  const table = formatComparisonTable(normalizedVaults);
502
474
  const markdown = buildComparisonMarkdown(summary, table, chainIds, true);
503
475
  // Build structured vault data for UI block rendering (cached path)
504
476
  const structuredVaults = cachedVaults.map((vault, index) => convertToStructuredVaultData(vault, comparisonData[index]));
505
477
  // Fetch composition data for each vault with rate limiting (cached path)
506
- // Uses rateLimitedMap to prevent 429 rate limit errors from Octav API
507
- // Note: Backend API uses walletAddress parameter
478
+ // Uses rateLimitedMap to prevent 429 rate limit errors from Octav API.
479
+ // v0.6+ typed query needs (address, chainId), no longer just walletAddress.
508
480
  const compositionResults = await rateLimitedMap(structuredVaults, async (vault) => {
509
481
  try {
510
- const compResponse = await container.graphqlClient.request(SINGLE_VAULT_COMPOSITION_QUERY, { walletAddress: vault.address });
482
+ const compResponse = await container.graphqlClient.request(SINGLE_VAULT_COMPOSITION_QUERY, { address: vault.address, chainId: vault.chainId });
511
483
  return {
512
484
  address: vault.address,
513
- metrics: calculateCompositionMetrics(compResponse.vaultComposition),
485
+ metrics: calculateCompositionMetrics(compResponse.vaultByAddress?.composition ?? null),
514
486
  };
515
487
  }
516
488
  catch {
@@ -587,16 +559,14 @@ ${JSON.stringify({ vaults: structuredVaults }, null, 2)}
587
559
  if (!result.isError && result.content[0]?.type === 'text') {
588
560
  try {
589
561
  const output = JSON.parse(result.content[0].text);
590
- // Fetch composition data for each vault with rate limiting
591
- // Uses rateLimitedMap to prevent 429 rate limit errors from Octav API
592
- // This enables diversification comparison between vaults
593
- // Note: Backend API uses walletAddress parameter
562
+ // Fetch composition data for each vault with rate limiting.
563
+ // v0.6+ typed query needs (address, chainId).
594
564
  const compositionResults = await rateLimitedMap(output.vaults, async (vault) => {
595
565
  try {
596
- const compResponse = await container.graphqlClient.request(SINGLE_VAULT_COMPOSITION_QUERY, { walletAddress: vault.address });
566
+ const compResponse = await container.graphqlClient.request(SINGLE_VAULT_COMPOSITION_QUERY, { address: vault.address, chainId: vault.chainId });
597
567
  return {
598
568
  address: vault.address,
599
- metrics: calculateCompositionMetrics(compResponse.vaultComposition),
569
+ metrics: calculateCompositionMetrics(compResponse.vaultByAddress?.composition ?? null),
600
570
  };
601
571
  }
602
572
  catch {
@@ -1 +1 @@
1
- {"version":3,"file":"compare-vaults.js","sourceRoot":"","sources":["../../src/tools/compare-vaults.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compare-vaults.js","sourceRoot":"","sources":["../../src/tools/compare-vaults.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * get_asset Tool
3
+ *
4
+ * Returns ERC20 asset metadata (symbol, decimals, current USD price, chain).
5
+ * Useful for portfolio context when the asset isn't being fetched as part of
6
+ * a vault query (`get_vault_data` already nests asset info).
7
+ *
8
+ * Cache: cacheTTL.userPortfolio (5 minutes — priceUsd ticks with the market).
9
+ *
10
+ * Cache tag: vault-adjacent (assets back vaults). Registered under
11
+ * CacheTag.VAULT so a vault flush also invalidates the asset price.
12
+ */
13
+ import { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
14
+ import { GetAssetInput } from '../utils/validators.js';
15
+ import { ServiceContainer } from '../core/container.js';
16
+ export declare function createExecuteGetAsset(container: ServiceContainer): (input: GetAssetInput) => Promise<CallToolResult>;
17
+ //# sourceMappingURL=get-asset.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-asset.d.ts","sourceRoot":"","sources":["../../src/tools/get-asset.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAIvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AA4BxD,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,gBAAgB,GAC1B,CAAC,KAAK,EAAE,aAAa,KAAK,OAAO,CAAC,cAAc,CAAC,CA4BnD"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * get_asset Tool
3
+ *
4
+ * Returns ERC20 asset metadata (symbol, decimals, current USD price, chain).
5
+ * Useful for portfolio context when the asset isn't being fetched as part of
6
+ * a vault query (`get_vault_data` already nests asset info).
7
+ *
8
+ * Cache: cacheTTL.userPortfolio (5 minutes — priceUsd ticks with the market).
9
+ *
10
+ * Cache tag: vault-adjacent (assets back vaults). Registered under
11
+ * CacheTag.VAULT so a vault flush also invalidates the asset price.
12
+ */
13
+ import { getToolDisclaimer } from '../utils/disclaimers.js';
14
+ import { GET_ASSET_QUERY } from '../graphql/queries/index.js';
15
+ import { executeToolWithCache } from '../utils/execute-tool-with-cache.js';
16
+ import { CacheTag } from '../core/cache-invalidation.js';
17
+ import { cacheTTL } from '../cache/index.js';
18
+ function cacheKeyFor(input) {
19
+ return `asset:${input.assetAddress}:${input.chainId}`;
20
+ }
21
+ export function createExecuteGetAsset(container) {
22
+ const executor = executeToolWithCache({
23
+ container,
24
+ cacheKey: cacheKeyFor,
25
+ cacheTTL: cacheTTL.userPortfolio,
26
+ query: GET_ASSET_QUERY,
27
+ variables: (input) => ({ address: input.assetAddress, chainId: input.chainId }),
28
+ validateResult: (data) => ({
29
+ valid: data.assetByAddress !== null,
30
+ message: data.assetByAddress ? undefined : 'Asset not found on the requested chain',
31
+ isError: false,
32
+ }),
33
+ toolName: 'get_asset',
34
+ });
35
+ return async (input) => {
36
+ container.cacheInvalidator.register(cacheKeyFor(input), [CacheTag.VAULT]);
37
+ const result = await executor(input);
38
+ if (!result.isError && result.content[0]?.type === 'text') {
39
+ result.content[0].text = result.content[0].text + getToolDisclaimer('get_asset');
40
+ }
41
+ return result;
42
+ };
43
+ }
44
+ //# sourceMappingURL=get-asset.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-asset.js","sourceRoot":"","sources":["../../src/tools/get-asset.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAE3E,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAsB7C,SAAS,WAAW,CAAC,KAAoB;IACvC,OAAO,SAAS,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,SAA2B;IAE3B,MAAM,QAAQ,GAAG,oBAAoB,CAKnC;QACA,SAAS;QACT,QAAQ,EAAE,WAAW;QACrB,QAAQ,EAAE,QAAQ,CAAC,aAAa;QAChC,KAAK,EAAE,eAAe;QACtB,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,YAAY,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;QAC/E,cAAc,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACzB,KAAK,EAAE,IAAI,CAAC,cAAc,KAAK,IAAI;YACnC,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,wCAAwC;YACnF,OAAO,EAAE,KAAK;SACf,CAAC;QACF,QAAQ,EAAE,WAAW;KACtB,CAAC,CAAC;IAEH,OAAO,KAAK,EAAE,KAAoB,EAA2B,EAAE;QAC7D,SAAS,CAAC,gBAAgB,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1E,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,MAAM,EAAE,CAAC;YAC1D,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC;QACnF,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * get_curator Tool
3
+ *
4
+ * Returns a single curator's metadata. Pair with `search_vaults` (filter by
5
+ * `curatorIds_contains`) to enumerate the curator's vaults.
6
+ *
7
+ * Cache: 15 minutes (curator metadata changes infrequently).
8
+ */
9
+ import { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
10
+ import { GetCuratorInput } from '../utils/validators.js';
11
+ import { ServiceContainer } from '../core/container.js';
12
+ export declare function createExecuteGetCurator(container: ServiceContainer): (input: GetCuratorInput) => Promise<CallToolResult>;
13
+ //# sourceMappingURL=get-curator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-curator.d.ts","sourceRoot":"","sources":["../../src/tools/get-curator.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAGzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAyDxD,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,gBAAgB,GAC1B,CAAC,KAAK,EAAE,eAAe,KAAK,OAAO,CAAC,cAAc,CAAC,CA+BrD"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * get_curator Tool
3
+ *
4
+ * Returns a single curator's metadata. Pair with `search_vaults` (filter by
5
+ * `curatorIds_contains`) to enumerate the curator's vaults.
6
+ *
7
+ * Cache: 15 minutes (curator metadata changes infrequently).
8
+ */
9
+ import { getToolDisclaimer } from '../utils/disclaimers.js';
10
+ import { GET_CURATOR_QUERY } from '../graphql/queries/index.js';
11
+ import { CacheTag } from '../core/cache-invalidation.js';
12
+ import { cacheTTL } from '../cache/index.js';
13
+ import { handleToolError } from '../utils/tool-error-handler.js';
14
+ function jsonResponse(data, toolName) {
15
+ return {
16
+ content: [
17
+ {
18
+ type: 'text',
19
+ text: JSON.stringify(data, null, 2) + getToolDisclaimer(toolName),
20
+ },
21
+ ],
22
+ isError: false,
23
+ };
24
+ }
25
+ /**
26
+ * Build a non-error "not found" / informational response with the standard
27
+ * disclaimer appended (Copilot review #2 — disclaimer parity across all
28
+ * non-error response paths in this tool).
29
+ */
30
+ function infoResponse(message, toolName) {
31
+ return {
32
+ content: [
33
+ {
34
+ type: 'text',
35
+ text: message + getToolDisclaimer(toolName),
36
+ },
37
+ ],
38
+ isError: false,
39
+ };
40
+ }
41
+ /**
42
+ * Detect the backend's "unknown curator" error shape — at production this
43
+ * surfaces as `INTERNAL_SERVER_ERROR` with a message like `Document "X" not
44
+ * found`, rather than `data.curator: null`. Centralizing the heuristic so a
45
+ * future backend change can be addressed in one place.
46
+ */
47
+ function isCuratorNotFoundError(err) {
48
+ if (!err || typeof err !== 'object')
49
+ return false;
50
+ const msg = JSON.stringify(err).toLowerCase();
51
+ return msg.includes('document') && msg.includes('not found');
52
+ }
53
+ export function createExecuteGetCurator(container) {
54
+ return async (input) => {
55
+ const cacheKey = `curator:${input.curatorId}`;
56
+ const cached = container.cache.get(cacheKey);
57
+ if (cached) {
58
+ return jsonResponse(cached, 'get_curator');
59
+ }
60
+ container.cacheInvalidator.register(cacheKey, [CacheTag.VAULT]);
61
+ try {
62
+ const data = await container.graphqlClient.request(GET_CURATOR_QUERY, {
63
+ id: input.curatorId,
64
+ });
65
+ if (!data.curator) {
66
+ // Defensive: also handle the case where the backend returns null
67
+ // instead of throwing (different schema versions, future changes).
68
+ return infoResponse(`Curator not found: ${input.curatorId}`, 'get_curator');
69
+ }
70
+ container.cache.set(cacheKey, data, cacheTTL.vaultData);
71
+ return jsonResponse(data, 'get_curator');
72
+ }
73
+ catch (err) {
74
+ if (isCuratorNotFoundError(err)) {
75
+ return infoResponse(`Curator not found: ${input.curatorId}`, 'get_curator');
76
+ }
77
+ return handleToolError(err, 'get_curator');
78
+ }
79
+ };
80
+ }
81
+ //# sourceMappingURL=get-curator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-curator.js","sourceRoot":"","sources":["../../src/tools/get-curator.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAEhE,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEjE,SAAS,YAAY,CAAC,IAAa,EAAE,QAAgB;IACnD,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,iBAAiB,CAAC,QAAQ,CAAC;aAClE;SACF;QACD,OAAO,EAAE,KAAK;KACf,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,YAAY,CAAC,OAAe,EAAE,QAAgB;IACrD,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,OAAO,GAAG,iBAAiB,CAAC,QAAQ,CAAC;aAC5C;SACF;QACD,OAAO,EAAE,KAAK;KACf,CAAC;AACJ,CAAC;AAaD;;;;;GAKG;AACH,SAAS,sBAAsB,CAAC,GAAY;IAC1C,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAClD,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;IAC9C,OAAO,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,SAA2B;IAE3B,OAAO,KAAK,EAAE,KAAsB,EAA2B,EAAE;QAC/D,MAAM,QAAQ,GAAG,WAAW,KAAK,CAAC,SAAS,EAAE,CAAC;QAE9C,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAkB,QAAQ,CAAC,CAAC;QAC9D,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,YAAY,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QAC7C,CAAC;QAED,SAAS,CAAC,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QAEhE,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,aAAa,CAAC,OAAO,CAAkB,iBAAiB,EAAE;gBACrF,EAAE,EAAE,KAAK,CAAC,SAAS;aACpB,CAAC,CAAC;YAEH,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAClB,iEAAiE;gBACjE,mEAAmE;gBACnE,OAAO,YAAY,CAAC,sBAAsB,KAAK,CAAC,SAAS,EAAE,EAAE,aAAa,CAAC,CAAC;YAC9E,CAAC;YAED,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;YACxD,OAAO,YAAY,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QAC3C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,sBAAsB,CAAC,GAAG,CAAC,EAAE,CAAC;gBAChC,OAAO,YAAY,CAAC,sBAAsB,KAAK,CAAC,SAAS,EAAE,EAAE,aAAa,CAAC,CAAC;YAC9E,CAAC;YACD,OAAO,eAAe,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * get_global_tvl Tool
3
+ *
4
+ * Returns the live total value locked across all Lagoon vaults & chains, in USD.
5
+ *
6
+ * Use cases:
7
+ * - "How big is Lagoon?" context for summaries
8
+ * - Headline metric for reports
9
+ *
10
+ * Cache: cacheTTL.globalTvl (5 minutes — TVL ticks slowly but markets move).
11
+ *
12
+ * Cache-tag note: this is a protocol-wide metric, NOT tied to a specific
13
+ * vault — intentionally exempted from CacheTag.VAULT invalidation. A future
14
+ * CacheTag.PROTOCOL_METADATA would be the right home if invalidation needed.
15
+ */
16
+ import { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
17
+ import { GetGlobalTvlInput } from '../utils/validators.js';
18
+ import { ServiceContainer } from '../core/container.js';
19
+ export declare function createExecuteGetGlobalTvl(container: ServiceContainer): (input: GetGlobalTvlInput) => Promise<CallToolResult>;
20
+ //# sourceMappingURL=get-global-tvl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-global-tvl.d.ts","sourceRoot":"","sources":["../../src/tools/get-global-tvl.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAI3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAOxD,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,gBAAgB,GAC1B,CAAC,KAAK,EAAE,iBAAiB,KAAK,OAAO,CAAC,cAAc,CAAC,CAuBvD"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * get_global_tvl Tool
3
+ *
4
+ * Returns the live total value locked across all Lagoon vaults & chains, in USD.
5
+ *
6
+ * Use cases:
7
+ * - "How big is Lagoon?" context for summaries
8
+ * - Headline metric for reports
9
+ *
10
+ * Cache: cacheTTL.globalTvl (5 minutes — TVL ticks slowly but markets move).
11
+ *
12
+ * Cache-tag note: this is a protocol-wide metric, NOT tied to a specific
13
+ * vault — intentionally exempted from CacheTag.VAULT invalidation. A future
14
+ * CacheTag.PROTOCOL_METADATA would be the right home if invalidation needed.
15
+ */
16
+ import { getToolDisclaimer } from '../utils/disclaimers.js';
17
+ import { GET_GLOBAL_TVL_QUERY } from '../graphql/queries/index.js';
18
+ import { executeToolWithCache } from '../utils/execute-tool-with-cache.js';
19
+ import { cacheTTL } from '../cache/index.js';
20
+ export function createExecuteGetGlobalTvl(container) {
21
+ const executor = executeToolWithCache({
22
+ container,
23
+ cacheKey: () => 'global:tvl',
24
+ cacheTTL: cacheTTL.globalTvl,
25
+ query: GET_GLOBAL_TVL_QUERY,
26
+ variables: () => ({}),
27
+ transformResult: (data) => ({ totalValueLockedUsd: data.getGlobalTVL }),
28
+ toolName: 'get_global_tvl',
29
+ });
30
+ return async (input) => {
31
+ const result = await executor(input);
32
+ if (!result.isError && result.content[0]?.type === 'text') {
33
+ result.content[0].text = result.content[0].text + getToolDisclaimer('get_global_tvl');
34
+ }
35
+ return result;
36
+ };
37
+ }
38
+ //# sourceMappingURL=get-global-tvl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-global-tvl.js","sourceRoot":"","sources":["../../src/tools/get-global-tvl.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAE3E,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAM7C,MAAM,UAAU,yBAAyB,CACvC,SAA2B;IAE3B,MAAM,QAAQ,GAAG,oBAAoB,CAKnC;QACA,SAAS;QACT,QAAQ,EAAE,GAAG,EAAE,CAAC,YAAY;QAC5B,QAAQ,EAAE,QAAQ,CAAC,SAAS;QAC5B,KAAK,EAAE,oBAAoB;QAC3B,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;QACrB,eAAe,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,mBAAmB,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;QACvE,QAAQ,EAAE,gBAAgB;KAC3B,CAAC,CAAC;IAEH,OAAO,KAAK,EAAE,KAAwB,EAA2B,EAAE;QACjE,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,MAAM,EAAE,CAAC;YAC1D,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;QACxF,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * get_historical_state Tool
3
+ *
4
+ * Returns the vault's `HistoricalVaultState` at a specific Unix timestamp
5
+ * via `Vault.stateAt(timestamp)`. Far simpler than reconstructing state from
6
+ * the event stream.
7
+ *
8
+ * Use cases:
9
+ * - "What was the price per share on date X?"
10
+ * - "What were the fees at vault inception vs today?"
11
+ * - "Was the vault paused at the time of incident Y?"
12
+ *
13
+ * Cache: cacheTTL.historicalState (60 minutes — historical state by
14
+ * timestamp is immutable once past).
15
+ *
16
+ * Cache tag: vault-adjacent. Registered under CacheTag.VAULT.
17
+ */
18
+ import { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
19
+ import { GetHistoricalStateInput } from '../utils/validators.js';
20
+ import { ServiceContainer } from '../core/container.js';
21
+ export declare function createExecuteGetHistoricalState(container: ServiceContainer): (input: GetHistoricalStateInput) => Promise<CallToolResult>;
22
+ //# sourceMappingURL=get-historical-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-historical-state.d.ts","sourceRoot":"","sources":["../../src/tools/get-historical-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAIjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAqBxD,wBAAgB,+BAA+B,CAC7C,SAAS,EAAE,gBAAgB,GAC1B,CAAC,KAAK,EAAE,uBAAuB,KAAK,OAAO,CAAC,cAAc,CAAC,CA6C7D"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * get_historical_state Tool
3
+ *
4
+ * Returns the vault's `HistoricalVaultState` at a specific Unix timestamp
5
+ * via `Vault.stateAt(timestamp)`. Far simpler than reconstructing state from
6
+ * the event stream.
7
+ *
8
+ * Use cases:
9
+ * - "What was the price per share on date X?"
10
+ * - "What were the fees at vault inception vs today?"
11
+ * - "Was the vault paused at the time of incident Y?"
12
+ *
13
+ * Cache: cacheTTL.historicalState (60 minutes — historical state by
14
+ * timestamp is immutable once past).
15
+ *
16
+ * Cache tag: vault-adjacent. Registered under CacheTag.VAULT.
17
+ */
18
+ import { getToolDisclaimer } from '../utils/disclaimers.js';
19
+ import { GET_HISTORICAL_STATE_QUERY } from '../graphql/queries/index.js';
20
+ import { executeToolWithCache } from '../utils/execute-tool-with-cache.js';
21
+ import { CacheTag } from '../core/cache-invalidation.js';
22
+ import { cacheTTL } from '../cache/index.js';
23
+ function cacheKeyFor(input) {
24
+ return `historical_state:${input.vaultAddress}:${input.chainId}:${input.timestamp}`;
25
+ }
26
+ export function createExecuteGetHistoricalState(container) {
27
+ const executor = executeToolWithCache({
28
+ container,
29
+ cacheKey: cacheKeyFor,
30
+ cacheTTL: cacheTTL.historicalState,
31
+ query: GET_HISTORICAL_STATE_QUERY,
32
+ variables: (input) => ({
33
+ address: input.vaultAddress,
34
+ chainId: input.chainId,
35
+ timestamp: input.timestamp,
36
+ }),
37
+ validateResult: (data) => {
38
+ if (!data.vaultByAddress) {
39
+ return {
40
+ valid: false,
41
+ message: 'Vault not found on the requested chain',
42
+ isError: false,
43
+ };
44
+ }
45
+ if (!data.vaultByAddress.stateAt) {
46
+ return {
47
+ valid: false,
48
+ message: 'No historical state available at the requested timestamp (vault may not have existed yet)',
49
+ isError: false,
50
+ };
51
+ }
52
+ return { valid: true };
53
+ },
54
+ toolName: 'get_historical_state',
55
+ });
56
+ return async (input) => {
57
+ container.cacheInvalidator.register(cacheKeyFor(input), [CacheTag.VAULT]);
58
+ const result = await executor(input);
59
+ if (!result.isError && result.content[0]?.type === 'text') {
60
+ result.content[0].text = result.content[0].text + getToolDisclaimer('get_historical_state');
61
+ }
62
+ return result;
63
+ };
64
+ }
65
+ //# sourceMappingURL=get-historical-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-historical-state.js","sourceRoot":"","sources":["../../src/tools/get-historical-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAE3E,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAe7C,SAAS,WAAW,CAAC,KAA8B;IACjD,OAAO,oBAAoB,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;AACtF,CAAC;AAED,MAAM,UAAU,+BAA+B,CAC7C,SAA2B;IAE3B,MAAM,QAAQ,GAAG,oBAAoB,CAKnC;QACA,SAAS;QACT,QAAQ,EAAE,WAAW;QACrB,QAAQ,EAAE,QAAQ,CAAC,eAAe;QAClC,KAAK,EAAE,0BAA0B;QACjC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACrB,OAAO,EAAE,KAAK,CAAC,YAAY;YAC3B,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,SAAS,EAAE,KAAK,CAAC,SAAS;SAC3B,CAAC;QACF,cAAc,EAAE,CAAC,IAAI,EAAE,EAAE;YACvB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;gBACzB,OAAO;oBACL,KAAK,EAAE,KAAK;oBACZ,OAAO,EAAE,wCAAwC;oBACjD,OAAO,EAAE,KAAK;iBACf,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;gBACjC,OAAO;oBACL,KAAK,EAAE,KAAK;oBACZ,OAAO,EACL,2FAA2F;oBAC7F,OAAO,EAAE,KAAK;iBACf,CAAC;YACJ,CAAC;YACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QACzB,CAAC;QACD,QAAQ,EAAE,sBAAsB;KACjC,CAAC,CAAC;IAEH,OAAO,KAAK,EAAE,KAA8B,EAA2B,EAAE;QACvE,SAAS,CAAC,gBAAgB,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1E,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,MAAM,EAAE,CAAC;YAC1D,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,iBAAiB,CAAC,sBAAsB,CAAC,CAAC;QAC9F,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC"}