@lagoon-protocol/lagoon-mcp 0.2.13 → 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.
- package/dist/cache/index.d.ts +2 -0
- package/dist/cache/index.d.ts.map +1 -1
- package/dist/cache/index.js +2 -0
- package/dist/cache/index.js.map +1 -1
- package/dist/graphql/fragments/composition.fragment.d.ts +49 -0
- package/dist/graphql/fragments/composition.fragment.d.ts.map +1 -0
- package/dist/graphql/fragments/composition.fragment.js +50 -0
- package/dist/graphql/fragments/composition.fragment.js.map +1 -0
- package/dist/graphql/fragments/index.d.ts +1 -0
- package/dist/graphql/fragments/index.d.ts.map +1 -1
- package/dist/graphql/fragments/index.js +2 -0
- package/dist/graphql/fragments/index.js.map +1 -1
- package/dist/graphql/queries/composition.queries.d.ts +22 -0
- package/dist/graphql/queries/composition.queries.d.ts.map +1 -0
- package/dist/graphql/queries/composition.queries.js +30 -0
- package/dist/graphql/queries/composition.queries.js.map +1 -0
- package/dist/graphql/queries/index.d.ts +1 -0
- package/dist/graphql/queries/index.d.ts.map +1 -1
- package/dist/graphql/queries/index.js +2 -0
- package/dist/graphql/queries/index.js.map +1 -1
- package/dist/graphql/queries/portfolio.queries.d.ts +17 -0
- package/dist/graphql/queries/portfolio.queries.d.ts.map +1 -1
- package/dist/graphql/queries/portfolio.queries.js +25 -1
- package/dist/graphql/queries/portfolio.queries.js.map +1 -1
- package/dist/graphql/queries/risk.queries.d.ts +1 -1
- package/dist/graphql/queries/risk.queries.d.ts.map +1 -1
- package/dist/graphql/queries/risk.queries.js +7 -1
- package/dist/graphql/queries/risk.queries.js.map +1 -1
- package/dist/prompts/financial-analysis.d.ts.map +1 -1
- package/dist/prompts/financial-analysis.js +87 -7
- package/dist/prompts/financial-analysis.js.map +1 -1
- package/dist/server.js +1 -1
- package/dist/services/analytics/risk.service.d.ts +12 -0
- package/dist/services/analytics/risk.service.d.ts.map +1 -1
- package/dist/services/analytics/risk.service.js +26 -0
- package/dist/services/analytics/risk.service.js.map +1 -1
- package/dist/skills/portfolio-review.d.ts.map +1 -1
- package/dist/skills/portfolio-review.js +80 -4
- package/dist/skills/portfolio-review.js.map +1 -1
- package/dist/skills/risk-expert.d.ts.map +1 -1
- package/dist/skills/risk-expert.js +76 -10
- package/dist/skills/risk-expert.js.map +1 -1
- package/dist/tools/compare-vaults.d.ts.map +1 -1
- package/dist/tools/compare-vaults.js +75 -1
- package/dist/tools/compare-vaults.js.map +1 -1
- package/dist/tools/registry.d.ts.map +1 -1
- package/dist/tools/registry.js +15 -1
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/user-portfolio.d.ts.map +1 -1
- package/dist/tools/user-portfolio.js +97 -1
- package/dist/tools/user-portfolio.js.map +1 -1
- package/dist/tools/vault-composition.d.ts +27 -0
- package/dist/tools/vault-composition.d.ts.map +1 -0
- package/dist/tools/vault-composition.js +146 -0
- package/dist/tools/vault-composition.js.map +1 -0
- package/dist/utils/risk-scoring.d.ts +33 -0
- package/dist/utils/risk-scoring.d.ts.map +1 -1
- package/dist/utils/risk-scoring.js +73 -14
- package/dist/utils/risk-scoring.js.map +1 -1
- package/dist/utils/validators.d.ts +8 -0
- package/dist/utils/validators.d.ts.map +1 -1
- package/dist/utils/validators.js +4 -0
- package/dist/utils/validators.js.map +1 -1
- package/package.json +1 -1
package/dist/cache/index.d.ts
CHANGED
|
@@ -44,6 +44,7 @@ export declare const cacheTTL: {
|
|
|
44
44
|
readonly riskAnalysis: 900;
|
|
45
45
|
readonly yieldPrediction: 3600;
|
|
46
46
|
readonly portfolioOptimization: 300;
|
|
47
|
+
readonly composition: 900;
|
|
47
48
|
};
|
|
48
49
|
/**
|
|
49
50
|
* Search filters type for cache key generation
|
|
@@ -73,6 +74,7 @@ export declare const cacheKeys: {
|
|
|
73
74
|
schema: () => string;
|
|
74
75
|
compareVaults: (addresses: string[], chainIds: number[]) => string;
|
|
75
76
|
priceHistory: (address: string, chainId: number, range: string) => string;
|
|
77
|
+
composition: (address: string) => string;
|
|
76
78
|
};
|
|
77
79
|
/**
|
|
78
80
|
* Generate cache key based on cache tag and parameters
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cache/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,SAAS,MAAM,YAAY,CAAC;AAGnC;;GAEG;AACH,eAAO,MAAM,KAAK,WAKhB,CAAC;AAEH;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,QAAQ
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cache/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,SAAS,MAAM,YAAY,CAAC;AAGnC;;GAEG;AACH,eAAO,MAAM,KAAK,WAKhB,CAAC;AAEH;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,QAAQ;;;;;;;;;;;;;CAaX,CAAC;AAEX;;GAEG;AACH,KAAK,aAAa,GAAG;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,SAAS;yBACC,MAAM,WAAW,MAAM,KAAG,MAAM;6BAE5B,MAAM,KAAG,MAAM;4BAEhB,aAAa,KAAG,MAAM;gCAElB,MAAM,WAAW,MAAM,SAAS,MAAM,KAAG,MAAM;iGAWxE;QACD,YAAY,EAAE,MAAM,CAAC;QACrB,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,cAAc,EAAE,MAAM,CAAC;KACxB,KAAG,MAAM;kBAGE,MAAM;+BAES,MAAM,EAAE,YAAY,MAAM,EAAE,KAAG,MAAM;4BAMxC,MAAM,WAAW,MAAM,SAAS,MAAM,KAAG,MAAM;2BAGhD,MAAM,KAAG,MAAM;CACvC,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,MAAM,CAa7F;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,SAAS,CAAC,KAAK,CAE/C;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,IAAI,CAEjC"}
|
package/dist/cache/index.js
CHANGED
|
@@ -50,6 +50,7 @@ export const cacheTTL = {
|
|
|
50
50
|
riskAnalysis: 900, // 15 minutes - multi-factor calculation, moderate cost
|
|
51
51
|
yieldPrediction: 3600, // 60 minutes - ML-based forecast, expensive computation
|
|
52
52
|
portfolioOptimization: 300, // 5 minutes - user-specific, interactive use case
|
|
53
|
+
composition: 900, // 15 minutes - protocol composition from Octav API (backend caches 6h)
|
|
53
54
|
};
|
|
54
55
|
/**
|
|
55
56
|
* Cache key generators
|
|
@@ -69,6 +70,7 @@ export const cacheKeys = {
|
|
|
69
70
|
return `compare:${sortedAddresses}:${sortedChainIds}`;
|
|
70
71
|
},
|
|
71
72
|
priceHistory: (address, chainId, range) => `price_history:${address}:${chainId}:${range}`,
|
|
73
|
+
composition: (address) => `composition:${address.toLowerCase()}`,
|
|
72
74
|
};
|
|
73
75
|
/**
|
|
74
76
|
* Generate cache key based on cache tag and parameters
|
package/dist/cache/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cache/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC;;GAEG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,IAAI,SAAS,CAAC;IACjC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM;IAC3B,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,WAAW;IACrC,SAAS,EAAE,KAAK,EAAE,2BAA2B;IAC7C,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO;CAC9B,CAAC,CAAC;AAEH;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,SAAS,EAAE,GAAG,EAAE,sDAAsD;IACtE,aAAa,EAAE,GAAG,EAAE,iDAAiD;IACrE,aAAa,EAAE,GAAG,EAAE,qDAAqD;IACzE,WAAW,EAAE,IAAI,EAAE,qDAAqD;IACxE,YAAY,EAAE,GAAG,EAAE,0CAA0C;IAC7D,MAAM,EAAE,KAAK,EAAE,+CAA+C;IAC9D,UAAU,EAAE,GAAG,EAAE,+CAA+C;IAChE,YAAY,EAAE,IAAI,EAAE,sDAAsD;IAC1E,YAAY,EAAE,GAAG,EAAE,uDAAuD;IAC1E,eAAe,EAAE,IAAI,EAAE,wDAAwD;IAC/E,qBAAqB,EAAE,GAAG,EAAE,kDAAkD;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cache/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Composition Fragment
|
|
3
|
+
*
|
|
4
|
+
* GraphQL fragment for vault composition data including protocol and token breakdowns.
|
|
5
|
+
* Uses the composition field added by the CompositionModule in the backend.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Protocol composition within a vault
|
|
9
|
+
*/
|
|
10
|
+
export interface ProtocolComposition {
|
|
11
|
+
protocol: string;
|
|
12
|
+
valueInUsd: number;
|
|
13
|
+
repartition: number;
|
|
14
|
+
details?: ProtocolComposition[];
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Token/position composition within a vault
|
|
18
|
+
*/
|
|
19
|
+
export interface TokenComposition {
|
|
20
|
+
symbol: string;
|
|
21
|
+
name: string;
|
|
22
|
+
contract: string;
|
|
23
|
+
chainKey: string;
|
|
24
|
+
valueInUsd: number;
|
|
25
|
+
repartition: number;
|
|
26
|
+
details?: TokenComposition[];
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Complete composition data for a vault
|
|
30
|
+
*/
|
|
31
|
+
export interface CompositionData {
|
|
32
|
+
compositions: ProtocolComposition[];
|
|
33
|
+
tokenCompositions: TokenComposition[];
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* GraphQL fragment for composition data
|
|
37
|
+
*
|
|
38
|
+
* Usage:
|
|
39
|
+
* ```graphql
|
|
40
|
+
* query MyQuery {
|
|
41
|
+
* composition(address: "0x...") {
|
|
42
|
+
* ...CompositionFragment
|
|
43
|
+
* }
|
|
44
|
+
* }
|
|
45
|
+
* ${COMPOSITION_FRAGMENT}
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
48
|
+
export declare const COMPOSITION_FRAGMENT = "\n fragment CompositionFragment on CompositionData {\n compositions {\n protocol\n valueInUsd\n repartition\n details {\n protocol\n valueInUsd\n repartition\n }\n }\n tokenCompositions {\n symbol\n name\n contract\n chainKey\n valueInUsd\n repartition\n details {\n symbol\n name\n contract\n chainKey\n valueInUsd\n repartition\n }\n }\n }\n";
|
|
49
|
+
//# sourceMappingURL=composition.fragment.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"composition.fragment.d.ts","sourceRoot":"","sources":["../../../src/graphql/fragments/composition.fragment.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,mBAAmB,EAAE,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,gBAAgB,EAAE,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,mBAAmB,EAAE,CAAC;IACpC,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;CACvC;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,oBAAoB,0eA6BhC,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Composition Fragment
|
|
3
|
+
*
|
|
4
|
+
* GraphQL fragment for vault composition data including protocol and token breakdowns.
|
|
5
|
+
* Uses the composition field added by the CompositionModule in the backend.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* GraphQL fragment for composition data
|
|
9
|
+
*
|
|
10
|
+
* Usage:
|
|
11
|
+
* ```graphql
|
|
12
|
+
* query MyQuery {
|
|
13
|
+
* composition(address: "0x...") {
|
|
14
|
+
* ...CompositionFragment
|
|
15
|
+
* }
|
|
16
|
+
* }
|
|
17
|
+
* ${COMPOSITION_FRAGMENT}
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
export const COMPOSITION_FRAGMENT = `
|
|
21
|
+
fragment CompositionFragment on CompositionData {
|
|
22
|
+
compositions {
|
|
23
|
+
protocol
|
|
24
|
+
valueInUsd
|
|
25
|
+
repartition
|
|
26
|
+
details {
|
|
27
|
+
protocol
|
|
28
|
+
valueInUsd
|
|
29
|
+
repartition
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
tokenCompositions {
|
|
33
|
+
symbol
|
|
34
|
+
name
|
|
35
|
+
contract
|
|
36
|
+
chainKey
|
|
37
|
+
valueInUsd
|
|
38
|
+
repartition
|
|
39
|
+
details {
|
|
40
|
+
symbol
|
|
41
|
+
name
|
|
42
|
+
contract
|
|
43
|
+
chainKey
|
|
44
|
+
valueInUsd
|
|
45
|
+
repartition
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
`;
|
|
50
|
+
//# sourceMappingURL=composition.fragment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"composition.fragment.js","sourceRoot":"","sources":["../../../src/graphql/fragments/composition.fragment.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAiCH;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6BnC,CAAC"}
|
|
@@ -12,4 +12,5 @@ export { TRANSACTION_BASE_FRAGMENT } from './transaction-base.fragment.js';
|
|
|
12
12
|
export { VAULT_FRAGMENT, type VaultData } from './vault.fragment.js';
|
|
13
13
|
export { VAULT_LIST_FRAGMENT, type VaultListData } from './vault-list.fragment.js';
|
|
14
14
|
export { VAULT_SUMMARY_FRAGMENT, type VaultSummaryData } from './vault-summary.fragment.js';
|
|
15
|
+
export { COMPOSITION_FRAGMENT, type ProtocolComposition, type TokenComposition, type CompositionData, } from './composition.fragment.js';
|
|
15
16
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/graphql/fragments/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,sBAAsB,EAAE,KAAK,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAGxF,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAG/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAG/D,OAAO,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAG3F,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAG3E,OAAO,EAAE,cAAc,EAAE,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,KAAK,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACnF,OAAO,EAAE,sBAAsB,EAAE,KAAK,gBAAgB,EAAE,MAAM,6BAA6B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/graphql/fragments/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,sBAAsB,EAAE,KAAK,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAGxF,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAG/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAG/D,OAAO,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAG3F,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAG3E,OAAO,EAAE,cAAc,EAAE,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,KAAK,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACnF,OAAO,EAAE,sBAAsB,EAAE,KAAK,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAG5F,OAAO,EACL,oBAAoB,EACpB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,eAAe,GACrB,MAAM,2BAA2B,CAAC"}
|
|
@@ -18,4 +18,6 @@ export { TRANSACTION_BASE_FRAGMENT } from './transaction-base.fragment.js';
|
|
|
18
18
|
export { VAULT_FRAGMENT } from './vault.fragment.js';
|
|
19
19
|
export { VAULT_LIST_FRAGMENT } from './vault-list.fragment.js';
|
|
20
20
|
export { VAULT_SUMMARY_FRAGMENT } from './vault-summary.fragment.js';
|
|
21
|
+
// Composition Fragment
|
|
22
|
+
export { COMPOSITION_FRAGMENT, } from './composition.fragment.js';
|
|
21
23
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/graphql/fragments/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,yBAAyB;AACzB,OAAO,EAAE,sBAAsB,EAAqB,MAAM,6BAA6B,CAAC;AAExF,sBAAsB;AACtB,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,sBAAsB;AACtB,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,qBAAqB;AACrB,OAAO,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAE3F,4BAA4B;AAC5B,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAE3E,+CAA+C;AAC/C,OAAO,EAAE,cAAc,EAAkB,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAsB,MAAM,0BAA0B,CAAC;AACnF,OAAO,EAAE,sBAAsB,EAAyB,MAAM,6BAA6B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/graphql/fragments/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,yBAAyB;AACzB,OAAO,EAAE,sBAAsB,EAAqB,MAAM,6BAA6B,CAAC;AAExF,sBAAsB;AACtB,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,sBAAsB;AACtB,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,qBAAqB;AACrB,OAAO,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAE3F,4BAA4B;AAC5B,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAE3E,+CAA+C;AAC/C,OAAO,EAAE,cAAc,EAAkB,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAsB,MAAM,0BAA0B,CAAC;AACnF,OAAO,EAAE,sBAAsB,EAAyB,MAAM,6BAA6B,CAAC;AAE5F,uBAAuB;AACvB,OAAO,EACL,oBAAoB,GAIrB,MAAM,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Composition Queries
|
|
3
|
+
*
|
|
4
|
+
* GraphQL queries for vault composition data (protocol and token breakdowns).
|
|
5
|
+
* Uses the composition field from the backend CompositionModule.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Get vault composition GraphQL query
|
|
9
|
+
*
|
|
10
|
+
* Fetches protocol and token composition breakdown for a vault.
|
|
11
|
+
* Used by: get_vault_composition tool
|
|
12
|
+
*
|
|
13
|
+
* Usage:
|
|
14
|
+
* ```typescript
|
|
15
|
+
* const data = await graphqlClient.request<{ vaultComposition: CompositionData | null }>(
|
|
16
|
+
* GET_VAULT_COMPOSITION_QUERY,
|
|
17
|
+
* { vaultAddress: '0x...' }
|
|
18
|
+
* );
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export declare const GET_VAULT_COMPOSITION_QUERY = "\n query GetVaultComposition($vaultAddress: Address!) {\n vaultComposition(vaultAddress: $vaultAddress) {\n ...CompositionFragment\n }\n }\n \n fragment CompositionFragment on CompositionData {\n compositions {\n protocol\n valueInUsd\n repartition\n details {\n protocol\n valueInUsd\n repartition\n }\n }\n tokenCompositions {\n symbol\n name\n contract\n chainKey\n valueInUsd\n repartition\n details {\n symbol\n name\n contract\n chainKey\n valueInUsd\n repartition\n }\n }\n }\n\n";
|
|
22
|
+
//# sourceMappingURL=composition.queries.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"composition.queries.d.ts","sourceRoot":"","sources":["../../../src/graphql/queries/composition.queries.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,2BAA2B,uoBAOvC,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Composition Queries
|
|
3
|
+
*
|
|
4
|
+
* GraphQL queries for vault composition data (protocol and token breakdowns).
|
|
5
|
+
* Uses the composition field from the backend CompositionModule.
|
|
6
|
+
*/
|
|
7
|
+
import { COMPOSITION_FRAGMENT } from '../fragments/index.js';
|
|
8
|
+
/**
|
|
9
|
+
* Get vault composition GraphQL query
|
|
10
|
+
*
|
|
11
|
+
* Fetches protocol and token composition breakdown for a vault.
|
|
12
|
+
* Used by: get_vault_composition tool
|
|
13
|
+
*
|
|
14
|
+
* Usage:
|
|
15
|
+
* ```typescript
|
|
16
|
+
* const data = await graphqlClient.request<{ vaultComposition: CompositionData | null }>(
|
|
17
|
+
* GET_VAULT_COMPOSITION_QUERY,
|
|
18
|
+
* { vaultAddress: '0x...' }
|
|
19
|
+
* );
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
export const GET_VAULT_COMPOSITION_QUERY = `
|
|
23
|
+
query GetVaultComposition($vaultAddress: Address!) {
|
|
24
|
+
vaultComposition(vaultAddress: $vaultAddress) {
|
|
25
|
+
...CompositionFragment
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
${COMPOSITION_FRAGMENT}
|
|
29
|
+
`;
|
|
30
|
+
//# sourceMappingURL=composition.queries.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"composition.queries.js","sourceRoot":"","sources":["../../../src/graphql/queries/composition.queries.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAE7D;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG;;;;;;IAMvC,oBAAoB;CACvB,CAAC"}
|
|
@@ -12,4 +12,5 @@ export { RISK_ANALYSIS_QUERY } from './risk.queries.js';
|
|
|
12
12
|
export { YIELD_PREDICTION_QUERY, createYieldPredictionQuery, type PredictionResponseFormat, } from './prediction.queries.js';
|
|
13
13
|
export { EXPORT_VAULTS_QUERY, EXPORT_TRANSACTIONS_QUERY, EXPORT_PRICE_HISTORY_QUERY, EXPORT_PERFORMANCE_QUERY, } from './export.queries.js';
|
|
14
14
|
export { SEARCH_VAULTS_QUERY, createSearchVaultsQuery, type SearchVaultsResponseFormat, } from './search.queries.js';
|
|
15
|
+
export { GET_VAULT_COMPOSITION_QUERY } from './composition.queries.js';
|
|
15
16
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/graphql/queries/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAGnF,OAAO,EAAE,2BAA2B,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAGnG,OAAO,EACL,wBAAwB,EACxB,2BAA2B,EAC3B,KAAK,uBAAuB,EAC5B,+BAA+B,EAC/B,4BAA4B,GAC7B,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAGxD,OAAO,EACL,sBAAsB,EACtB,0BAA0B,EAC1B,KAAK,wBAAwB,GAC9B,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EACL,mBAAmB,EACnB,yBAAyB,EACzB,0BAA0B,EAC1B,wBAAwB,GACzB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,mBAAmB,EACnB,uBAAuB,EACvB,KAAK,0BAA0B,GAChC,MAAM,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/graphql/queries/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAGnF,OAAO,EAAE,2BAA2B,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAGnG,OAAO,EACL,wBAAwB,EACxB,2BAA2B,EAC3B,KAAK,uBAAuB,EAC5B,+BAA+B,EAC/B,4BAA4B,GAC7B,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAGxD,OAAO,EACL,sBAAsB,EACtB,0BAA0B,EAC1B,KAAK,wBAAwB,GAC9B,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EACL,mBAAmB,EACnB,yBAAyB,EACzB,0BAA0B,EAC1B,wBAAwB,GACzB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,mBAAmB,EACnB,uBAAuB,EACvB,KAAK,0BAA0B,GAChC,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC"}
|
|
@@ -20,4 +20,6 @@ export { YIELD_PREDICTION_QUERY, createYieldPredictionQuery, } from './predictio
|
|
|
20
20
|
export { EXPORT_VAULTS_QUERY, EXPORT_TRANSACTIONS_QUERY, EXPORT_PRICE_HISTORY_QUERY, EXPORT_PERFORMANCE_QUERY, } from './export.queries.js';
|
|
21
21
|
// Search Queries
|
|
22
22
|
export { SEARCH_VAULTS_QUERY, createSearchVaultsQuery, } from './search.queries.js';
|
|
23
|
+
// Composition Queries
|
|
24
|
+
export { GET_VAULT_COMPOSITION_QUERY } from './composition.queries.js';
|
|
23
25
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/graphql/queries/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,gBAAgB;AAChB,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAE5B,sBAAsB;AACtB,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEnF,sBAAsB;AACtB,OAAO,EAAE,2BAA2B,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAEnG,oBAAoB;AACpB,OAAO,EACL,wBAAwB,EACxB,2BAA2B,EAE3B,+BAA+B,EAC/B,4BAA4B,GAC7B,MAAM,wBAAwB,CAAC;AAEhC,eAAe;AACf,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExD,qBAAqB;AACrB,OAAO,EACL,sBAAsB,EACtB,0BAA0B,GAE3B,MAAM,yBAAyB,CAAC;AAEjC,iBAAiB;AACjB,OAAO,EACL,mBAAmB,EACnB,yBAAyB,EACzB,0BAA0B,EAC1B,wBAAwB,GACzB,MAAM,qBAAqB,CAAC;AAE7B,iBAAiB;AACjB,OAAO,EACL,mBAAmB,EACnB,uBAAuB,GAExB,MAAM,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/graphql/queries/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,gBAAgB;AAChB,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAE5B,sBAAsB;AACtB,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEnF,sBAAsB;AACtB,OAAO,EAAE,2BAA2B,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAEnG,oBAAoB;AACpB,OAAO,EACL,wBAAwB,EACxB,2BAA2B,EAE3B,+BAA+B,EAC/B,4BAA4B,GAC7B,MAAM,wBAAwB,CAAC;AAEhC,eAAe;AACf,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExD,qBAAqB;AACrB,OAAO,EACL,sBAAsB,EACtB,0BAA0B,GAE3B,MAAM,yBAAyB,CAAC;AAEjC,iBAAiB;AACjB,OAAO,EACL,mBAAmB,EACnB,yBAAyB,EACzB,0BAA0B,EAC1B,wBAAwB,GACzB,MAAM,qBAAqB,CAAC;AAE7B,iBAAiB;AACjB,OAAO,EACL,mBAAmB,EACnB,uBAAuB,GAExB,MAAM,qBAAqB,CAAC;AAE7B,sBAAsB;AACtB,OAAO,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC"}
|
|
@@ -65,6 +65,23 @@ export declare const GET_USER_PORTFOLIO_QUERY: string;
|
|
|
65
65
|
* ```
|
|
66
66
|
*/
|
|
67
67
|
export declare const SINGLE_VAULT_OPTIMIZATION_QUERY = "\n query SingleVaultOptimization($vaultAddress: Address!, $chainId: Int!) {\n vault: vaultByAddress(address: $vaultAddress, chainId: $chainId) {\n ...VaultFragment\n }\n\n # Get price history for volatility calculation\n priceHistory: transactions(\n where: {\n vault_in: [$vaultAddress],\n type_in: [TotalAssetsUpdated]\n },\n orderBy: timestamp,\n orderDirection: asc,\n first: 1000\n ) {\n items {\n timestamp\n data {\n ... on TotalAssetsUpdated {\n totalAssets\n totalAssetsUsd\n totalSupply\n vault {\n decimals\n asset {\n decimals\n }\n }\n }\n }\n }\n }\n }\n \n fragment VaultFragment on Vault {\n address\n symbol\n decimals\n name\n description\n shortDescription\n maxCapacity\n logoUrl\n averageSettlement\n isVisible\n asset {\n ...AssetInfoFragment\n }\n chain {\n ...ChainInfoFragment\n }\n state {\n state\n totalAssets\n totalAssetsUsd\n totalSupply\n pricePerShare\n pricePerShareUsd\n safeAssetBalance\n liveAPR {\n grossApr\n name\n netApr\n description\n }\n roles {\n owner\n valuationManager\n whitelistManager\n safe\n feeReceiver\n }\n managementFee\n performanceFee\n protocolFee\n isWhitelistActivated\n whitelist\n pendingSettlement {\n assets\n assetsUsd\n shares\n }\n inceptionApr {\n ...APRBreakdownFragment\n }\n pendingSiloBalances {\n assets\n shares\n }\n monthlyApr {\n ...APRBreakdownFragment\n }\n newTotalAssets\n highWaterMark\n lastFeeTime\n safeAssetBalanceUsd\n weeklyApr {\n ...APRBreakdownFragment\n }\n yearlyApr {\n ...APRBreakdownFragment\n }\n }\n curators {\n name\n id\n aboutDescription\n logoUrl\n url\n }\n integrator {\n name\n url\n logoUrl\n aboutDescription\n }\n defiIntegrations {\n name\n description\n link\n logoUrl\n type\n }\n }\n \n fragment AssetInfoFragment on Asset {\n id\n name\n symbol\n decimals\n address\n logoUrl\n description\n isVisible\n priceUsd\n chain {\n id\n name\n nativeToken\n logoUrl\n }\n }\n\n \n fragment ChainInfoFragment on Chain {\n id\n name\n nativeToken\n logoUrl\n wrappedNativeToken {\n address\n decimals\n name\n symbol\n }\n factory\n }\n\n \n fragment APRBreakdownFragment on APRs {\n linearNetApr\n linearNetAprWithoutExtraYields\n airdrops {\n name\n apr\n description\n distributionTimestamp\n endTimestamp\n isEstimation\n logoUrl\n multiplier\n ppsIncrease\n startTimestamp\n }\n incentives {\n name\n apr\n aprDescription\n description\n endTimestamp\n incentiveRate {\n incentiveAmount\n referenceToken {\n id\n }\n referenceTokenAmount\n }\n }\n nativeYields {\n name\n apr\n aprDescription\n description\n endTimestamp\n isEstimation\n logoUrl\n multiplier\n startTimestamp\n }\n }\n\n\n";
|
|
68
|
+
/**
|
|
69
|
+
* GraphQL query for single vault composition data
|
|
70
|
+
*
|
|
71
|
+
* Fetches composition data for a single vault, used in parallel
|
|
72
|
+
* to aggregate portfolio-wide composition metrics.
|
|
73
|
+
*
|
|
74
|
+
* Used by: get_user_portfolio tool (for composition aggregation)
|
|
75
|
+
*
|
|
76
|
+
* Usage:
|
|
77
|
+
* ```typescript
|
|
78
|
+
* const data = await graphqlClient.request<SingleVaultCompositionResponse>(
|
|
79
|
+
* SINGLE_VAULT_COMPOSITION_QUERY,
|
|
80
|
+
* { vaultAddress: '0x...' }
|
|
81
|
+
* );
|
|
82
|
+
* ```
|
|
83
|
+
*/
|
|
84
|
+
export declare const SINGLE_VAULT_COMPOSITION_QUERY = "\n query SingleVaultComposition($vaultAddress: Address!) {\n vaultComposition(vaultAddress: $vaultAddress) {\n ...CompositionFragment\n }\n }\n \n fragment CompositionFragment on CompositionData {\n compositions {\n protocol\n valueInUsd\n repartition\n details {\n protocol\n valueInUsd\n repartition\n }\n }\n tokenCompositions {\n symbol\n name\n contract\n chainKey\n valueInUsd\n repartition\n details {\n symbol\n name\n contract\n chainKey\n valueInUsd\n repartition\n }\n }\n }\n\n";
|
|
68
85
|
/**
|
|
69
86
|
* GraphQL query for portfolio optimization data (DEPRECATED)
|
|
70
87
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"portfolio.queries.d.ts","sourceRoot":"","sources":["../../../src/graphql/queries/portfolio.queries.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"portfolio.queries.d.ts","sourceRoot":"","sources":["../../../src/graphql/queries/portfolio.queries.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;AAqBlE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,2BAA2B,CACzC,cAAc,GAAE,uBAAmC,GAClD,MAAM,CAyBR;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,wBAAwB,QAAsC,CAAC;AAE5E;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,+BAA+B,s+GAmC3C,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,8BAA8B,0oBAO1C,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,4BAA4B,0wHAiDxC,CAAC"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* GraphQL queries for user portfolio operations.
|
|
5
5
|
* Includes user portfolio data and portfolio optimization queries.
|
|
6
6
|
*/
|
|
7
|
-
import { VAULT_FRAGMENT, VAULT_LIST_FRAGMENT, VAULT_SUMMARY_FRAGMENT } from '../fragments/index.js';
|
|
7
|
+
import { VAULT_FRAGMENT, VAULT_LIST_FRAGMENT, VAULT_SUMMARY_FRAGMENT, COMPOSITION_FRAGMENT, } from '../fragments/index.js';
|
|
8
8
|
/**
|
|
9
9
|
* Get fragment and fragment name based on response format for portfolio queries
|
|
10
10
|
*/
|
|
@@ -136,6 +136,30 @@ export const SINGLE_VAULT_OPTIMIZATION_QUERY = `
|
|
|
136
136
|
}
|
|
137
137
|
${VAULT_FRAGMENT}
|
|
138
138
|
`;
|
|
139
|
+
/**
|
|
140
|
+
* GraphQL query for single vault composition data
|
|
141
|
+
*
|
|
142
|
+
* Fetches composition data for a single vault, used in parallel
|
|
143
|
+
* to aggregate portfolio-wide composition metrics.
|
|
144
|
+
*
|
|
145
|
+
* Used by: get_user_portfolio tool (for composition aggregation)
|
|
146
|
+
*
|
|
147
|
+
* Usage:
|
|
148
|
+
* ```typescript
|
|
149
|
+
* const data = await graphqlClient.request<SingleVaultCompositionResponse>(
|
|
150
|
+
* SINGLE_VAULT_COMPOSITION_QUERY,
|
|
151
|
+
* { vaultAddress: '0x...' }
|
|
152
|
+
* );
|
|
153
|
+
* ```
|
|
154
|
+
*/
|
|
155
|
+
export const SINGLE_VAULT_COMPOSITION_QUERY = `
|
|
156
|
+
query SingleVaultComposition($vaultAddress: Address!) {
|
|
157
|
+
vaultComposition(vaultAddress: $vaultAddress) {
|
|
158
|
+
...CompositionFragment
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
${COMPOSITION_FRAGMENT}
|
|
162
|
+
`;
|
|
139
163
|
/**
|
|
140
164
|
* GraphQL query for portfolio optimization data (DEPRECATED)
|
|
141
165
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"portfolio.queries.js","sourceRoot":"","sources":["../../../src/graphql/queries/portfolio.queries.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"portfolio.queries.js","sourceRoot":"","sources":["../../../src/graphql/queries/portfolio.queries.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAO/B;;GAEG;AACH,SAAS,qCAAqC,CAAC,cAAuC;IAIpF,QAAQ,cAAc,EAAE,CAAC;QACvB,KAAK,MAAM;YACT,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,YAAY,EAAE,mBAAmB,EAAE,CAAC;QAC9E,KAAK,SAAS;YACZ,OAAO,EAAE,QAAQ,EAAE,sBAAsB,EAAE,YAAY,EAAE,sBAAsB,EAAE,CAAC;QACpF,KAAK,MAAM;YACT,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,YAAY,EAAE,eAAe,EAAE,CAAC;QACrE;YACE,OAAO,EAAE,QAAQ,EAAE,sBAAsB,EAAE,YAAY,EAAE,sBAAsB,EAAE,CAAC;IACtF,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,UAAU,2BAA2B,CACzC,iBAA0C,SAAS;IAEnD,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,qCAAqC,CAAC,cAAc,CAAC,CAAC;IAEzF,OAAO;;;;;;;;;mBASU,YAAY;;;;;;;;;;;MAWzB,QAAQ;GACX,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,2BAA2B,CAAC,MAAM,CAAC,CAAC;AAE5E;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAkC3C,cAAc;CACjB,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG;;;;;;IAM1C,oBAAoB;CACvB,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAgDxC,cAAc;CACjB,CAAC"}
|
|
@@ -33,5 +33,5 @@
|
|
|
33
33
|
* );
|
|
34
34
|
* ```
|
|
35
35
|
*/
|
|
36
|
-
export declare const RISK_ANALYSIS_QUERY = "\n query RiskAnalysis(\n $vaultAddress: Address!,\n $chainId: Int!,\n $curatorId: String!,\n $where: TransactionFilterInput!,\n $orderBy: TransactionOrderBy!,\n $orderDirection: OrderDirection!\n ) {\n vault: vaultByAddress(address: $vaultAddress, chainId: $chainId) {\n ...VaultFragment\n }\n\n # Get all vaults for concentration risk calculation\n allVaults: vaults(where: { chainId_eq: $chainId, isVisible_eq: true }) {\n items {\n state {\n totalAssetsUsd\n }\n }\n }\n\n # Get curator's other vaults for reputation analysis\n curatorVaults: vaults(where: { chainId_eq: $chainId, curatorIds_contains: $curatorId }) {\n items {\n address\n state {\n totalAssetsUsd\n }\n }\n }\n\n # Get price history for volatility analysis\n priceHistory: transactions(\n where: $where,\n orderBy: $orderBy,\n orderDirection: $orderDirection,\n first: 100\n ) {\n items {\n timestamp\n data {\n ... on TotalAssetsUpdated {\n totalAssets\n totalAssetsUsd\n totalSupply\n }\n }\n }\n }\n }\n \n fragment VaultFragment on Vault {\n address\n symbol\n decimals\n name\n description\n shortDescription\n maxCapacity\n logoUrl\n averageSettlement\n isVisible\n asset {\n ...AssetInfoFragment\n }\n chain {\n ...ChainInfoFragment\n }\n state {\n state\n totalAssets\n totalAssetsUsd\n totalSupply\n pricePerShare\n pricePerShareUsd\n safeAssetBalance\n liveAPR {\n grossApr\n name\n netApr\n description\n }\n roles {\n owner\n valuationManager\n whitelistManager\n safe\n feeReceiver\n }\n managementFee\n performanceFee\n protocolFee\n isWhitelistActivated\n whitelist\n pendingSettlement {\n assets\n assetsUsd\n shares\n }\n inceptionApr {\n ...APRBreakdownFragment\n }\n pendingSiloBalances {\n assets\n shares\n }\n monthlyApr {\n ...APRBreakdownFragment\n }\n newTotalAssets\n highWaterMark\n lastFeeTime\n safeAssetBalanceUsd\n weeklyApr {\n ...APRBreakdownFragment\n }\n yearlyApr {\n ...APRBreakdownFragment\n }\n }\n curators {\n name\n id\n aboutDescription\n logoUrl\n url\n }\n integrator {\n name\n url\n logoUrl\n aboutDescription\n }\n defiIntegrations {\n name\n description\n link\n logoUrl\n type\n }\n }\n \n fragment AssetInfoFragment on Asset {\n id\n name\n symbol\n decimals\n address\n logoUrl\n description\n isVisible\n priceUsd\n chain {\n id\n name\n nativeToken\n logoUrl\n }\n }\n\n \n fragment ChainInfoFragment on Chain {\n id\n name\n nativeToken\n logoUrl\n wrappedNativeToken {\n address\n decimals\n name\n symbol\n }\n factory\n }\n\n \n fragment APRBreakdownFragment on APRs {\n linearNetApr\n linearNetAprWithoutExtraYields\n airdrops {\n name\n apr\n description\n distributionTimestamp\n endTimestamp\n isEstimation\n logoUrl\n multiplier\n ppsIncrease\n startTimestamp\n }\n incentives {\n name\n apr\n aprDescription\n description\n endTimestamp\n incentiveRate {\n incentiveAmount\n referenceToken {\n id\n }\n referenceTokenAmount\n }\n }\n nativeYields {\n name\n apr\n aprDescription\n description\n endTimestamp\n isEstimation\n logoUrl\n multiplier\n startTimestamp\n }\n }\n\n\n";
|
|
36
|
+
export declare const RISK_ANALYSIS_QUERY = "\n query RiskAnalysis(\n $vaultAddress: Address!,\n $chainId: Int!,\n $curatorId: String!,\n $where: TransactionFilterInput!,\n $orderBy: TransactionOrderBy!,\n $orderDirection: OrderDirection!\n ) {\n vault: vaultByAddress(address: $vaultAddress, chainId: $chainId) {\n ...VaultFragment\n }\n\n # Get all vaults for concentration risk calculation\n allVaults: vaults(where: { chainId_eq: $chainId, isVisible_eq: true }) {\n items {\n state {\n totalAssetsUsd\n }\n }\n }\n\n # Get curator's other vaults for reputation analysis\n curatorVaults: vaults(where: { chainId_eq: $chainId, curatorIds_contains: $curatorId }) {\n items {\n address\n state {\n totalAssetsUsd\n }\n }\n }\n\n # Get price history for volatility analysis\n priceHistory: transactions(\n where: $where,\n orderBy: $orderBy,\n orderDirection: $orderDirection,\n first: 100\n ) {\n items {\n timestamp\n data {\n ... on TotalAssetsUpdated {\n totalAssets\n totalAssetsUsd\n totalSupply\n }\n }\n }\n }\n\n # Get composition data for protocol diversification risk\n composition: vaultComposition(vaultAddress: $vaultAddress) {\n ...CompositionFragment\n }\n }\n \n fragment VaultFragment on Vault {\n address\n symbol\n decimals\n name\n description\n shortDescription\n maxCapacity\n logoUrl\n averageSettlement\n isVisible\n asset {\n ...AssetInfoFragment\n }\n chain {\n ...ChainInfoFragment\n }\n state {\n state\n totalAssets\n totalAssetsUsd\n totalSupply\n pricePerShare\n pricePerShareUsd\n safeAssetBalance\n liveAPR {\n grossApr\n name\n netApr\n description\n }\n roles {\n owner\n valuationManager\n whitelistManager\n safe\n feeReceiver\n }\n managementFee\n performanceFee\n protocolFee\n isWhitelistActivated\n whitelist\n pendingSettlement {\n assets\n assetsUsd\n shares\n }\n inceptionApr {\n ...APRBreakdownFragment\n }\n pendingSiloBalances {\n assets\n shares\n }\n monthlyApr {\n ...APRBreakdownFragment\n }\n newTotalAssets\n highWaterMark\n lastFeeTime\n safeAssetBalanceUsd\n weeklyApr {\n ...APRBreakdownFragment\n }\n yearlyApr {\n ...APRBreakdownFragment\n }\n }\n curators {\n name\n id\n aboutDescription\n logoUrl\n url\n }\n integrator {\n name\n url\n logoUrl\n aboutDescription\n }\n defiIntegrations {\n name\n description\n link\n logoUrl\n type\n }\n }\n \n fragment AssetInfoFragment on Asset {\n id\n name\n symbol\n decimals\n address\n logoUrl\n description\n isVisible\n priceUsd\n chain {\n id\n name\n nativeToken\n logoUrl\n }\n }\n\n \n fragment ChainInfoFragment on Chain {\n id\n name\n nativeToken\n logoUrl\n wrappedNativeToken {\n address\n decimals\n name\n symbol\n }\n factory\n }\n\n \n fragment APRBreakdownFragment on APRs {\n linearNetApr\n linearNetAprWithoutExtraYields\n airdrops {\n name\n apr\n description\n distributionTimestamp\n endTimestamp\n isEstimation\n logoUrl\n multiplier\n ppsIncrease\n startTimestamp\n }\n incentives {\n name\n apr\n aprDescription\n description\n endTimestamp\n incentiveRate {\n incentiveAmount\n referenceToken {\n id\n }\n referenceTokenAmount\n }\n }\n nativeYields {\n name\n apr\n aprDescription\n description\n endTimestamp\n isEstimation\n logoUrl\n multiplier\n startTimestamp\n }\n }\n\n\n \n fragment CompositionFragment on CompositionData {\n compositions {\n protocol\n valueInUsd\n repartition\n details {\n protocol\n valueInUsd\n repartition\n }\n }\n tokenCompositions {\n symbol\n name\n contract\n chainKey\n valueInUsd\n repartition\n details {\n symbol\n name\n contract\n chainKey\n valueInUsd\n repartition\n }\n }\n }\n\n";
|
|
37
37
|
//# sourceMappingURL=risk.queries.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"risk.queries.d.ts","sourceRoot":"","sources":["../../../src/graphql/queries/risk.queries.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,eAAO,MAAM,mBAAmB,
|
|
1
|
+
{"version":3,"file":"risk.queries.d.ts","sourceRoot":"","sources":["../../../src/graphql/queries/risk.queries.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,eAAO,MAAM,mBAAmB,8hJA0D/B,CAAC"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* GraphQL queries for vault risk analysis.
|
|
5
5
|
* Includes multi-factor risk scoring with vault, protocol, and market data.
|
|
6
6
|
*/
|
|
7
|
-
import { VAULT_FRAGMENT } from '../fragments/index.js';
|
|
7
|
+
import { VAULT_FRAGMENT, COMPOSITION_FRAGMENT } from '../fragments/index.js';
|
|
8
8
|
/**
|
|
9
9
|
* GraphQL query for vault risk analysis data
|
|
10
10
|
*
|
|
@@ -84,7 +84,13 @@ export const RISK_ANALYSIS_QUERY = `
|
|
|
84
84
|
}
|
|
85
85
|
}
|
|
86
86
|
}
|
|
87
|
+
|
|
88
|
+
# Get composition data for protocol diversification risk
|
|
89
|
+
composition: vaultComposition(vaultAddress: $vaultAddress) {
|
|
90
|
+
...CompositionFragment
|
|
91
|
+
}
|
|
87
92
|
}
|
|
88
93
|
${VAULT_FRAGMENT}
|
|
94
|
+
${COMPOSITION_FRAGMENT}
|
|
89
95
|
`;
|
|
90
96
|
//# sourceMappingURL=risk.queries.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"risk.queries.js","sourceRoot":"","sources":["../../../src/graphql/queries/risk.queries.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"risk.queries.js","sourceRoot":"","sources":["../../../src/graphql/queries/risk.queries.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAE7E;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAwD/B,cAAc;IACd,oBAAoB;CACvB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"financial-analysis.d.ts","sourceRoot":"","sources":["../../src/prompts/financial-analysis.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH,wBAAgB,0BAA0B,IAAI,MAAM,
|
|
1
|
+
{"version":3,"file":"financial-analysis.d.ts","sourceRoot":"","sources":["../../src/prompts/financial-analysis.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH,wBAAgB,0BAA0B,IAAI,MAAM,CAuiBnD"}
|
|
@@ -23,13 +23,14 @@ You are analyzing DeFi vault data from the Lagoon protocol. Use these patterns a
|
|
|
23
23
|
Complete documentation with parameters, examples, and workflows: /docs/tools/README.md
|
|
24
24
|
|
|
25
25
|
### Core Analysis Tools
|
|
26
|
-
- **Risk Assessment**: \`analyze_risk\` → /docs/tools/analyze-risk.md (
|
|
26
|
+
- **Risk Assessment**: \`analyze_risk\` → /docs/tools/analyze-risk.md (14-factor scoring with composition)
|
|
27
|
+
- **Vault Composition**: \`get_vault_composition\` → /docs/tools/get-vault-composition.md (Protocol breakdown with HHI)
|
|
27
28
|
- **Vault Simulation**: \`simulate_vault\` → /docs/tools/simulate-vault.md (Protocol-accurate modeling)
|
|
28
29
|
- **Yield Forecasting**: \`predict_yield\` → /docs/tools/predict-yield.md (ML-based predictions)
|
|
29
|
-
- **Vault Comparison**: \`compare_vaults\` → /docs/tools/compare-vaults.md (Side-by-side rankings)
|
|
30
|
+
- **Vault Comparison**: \`compare_vaults\` → /docs/tools/compare-vaults.md (Side-by-side rankings with composition)
|
|
30
31
|
|
|
31
32
|
### Portfolio Management
|
|
32
|
-
- **User Portfolio**: \`user_portfolio\` → /docs/tools/user-portfolio.md (Multi-chain aggregation)
|
|
33
|
+
- **User Portfolio**: \`user_portfolio\` → /docs/tools/user-portfolio.md (Multi-chain aggregation with compositionSummary)
|
|
33
34
|
|
|
34
35
|
### Discovery & Historical Data
|
|
35
36
|
- **Search Vaults**: \`search_vaults\` → /docs/tools/search-vaults.md (20+ filters)
|
|
@@ -72,7 +73,14 @@ When analyzing a user's portfolio:
|
|
|
72
73
|
- Chain diversification: Multi-chain = better risk profile
|
|
73
74
|
- Curator analysis: Review historical performance and track record
|
|
74
75
|
|
|
75
|
-
4. **
|
|
76
|
+
4. **Protocol Composition Analysis**
|
|
77
|
+
- Use \`compositionSummary\` from \`user_portfolio\` for portfolio-wide protocol exposure
|
|
78
|
+
- Calculate portfolio HHI: <0.15 = High diversification, 0.15-0.25 = Medium, >0.25 = Low
|
|
79
|
+
- Check for accidental concentration (same protocol in 3+ vaults)
|
|
80
|
+
- Flag if single protocol >40% of total portfolio value
|
|
81
|
+
- Identify hidden correlations across vaults
|
|
82
|
+
|
|
83
|
+
5. **Recommendations**
|
|
76
84
|
- Suggest rebalancing if concentration >30%
|
|
77
85
|
- Highlight underperforming vaults for review
|
|
78
86
|
- Identify high-performing vaults for increased allocation
|
|
@@ -89,6 +97,12 @@ Concentration Risk: MEDIUM
|
|
|
89
97
|
- USDC Vault A: 25% of portfolio
|
|
90
98
|
- WETH Vault B: 35% of portfolio (⚠️ HIGH - consider rebalancing)
|
|
91
99
|
|
|
100
|
+
Protocol Composition:
|
|
101
|
+
- Portfolio HHI: 0.18 (Medium diversification)
|
|
102
|
+
- Top Protocol: Aave (42% exposure across 3 vaults)
|
|
103
|
+
- ⚠️ Accidental Concentration: Aave appears in 3 vaults
|
|
104
|
+
- Consider: Single protocol failure affects 42% of portfolio
|
|
105
|
+
|
|
92
106
|
Top Performers:
|
|
93
107
|
1. WETH Vault B: +15.3% (30d) - Strong Uniswap V3 strategy
|
|
94
108
|
2. USDC Vault A: +9.1% (30d) - Consistent Aave lending returns
|
|
@@ -97,6 +111,8 @@ Recommendations:
|
|
|
97
111
|
- Consider reducing WETH Vault B to <30% allocation
|
|
98
112
|
- Diversify into additional USDC or DAI vaults
|
|
99
113
|
- Monitor WETH Vault B capacity (currently 78% utilized)
|
|
114
|
+
- Reduce Aave exposure by choosing vaults with different underlying protocols
|
|
115
|
+
- Consider Compound or Morpho vaults to improve protocol diversification
|
|
100
116
|
\`\`\`
|
|
101
117
|
|
|
102
118
|
---
|
|
@@ -234,7 +250,70 @@ Recommendation: Start with option 1 or 2 based on risk tolerance
|
|
|
234
250
|
|
|
235
251
|
---
|
|
236
252
|
|
|
237
|
-
### 4.
|
|
253
|
+
### 4. Protocol Composition Analysis Pattern
|
|
254
|
+
|
|
255
|
+
When analyzing vault or portfolio composition:
|
|
256
|
+
|
|
257
|
+
**Tool Integration:**
|
|
258
|
+
- Use \`get_vault_composition\` for individual vault protocol breakdown
|
|
259
|
+
- Use \`user_portfolio\` with \`compositionSummary\` for portfolio-wide analysis
|
|
260
|
+
- Use \`compare_vaults\` for composition comparison between vaults
|
|
261
|
+
|
|
262
|
+
**Analysis Steps:**
|
|
263
|
+
|
|
264
|
+
1. **Vault-Level Composition**
|
|
265
|
+
- Fetch composition data showing underlying protocol allocations
|
|
266
|
+
- Calculate vault HHI (Herfindahl-Hirschman Index) for concentration
|
|
267
|
+
- Identify top protocols and their percentage allocation
|
|
268
|
+
- Assess diversification level: High (<0.15), Medium (0.15-0.25), Low (>0.25)
|
|
269
|
+
|
|
270
|
+
2. **Portfolio-Level Aggregation**
|
|
271
|
+
- Aggregate protocol exposure across all user vaults
|
|
272
|
+
- Weight protocol exposure by position size (USD value)
|
|
273
|
+
- Calculate portfolio-wide HHI for true diversification
|
|
274
|
+
- Detect accidental concentration (same protocol in 3+ vaults)
|
|
275
|
+
|
|
276
|
+
3. **Risk Implications**
|
|
277
|
+
- Single protocol >40% = HIGH concentration risk
|
|
278
|
+
- Same protocol in 3+ vaults = Hidden correlation risk
|
|
279
|
+
- Portfolio HHI >0.25 = Low diversification, vulnerable to protocol failure
|
|
280
|
+
- Consider smart contract risk multiplied across protocol exposure
|
|
281
|
+
|
|
282
|
+
4. **Diversification Recommendations**
|
|
283
|
+
- Suggest vaults with complementary compositions
|
|
284
|
+
- Identify protocol overlaps to reduce
|
|
285
|
+
- Recommend alternative protocols for better distribution
|
|
286
|
+
|
|
287
|
+
**Example Output:**
|
|
288
|
+
\`\`\`
|
|
289
|
+
Vault Composition Analysis: USDC Strategy A
|
|
290
|
+
|
|
291
|
+
Protocol Breakdown:
|
|
292
|
+
| Protocol | Allocation | Value |
|
|
293
|
+
|----------|------------|-------|
|
|
294
|
+
| Aave V3 | 45% | $2.3M |
|
|
295
|
+
| Compound V3 | 30% | $1.5M |
|
|
296
|
+
| Morpho | 25% | $1.3M |
|
|
297
|
+
|
|
298
|
+
Diversification Metrics:
|
|
299
|
+
- Vault HHI: 0.34 (Moderate concentration)
|
|
300
|
+
- Diversification Level: Medium
|
|
301
|
+
- Top Protocol: Aave V3 (45%)
|
|
302
|
+
- Protocol Count: 3
|
|
303
|
+
|
|
304
|
+
Assessment:
|
|
305
|
+
- ✅ Multiple protocols provide some protection
|
|
306
|
+
- ⚠️ Aave exposure at 45% is moderately high
|
|
307
|
+
- Consider: If Aave experiences issues, 45% of vault could be affected
|
|
308
|
+
|
|
309
|
+
Portfolio Impact (if user holds this vault):
|
|
310
|
+
- This vault would add 45% weighted Aave exposure
|
|
311
|
+
- Check existing Aave exposure in other vaults before investing
|
|
312
|
+
\`\`\`
|
|
313
|
+
|
|
314
|
+
---
|
|
315
|
+
|
|
316
|
+
### 5. Vault Simulation Pattern
|
|
238
317
|
|
|
239
318
|
When modeling deposit/withdrawal scenarios:
|
|
240
319
|
|
|
@@ -420,9 +499,10 @@ Use this structure for comprehensive analysis reports:
|
|
|
420
499
|
|
|
421
500
|
### Tool Selection
|
|
422
501
|
- **Single vault (1-5)**: Use \`get_vault_data\` with caching
|
|
502
|
+
- **Vault composition**: Use \`get_vault_composition\` for protocol breakdown and HHI
|
|
423
503
|
- **Discovery (20+)**: Use \`search_vaults\` with filters
|
|
424
|
-
- **Comparison (2-10)**: Use \`compare_vaults\` for rankings
|
|
425
|
-
- **Portfolio**: Use \`user_portfolio\` for multi-chain aggregation
|
|
504
|
+
- **Comparison (2-10)**: Use \`compare_vaults\` for rankings with composition metrics
|
|
505
|
+
- **Portfolio**: Use \`user_portfolio\` for multi-chain aggregation with \`compositionSummary\`
|
|
426
506
|
- **Custom queries**: Use \`query_graphql\` for power users
|
|
427
507
|
|
|
428
508
|
📖 Tool selection guide: /docs/tools/README.md
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"financial-analysis.js","sourceRoot":"","sources":["../../src/prompts/financial-analysis.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,eAAe,EACf,wBAAwB,GACzB,MAAM,yBAAyB,CAAC;AAEjC,MAAM,UAAU,0BAA0B;IACxC,OAAO;;EAEP,oBAAoB;;EAEpB,mBAAmB;;EAEnB,eAAe
|
|
1
|
+
{"version":3,"file":"financial-analysis.js","sourceRoot":"","sources":["../../src/prompts/financial-analysis.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,eAAe,EACf,wBAAwB,GACzB,MAAM,yBAAyB,CAAC;AAEjC,MAAM,UAAU,0BAA0B;IACxC,OAAO;;EAEP,oBAAoB;;EAEpB,mBAAmB;;EAEnB,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAghBf,wBAAwB;;;;;;;;;;;;;;;CAezB,CAAC;AACF,CAAC"}
|
package/dist/server.js
CHANGED
|
@@ -34,7 +34,7 @@ import { getPortfolioOptimizationPrompt } from './prompts/portfolio-optimization
|
|
|
34
34
|
export function createServer() {
|
|
35
35
|
const server = new McpServer({
|
|
36
36
|
name: 'lagoon-mcp',
|
|
37
|
-
version: '0.2.
|
|
37
|
+
version: '0.2.14',
|
|
38
38
|
});
|
|
39
39
|
// ==========================================
|
|
40
40
|
// Dependency Injection Container
|
|
@@ -37,6 +37,18 @@ export interface RiskAnalysisData {
|
|
|
37
37
|
};
|
|
38
38
|
}>;
|
|
39
39
|
};
|
|
40
|
+
composition: {
|
|
41
|
+
compositions: Array<{
|
|
42
|
+
protocol: string;
|
|
43
|
+
repartition: number;
|
|
44
|
+
valueInUsd: number;
|
|
45
|
+
}>;
|
|
46
|
+
tokenCompositions: Array<{
|
|
47
|
+
symbol: string;
|
|
48
|
+
repartition: number;
|
|
49
|
+
valueInUsd: number;
|
|
50
|
+
}>;
|
|
51
|
+
} | null;
|
|
40
52
|
}
|
|
41
53
|
/**
|
|
42
54
|
* 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;
|
|
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;IACF,WAAW,EAAE;QACX,YAAY,EAAE,KAAK,CAAC;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACnF,iBAAiB,EAAE,KAAK,CAAC;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACvF,GAAG,IAAI,CAAC;CACV;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;IA8HzD;;;;;;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"}
|