@lagoon-protocol/lagoon-mcp 0.5.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.
- package/README.md +72 -54
- package/dist/cache/index.d.ts +4 -1
- package/dist/cache/index.d.ts.map +1 -1
- package/dist/cache/index.js +4 -1
- package/dist/cache/index.js.map +1 -1
- package/dist/config.d.ts +1 -1
- package/dist/config.js +1 -1
- package/dist/core/container.js +1 -1
- package/dist/graphql/fragments/apr-breakdown.fragment.d.ts +4 -1
- package/dist/graphql/fragments/apr-breakdown.fragment.d.ts.map +1 -1
- package/dist/graphql/fragments/apr-breakdown.fragment.js +3 -0
- package/dist/graphql/fragments/apr-breakdown.fragment.js.map +1 -1
- package/dist/graphql/fragments/composition.fragment.d.ts +23 -134
- package/dist/graphql/fragments/composition.fragment.d.ts.map +1 -1
- package/dist/graphql/fragments/composition.fragment.js +9 -7
- package/dist/graphql/fragments/composition.fragment.js.map +1 -1
- package/dist/graphql/fragments/index.d.ts +1 -1
- package/dist/graphql/fragments/index.d.ts.map +1 -1
- package/dist/graphql/fragments/index.js +5 -4
- package/dist/graphql/fragments/index.js.map +1 -1
- package/dist/graphql/fragments/transaction-base.fragment.d.ts +1 -1
- package/dist/graphql/fragments/transaction-base.fragment.d.ts.map +1 -1
- package/dist/graphql/fragments/transaction-base.fragment.js +0 -1
- package/dist/graphql/fragments/transaction-base.fragment.js.map +1 -1
- package/dist/graphql/fragments/vault.fragment.d.ts +29 -1
- package/dist/graphql/fragments/vault.fragment.d.ts.map +1 -1
- package/dist/graphql/fragments/vault.fragment.js +29 -0
- package/dist/graphql/fragments/vault.fragment.js.map +1 -1
- package/dist/graphql/queries/composition.queries.d.ts +10 -28
- package/dist/graphql/queries/composition.queries.d.ts.map +1 -1
- package/dist/graphql/queries/composition.queries.js +17 -28
- package/dist/graphql/queries/composition.queries.js.map +1 -1
- package/dist/graphql/queries/discovery.queries.d.ts +50 -0
- package/dist/graphql/queries/discovery.queries.d.ts.map +1 -0
- package/dist/graphql/queries/discovery.queries.js +188 -0
- package/dist/graphql/queries/discovery.queries.js.map +1 -0
- package/dist/graphql/queries/export.queries.d.ts +5 -7
- package/dist/graphql/queries/export.queries.d.ts.map +1 -1
- package/dist/graphql/queries/export.queries.js +22 -28
- package/dist/graphql/queries/export.queries.js.map +1 -1
- package/dist/graphql/queries/index.d.ts +4 -3
- package/dist/graphql/queries/index.d.ts.map +1 -1
- package/dist/graphql/queries/index.js +5 -3
- package/dist/graphql/queries/index.js.map +1 -1
- package/dist/graphql/queries/performance.queries.d.ts +6 -4
- package/dist/graphql/queries/performance.queries.d.ts.map +1 -1
- package/dist/graphql/queries/performance.queries.js +5 -11
- package/dist/graphql/queries/performance.queries.js.map +1 -1
- package/dist/graphql/queries/portfolio.queries.d.ts +6 -12
- package/dist/graphql/queries/portfolio.queries.d.ts.map +1 -1
- package/dist/graphql/queries/portfolio.queries.js +21 -88
- package/dist/graphql/queries/portfolio.queries.js.map +1 -1
- package/dist/graphql/queries/prediction.queries.d.ts +13 -15
- package/dist/graphql/queries/prediction.queries.d.ts.map +1 -1
- package/dist/graphql/queries/prediction.queries.js +12 -31
- package/dist/graphql/queries/prediction.queries.js.map +1 -1
- package/dist/graphql/queries/risk.queries.d.ts +3 -3
- package/dist/graphql/queries/risk.queries.d.ts.map +1 -1
- package/dist/graphql/queries/risk.queries.js +7 -22
- package/dist/graphql/queries/risk.queries.js.map +1 -1
- package/dist/graphql/queries/search.queries.d.ts.map +1 -1
- package/dist/graphql/queries/search.queries.js +6 -2
- package/dist/graphql/queries/search.queries.js.map +1 -1
- package/dist/graphql/queries/transaction.queries.d.ts +6 -26
- package/dist/graphql/queries/transaction.queries.d.ts.map +1 -1
- package/dist/graphql/queries/transaction.queries.js +227 -59
- package/dist/graphql/queries/transaction.queries.js.map +1 -1
- package/dist/graphql/queries/vault.queries.d.ts +21 -3
- package/dist/graphql/queries/vault.queries.d.ts.map +1 -1
- package/dist/graphql/queries/vault.queries.js +38 -0
- package/dist/graphql/queries/vault.queries.js.map +1 -1
- package/dist/index.js +0 -0
- package/dist/services/analytics/risk.service.d.ts +52 -33
- package/dist/services/analytics/risk.service.d.ts.map +1 -1
- package/dist/services/analytics/risk.service.js +165 -155
- package/dist/services/analytics/risk.service.js.map +1 -1
- package/dist/tools/compare-vaults.d.ts.map +1 -1
- package/dist/tools/compare-vaults.js +50 -77
- package/dist/tools/compare-vaults.js.map +1 -1
- package/dist/tools/export-data.d.ts.map +1 -1
- package/dist/tools/export-data.js +10 -16
- package/dist/tools/export-data.js.map +1 -1
- package/dist/tools/get-asset.d.ts +17 -0
- package/dist/tools/get-asset.d.ts.map +1 -0
- package/dist/tools/get-asset.js +44 -0
- package/dist/tools/get-asset.js.map +1 -0
- package/dist/tools/get-curator.d.ts +13 -0
- package/dist/tools/get-curator.d.ts.map +1 -0
- package/dist/tools/get-curator.js +81 -0
- package/dist/tools/get-curator.js.map +1 -0
- package/dist/tools/get-global-tvl.d.ts +20 -0
- package/dist/tools/get-global-tvl.d.ts.map +1 -0
- package/dist/tools/get-global-tvl.js +38 -0
- package/dist/tools/get-global-tvl.js.map +1 -0
- package/dist/tools/get-historical-state.d.ts +22 -0
- package/dist/tools/get-historical-state.d.ts.map +1 -0
- package/dist/tools/get-historical-state.js +65 -0
- package/dist/tools/get-historical-state.js.map +1 -0
- package/dist/tools/get-indexing-status.d.ts +20 -0
- package/dist/tools/get-indexing-status.d.ts.map +1 -0
- package/dist/tools/get-indexing-status.js +38 -0
- package/dist/tools/get-indexing-status.js.map +1 -0
- package/dist/tools/get-price-history.d.ts.map +1 -1
- package/dist/tools/get-price-history.js +55 -63
- package/dist/tools/get-price-history.js.map +1 -1
- package/dist/tools/get-transactions.d.ts.map +1 -1
- package/dist/tools/get-transactions.js +3 -1
- package/dist/tools/get-transactions.js.map +1 -1
- package/dist/tools/list-chains.d.ts +16 -0
- package/dist/tools/list-chains.d.ts.map +1 -0
- package/dist/tools/list-chains.js +46 -0
- package/dist/tools/list-chains.js.map +1 -0
- package/dist/tools/list-curators.d.ts +18 -0
- package/dist/tools/list-curators.d.ts.map +1 -0
- package/dist/tools/list-curators.js +49 -0
- package/dist/tools/list-curators.js.map +1 -0
- package/dist/tools/optimize-portfolio.d.ts.map +1 -1
- package/dist/tools/optimize-portfolio.js +6 -17
- package/dist/tools/optimize-portfolio.js.map +1 -1
- package/dist/tools/predict-yield.d.ts.map +1 -1
- package/dist/tools/predict-yield.js +109 -11
- package/dist/tools/predict-yield.js.map +1 -1
- package/dist/tools/registry.d.ts.map +1 -1
- package/dist/tools/registry.js +83 -11
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/search-vaults.d.ts.map +1 -1
- package/dist/tools/search-vaults.js +9 -2
- package/dist/tools/search-vaults.js.map +1 -1
- package/dist/tools/simulate-vault.d.ts +1 -1
- package/dist/tools/user-portfolio.d.ts.map +1 -1
- package/dist/tools/user-portfolio.js +30 -51
- package/dist/tools/user-portfolio.js.map +1 -1
- package/dist/tools/vault-composition.d.ts +18 -15
- package/dist/tools/vault-composition.d.ts.map +1 -1
- package/dist/tools/vault-composition.js +71 -155
- package/dist/tools/vault-composition.js.map +1 -1
- package/dist/tools/vault-performance.d.ts.map +1 -1
- package/dist/tools/vault-performance.js +7 -19
- package/dist/tools/vault-performance.js.map +1 -1
- package/dist/types/generated.d.ts +1191 -21
- package/dist/types/generated.d.ts.map +1 -1
- package/dist/utils/comparison-metrics.d.ts +13 -1
- package/dist/utils/comparison-metrics.d.ts.map +1 -1
- package/dist/utils/comparison-metrics.js +29 -4
- package/dist/utils/comparison-metrics.js.map +1 -1
- package/dist/utils/composition-metrics.d.ts +42 -0
- package/dist/utils/composition-metrics.d.ts.map +1 -0
- package/dist/utils/composition-metrics.js +50 -0
- package/dist/utils/composition-metrics.js.map +1 -0
- package/dist/utils/csv-generator.d.ts +4 -1
- package/dist/utils/csv-generator.d.ts.map +1 -1
- package/dist/utils/csv-generator.js +8 -4
- package/dist/utils/csv-generator.js.map +1 -1
- package/dist/utils/fee-formatting.d.ts +41 -0
- package/dist/utils/fee-formatting.d.ts.map +1 -0
- package/dist/utils/fee-formatting.js +57 -0
- package/dist/utils/fee-formatting.js.map +1 -0
- package/dist/utils/operational-signals.d.ts +55 -0
- package/dist/utils/operational-signals.d.ts.map +1 -0
- package/dist/utils/operational-signals.js +105 -0
- package/dist/utils/operational-signals.js.map +1 -0
- package/dist/utils/tool-error-handler.d.ts.map +1 -1
- package/dist/utils/tool-error-handler.js +8 -6
- package/dist/utils/tool-error-handler.js.map +1 -1
- package/dist/utils/validators.d.ts +112 -3
- package/dist/utils/validators.d.ts.map +1 -1
- package/dist/utils/validators.js +108 -4
- package/dist/utils/validators.js.map +1 -1
- package/dist/utils/yield-prediction.d.ts +3 -0
- package/dist/utils/yield-prediction.d.ts.map +1 -1
- package/dist/utils/yield-prediction.js +13 -1
- package/dist/utils/yield-prediction.js.map +1 -1
- package/package.json +2 -2
- package/dist/graphql/fragments.d.ts +0 -183
- package/dist/graphql/fragments.d.ts.map +0 -1
- package/dist/graphql/fragments.js +0 -297
- package/dist/graphql/fragments.js.map +0 -1
- package/dist/graphql/queries/period-summaries.d.ts +0 -15
- package/dist/graphql/queries/period-summaries.d.ts.map +0 -1
- package/dist/graphql/queries/period-summaries.js +0 -24
- package/dist/graphql/queries/period-summaries.js.map +0 -1
- package/dist/services/analytics/protocol-overview.service.d.ts +0 -61
- package/dist/services/analytics/protocol-overview.service.d.ts.map +0 -1
- package/dist/services/analytics/protocol-overview.service.js +0 -182
- package/dist/services/analytics/protocol-overview.service.js.map +0 -1
- package/dist/tools/index.d.ts +0 -26
- package/dist/tools/index.d.ts.map +0 -1
- package/dist/tools/index.js +0 -32
- package/dist/tools/index.js.map +0 -1
|
@@ -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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* get_indexing_status Tool
|
|
3
|
+
*
|
|
4
|
+
* Returns the last indexed block per chain. Lets a downstream analysis
|
|
5
|
+
* detect stale data BEFORE reporting wrong APR/TVL.
|
|
6
|
+
*
|
|
7
|
+
* Use cases:
|
|
8
|
+
* - Health check before running predict_yield / analyze_risk
|
|
9
|
+
* - Diagnose "why does TVL look off" — chain may be lagging
|
|
10
|
+
*
|
|
11
|
+
* Cache: cacheTTL.indexingStatus (60s — indexing state changes block-by-block).
|
|
12
|
+
*
|
|
13
|
+
* Cache-tag note: indexer state is global, not per-vault. Intentionally
|
|
14
|
+
* exempted from CacheTag.VAULT.
|
|
15
|
+
*/
|
|
16
|
+
import { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
|
|
17
|
+
import { GetIndexingStatusInput } from '../utils/validators.js';
|
|
18
|
+
import { ServiceContainer } from '../core/container.js';
|
|
19
|
+
export declare function createExecuteGetIndexingStatus(container: ServiceContainer): (input: GetIndexingStatusInput) => Promise<CallToolResult>;
|
|
20
|
+
//# sourceMappingURL=get-indexing-status.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-indexing-status.d.ts","sourceRoot":"","sources":["../../src/tools/get-indexing-status.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAIhE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAiBxD,wBAAgB,8BAA8B,CAC5C,SAAS,EAAE,gBAAgB,GAC1B,CAAC,KAAK,EAAE,sBAAsB,KAAK,OAAO,CAAC,cAAc,CAAC,CAwB5D"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* get_indexing_status Tool
|
|
3
|
+
*
|
|
4
|
+
* Returns the last indexed block per chain. Lets a downstream analysis
|
|
5
|
+
* detect stale data BEFORE reporting wrong APR/TVL.
|
|
6
|
+
*
|
|
7
|
+
* Use cases:
|
|
8
|
+
* - Health check before running predict_yield / analyze_risk
|
|
9
|
+
* - Diagnose "why does TVL look off" — chain may be lagging
|
|
10
|
+
*
|
|
11
|
+
* Cache: cacheTTL.indexingStatus (60s — indexing state changes block-by-block).
|
|
12
|
+
*
|
|
13
|
+
* Cache-tag note: indexer state is global, not per-vault. Intentionally
|
|
14
|
+
* exempted from CacheTag.VAULT.
|
|
15
|
+
*/
|
|
16
|
+
import { getToolDisclaimer } from '../utils/disclaimers.js';
|
|
17
|
+
import { GET_INDEXING_STATUS_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 createExecuteGetIndexingStatus(container) {
|
|
21
|
+
const executor = executeToolWithCache({
|
|
22
|
+
container,
|
|
23
|
+
cacheKey: (input) => `indexing:${input.chainIds ? [...input.chainIds].sort((a, b) => a - b).join(',') : 'all'}`,
|
|
24
|
+
cacheTTL: cacheTTL.indexingStatus,
|
|
25
|
+
query: GET_INDEXING_STATUS_QUERY,
|
|
26
|
+
variables: (input) => ({ chainIds: input.chainIds ?? null }),
|
|
27
|
+
transformResult: (data) => ({ lastIndexedBlocks: data._meta.lastIndexedBlocks }),
|
|
28
|
+
toolName: 'get_indexing_status',
|
|
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_indexing_status');
|
|
34
|
+
}
|
|
35
|
+
return result;
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=get-indexing-status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-indexing-status.js","sourceRoot":"","sources":["../../src/tools/get-indexing-status.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAE3E,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAgB7C,MAAM,UAAU,8BAA8B,CAC5C,SAA2B;IAE3B,MAAM,QAAQ,GAAG,oBAAoB,CAKnC;QACA,SAAS;QACT,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAClB,YAAY,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;QAC5F,QAAQ,EAAE,QAAQ,CAAC,cAAc;QACjC,KAAK,EAAE,yBAAyB;QAChC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,IAAI,EAAE,CAAC;QAC5D,eAAe,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,iBAAiB,EAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAChF,QAAQ,EAAE,qBAAqB;KAChC,CAAC,CAAC;IAEH,OAAO,KAAK,EAAE,KAA6B,EAA2B,EAAE;QACtE,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,qBAAqB,CAAC,CAAC;QAC7F,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-price-history.d.ts","sourceRoot":"","sources":["../../src/tools/get-price-history.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAI3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"get-price-history.d.ts","sourceRoot":"","sources":["../../src/tools/get-price-history.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAI3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAkPxD;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAC1C,SAAS,EAAE,gBAAgB,GAC1B,CAAC,KAAK,EAAE,iBAAiB,KAAK,OAAO,CAAC,cAAc,CAAC,CAmEvD"}
|
|
@@ -32,61 +32,56 @@ const TIME_RANGES = {
|
|
|
32
32
|
all: 0, // No time limit
|
|
33
33
|
};
|
|
34
34
|
/**
|
|
35
|
-
*
|
|
35
|
+
* Aggregate price-per-share and TVL time series into daily OHLCV buckets.
|
|
36
|
+
* Volume is the average TVL for the day, joined to PPS points by timestamp.
|
|
36
37
|
*/
|
|
37
|
-
function
|
|
38
|
-
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Aggregate transactions into OHLCV time buckets
|
|
42
|
-
* Groups data by day for cleaner visualization
|
|
43
|
-
*/
|
|
44
|
-
function aggregateOHLCV(transactions) {
|
|
45
|
-
if (transactions.length === 0)
|
|
38
|
+
function aggregateOHLCV(pricePoints, tvlPoints) {
|
|
39
|
+
if (pricePoints.length === 0)
|
|
46
40
|
return [];
|
|
47
|
-
|
|
48
|
-
const
|
|
49
|
-
for (const
|
|
50
|
-
if (
|
|
41
|
+
const dayKey = (timestamp) => Math.floor(timestamp / 86400) * 86400;
|
|
42
|
+
const buckets = new Map();
|
|
43
|
+
for (const point of pricePoints) {
|
|
44
|
+
if (point.y === null || point.y <= 0)
|
|
51
45
|
continue;
|
|
52
|
-
const
|
|
53
|
-
|
|
54
|
-
if (!
|
|
55
|
-
|
|
46
|
+
const day = dayKey(point.x);
|
|
47
|
+
let bucket = buckets.get(day);
|
|
48
|
+
if (!bucket) {
|
|
49
|
+
bucket = { prices: [], tvls: [] };
|
|
50
|
+
buckets.set(day, bucket);
|
|
56
51
|
}
|
|
57
|
-
|
|
52
|
+
bucket.prices.push(point.y);
|
|
58
53
|
}
|
|
59
|
-
//
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
// Calculate price per share from totalAssetsUsd / totalSupply
|
|
66
|
-
const totalSupply = parseFloat(tx.data.totalSupply) / 1e18; // Convert from wei to decimal
|
|
67
|
-
return totalSupply > 0 ? tx.data.totalAssetsUsd / totalSupply : 0;
|
|
68
|
-
});
|
|
69
|
-
if (prices.length === 0)
|
|
54
|
+
// Drop per-day numerical artifacts: backend occasionally emits values many
|
|
55
|
+
// orders of magnitude smaller than the day's real PPS (e.g. 2.7e-9 alongside
|
|
56
|
+
// values around 2500). Filtering against 0.01 % of the day's max removes
|
|
57
|
+
// those without affecting any legitimate intraday spread.
|
|
58
|
+
for (const bucket of buckets.values()) {
|
|
59
|
+
if (bucket.prices.length < 2)
|
|
70
60
|
continue;
|
|
71
|
-
const
|
|
72
|
-
|
|
73
|
-
|
|
61
|
+
const max = Math.max(...bucket.prices);
|
|
62
|
+
const floor = max * 1e-4;
|
|
63
|
+
bucket.prices = bucket.prices.filter((p) => p >= floor);
|
|
64
|
+
}
|
|
65
|
+
for (const point of tvlPoints) {
|
|
66
|
+
if (point.y === null)
|
|
67
|
+
continue;
|
|
68
|
+
const day = dayKey(point.x);
|
|
69
|
+
const bucket = buckets.get(day);
|
|
70
|
+
// Only attach TVL when there's also a PPS point on the same day; this keeps
|
|
71
|
+
// OHLCV rows aligned to the price series.
|
|
72
|
+
if (bucket)
|
|
73
|
+
bucket.tvls.push(point.y);
|
|
74
|
+
}
|
|
75
|
+
const ohlcv = [];
|
|
76
|
+
for (const [day, { prices, tvls }] of Array.from(buckets.entries()).sort((a, b) => a[0] - b[0])) {
|
|
74
77
|
const open = prices[0];
|
|
75
78
|
const close = prices[prices.length - 1];
|
|
76
79
|
const high = Math.max(...prices);
|
|
77
80
|
const low = Math.min(...prices);
|
|
78
|
-
const volume =
|
|
79
|
-
|
|
80
|
-
timestamp: dayTimestamp,
|
|
81
|
-
open,
|
|
82
|
-
high,
|
|
83
|
-
low,
|
|
84
|
-
close,
|
|
85
|
-
volume,
|
|
86
|
-
blockNumber: txs[txs.length - 1].blockNumber,
|
|
87
|
-
});
|
|
81
|
+
const volume = tvls.length > 0 ? tvls.reduce((sum, v) => sum + v, 0) / tvls.length : 0;
|
|
82
|
+
ohlcv.push({ timestamp: day, open, high, low, close, volume });
|
|
88
83
|
}
|
|
89
|
-
return
|
|
84
|
+
return ohlcv;
|
|
90
85
|
}
|
|
91
86
|
/**
|
|
92
87
|
* Calculate price statistics from OHLCV data
|
|
@@ -133,14 +128,12 @@ function calculateStatistics(ohlcvData) {
|
|
|
133
128
|
* Transform raw GraphQL response into markdown-formatted output
|
|
134
129
|
* Uses closure to capture input values and timestamp filter
|
|
135
130
|
*/
|
|
136
|
-
function createTransformPriceHistoryData(input
|
|
131
|
+
function createTransformPriceHistoryData(input) {
|
|
137
132
|
return (data) => {
|
|
138
|
-
|
|
139
|
-
const
|
|
140
|
-
?
|
|
141
|
-
:
|
|
142
|
-
// Aggregate into OHLCV time-series
|
|
143
|
-
const ohlcvData = aggregateOHLCV(filteredItems);
|
|
133
|
+
const stateHistory = data.vault?.stateHistory;
|
|
134
|
+
const ohlcvData = stateHistory
|
|
135
|
+
? aggregateOHLCV(stateHistory.pricePerShareUsd, stateHistory.totalAssetsUsd)
|
|
136
|
+
: [];
|
|
144
137
|
// Calculate statistics
|
|
145
138
|
const statistics = calculateStatistics(ohlcvData);
|
|
146
139
|
// Format output as markdown based on responseFormat
|
|
@@ -172,7 +165,6 @@ function createTransformPriceHistoryData(input, timestampGte) {
|
|
|
172
165
|
.join('\n') +
|
|
173
166
|
`\n\n`;
|
|
174
167
|
}
|
|
175
|
-
markdown += `**Data Completeness**: ${data.transactions.pageInfo.hasNextPage ? 'More data available (truncated at 2000 points)' : 'Complete'}\n`;
|
|
176
168
|
return { markdown };
|
|
177
169
|
};
|
|
178
170
|
}
|
|
@@ -187,16 +179,12 @@ export function createExecuteGetPriceHistory(container) {
|
|
|
187
179
|
// Calculate timestamp threshold (0 for 'all')
|
|
188
180
|
const now = Math.floor(Date.now() / 1000);
|
|
189
181
|
const timeRangeSeconds = TIME_RANGES[input.timeRange];
|
|
190
|
-
const
|
|
191
|
-
// Build query variables
|
|
182
|
+
const startTimestamp = timeRangeSeconds > 0 ? now - timeRangeSeconds : 0;
|
|
183
|
+
// Build query variables. `options: null` means "full history since vault creation".
|
|
192
184
|
const variables = {
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
},
|
|
197
|
-
orderBy: 'timestamp',
|
|
198
|
-
orderDirection: 'asc',
|
|
199
|
-
first: 1000, // GraphQL API limit: 1-1000
|
|
185
|
+
vaultAddress: input.vaultAddress,
|
|
186
|
+
chainId: input.chainId,
|
|
187
|
+
options: startTimestamp > 0 ? { startTimestamp } : null,
|
|
200
188
|
};
|
|
201
189
|
const executor = executeToolWithCache({
|
|
202
190
|
container,
|
|
@@ -205,7 +193,11 @@ export function createExecuteGetPriceHistory(container) {
|
|
|
205
193
|
query: PRICE_HISTORY_QUERY,
|
|
206
194
|
variables: () => variables,
|
|
207
195
|
validateResult: (data) => {
|
|
208
|
-
|
|
196
|
+
// Backend may return points with `y: null` when the underlying column is
|
|
197
|
+
// unset. Treat the response as empty unless at least one PPS point has
|
|
198
|
+
// a usable value, otherwise statistics collapse to $0.000000.
|
|
199
|
+
const hasData = !!(data.vault &&
|
|
200
|
+
data.vault.stateHistory.pricePerShareUsd.some((p) => p.y !== null && p.y > 0));
|
|
209
201
|
return {
|
|
210
202
|
valid: hasData,
|
|
211
203
|
message: hasData
|
|
@@ -214,7 +206,7 @@ export function createExecuteGetPriceHistory(container) {
|
|
|
214
206
|
isError: !hasData,
|
|
215
207
|
};
|
|
216
208
|
},
|
|
217
|
-
transformResult: createTransformPriceHistoryData(input
|
|
209
|
+
transformResult: createTransformPriceHistoryData(input),
|
|
218
210
|
toolName: 'get_price_history',
|
|
219
211
|
});
|
|
220
212
|
// Register cache tags for invalidation
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-price-history.js","sourceRoot":"","sources":["../../src/tools/get-price-history.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAIH,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAE3E,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,GAAG;IAClB,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;IACtB,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;IACxB,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;IACxB,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;IACxB,GAAG,EAAE,CAAC,EAAE,gBAAgB;CAChB,CAAC;
|
|
1
|
+
{"version":3,"file":"get-price-history.js","sourceRoot":"","sources":["../../src/tools/get-price-history.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-transactions.d.ts","sourceRoot":"","sources":["../../src/tools/get-transactions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAEpE,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAGnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"get-transactions.d.ts","sourceRoot":"","sources":["../../src/tools/get-transactions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAEpE,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAGnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAoKxD;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAC1C,SAAS,EAAE,gBAAgB,GAC1B,CAAC,KAAK,EAAE,oBAAoB,KAAK,OAAO,CAAC,cAAc,CAAC,CAoG1D"}
|
|
@@ -55,7 +55,9 @@ function createTransformTransactionsData(input) {
|
|
|
55
55
|
vaultAddress: input.vaultAddress,
|
|
56
56
|
chainId: input.chainId,
|
|
57
57
|
transactions: transactions.map((tx) => ({
|
|
58
|
-
|
|
58
|
+
// chainId prefix avoids cross-chain collisions when consumers paginate
|
|
59
|
+
// batched results (hash+logIndex is unique per chain only).
|
|
60
|
+
id: `${tx.chain.id}-${tx.hash}-${tx.logIndex}`,
|
|
59
61
|
type: tx.type,
|
|
60
62
|
timestamp: tx.timestamp,
|
|
61
63
|
blockNumber: tx.blockNumber,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-transactions.js","sourceRoot":"","sources":["../../src/tools/get-transactions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAE3E,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAExD;;GAEG;AACH,SAAS,gBAAgB,CAAC,KAA2B;IACnD,MAAM,KAAK,GAA4B;QACrC,UAAU,EAAE,KAAK,CAAC,OAAO;QACzB,QAAQ,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;KAC7C,CAAC;IAEF,IAAI,KAAK,CAAC,gBAAgB,IAAI,KAAK,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChE,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,gBAAgB,CAAC;IACzC,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,SAAS,WAAW,CAAC,OAAgC;IACnD,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IAC/B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IACrC,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxC,CAAC;
|
|
1
|
+
{"version":3,"file":"get-transactions.js","sourceRoot":"","sources":["../../src/tools/get-transactions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* list_chains Tool
|
|
3
|
+
*
|
|
4
|
+
* Returns the Lagoon-supported chains, with factory address & wrapped native
|
|
5
|
+
* token. Lets the LLM discover valid chain IDs instead of guessing.
|
|
6
|
+
*
|
|
7
|
+
* Cache: cacheTTL.schema (24h — chain support changes via deployment).
|
|
8
|
+
*
|
|
9
|
+
* Cache-tag note: chain directory is global, not per-vault. Intentionally
|
|
10
|
+
* exempted from CacheTag.VAULT.
|
|
11
|
+
*/
|
|
12
|
+
import { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
|
|
13
|
+
import { ListChainsInput } from '../utils/validators.js';
|
|
14
|
+
import { ServiceContainer } from '../core/container.js';
|
|
15
|
+
export declare function createExecuteListChains(container: ServiceContainer): (input: ListChainsInput) => Promise<CallToolResult>;
|
|
16
|
+
//# sourceMappingURL=list-chains.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-chains.d.ts","sourceRoot":"","sources":["../../src/tools/list-chains.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAIzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AA+BxD,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,gBAAgB,GAC1B,CAAC,KAAK,EAAE,eAAe,KAAK,OAAO,CAAC,cAAc,CAAC,CAmCrD"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* list_chains Tool
|
|
3
|
+
*
|
|
4
|
+
* Returns the Lagoon-supported chains, with factory address & wrapped native
|
|
5
|
+
* token. Lets the LLM discover valid chain IDs instead of guessing.
|
|
6
|
+
*
|
|
7
|
+
* Cache: cacheTTL.schema (24h — chain support changes via deployment).
|
|
8
|
+
*
|
|
9
|
+
* Cache-tag note: chain directory is global, not per-vault. Intentionally
|
|
10
|
+
* exempted from CacheTag.VAULT.
|
|
11
|
+
*/
|
|
12
|
+
import { getToolDisclaimer } from '../utils/disclaimers.js';
|
|
13
|
+
import { LIST_CHAINS_QUERY } from '../graphql/queries/index.js';
|
|
14
|
+
import { executeToolWithCache } from '../utils/execute-tool-with-cache.js';
|
|
15
|
+
import { cacheTTL } from '../cache/index.js';
|
|
16
|
+
export function createExecuteListChains(container) {
|
|
17
|
+
// Fallbacks align with paginationFirstSchema's documented default (20)
|
|
18
|
+
// so the cache key matches the GraphQL variables (a mismatch is a
|
|
19
|
+
// cache-poisoning class of bug — different effective page sizes mapping
|
|
20
|
+
// to the same key).
|
|
21
|
+
const executor = executeToolWithCache({
|
|
22
|
+
container,
|
|
23
|
+
cacheKey: (input) => {
|
|
24
|
+
const first = input.pagination?.first ?? 20;
|
|
25
|
+
const skip = input.pagination?.skip ?? 0;
|
|
26
|
+
return `chains:${first}:${skip}:${input.isVisible ?? 'any'}`;
|
|
27
|
+
},
|
|
28
|
+
cacheTTL: cacheTTL.schema,
|
|
29
|
+
query: LIST_CHAINS_QUERY,
|
|
30
|
+
variables: (input) => ({
|
|
31
|
+
first: input.pagination?.first ?? 20,
|
|
32
|
+
skip: input.pagination?.skip ?? 0,
|
|
33
|
+
where: input.isVisible == null ? null : { isVisible_eq: input.isVisible },
|
|
34
|
+
}),
|
|
35
|
+
transformResult: (data) => data.chains,
|
|
36
|
+
toolName: 'list_chains',
|
|
37
|
+
});
|
|
38
|
+
return async (input) => {
|
|
39
|
+
const result = await executor(input);
|
|
40
|
+
if (!result.isError && result.content[0]?.type === 'text') {
|
|
41
|
+
result.content[0].text = result.content[0].text + getToolDisclaimer('list_chains');
|
|
42
|
+
}
|
|
43
|
+
return result;
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=list-chains.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-chains.js","sourceRoot":"","sources":["../../src/tools/list-chains.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAE3E,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AA8B7C,MAAM,UAAU,uBAAuB,CACrC,SAA2B;IAE3B,uEAAuE;IACvE,kEAAkE;IAClE,wEAAwE;IACxE,oBAAoB;IACpB,MAAM,QAAQ,GAAG,oBAAoB,CAKnC;QACA,SAAS;QACT,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;YAClB,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,EAAE,KAAK,IAAI,EAAE,CAAC;YAC5C,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,CAAC;YACzC,OAAO,UAAU,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,EAAE,CAAC;QAC/D,CAAC;QACD,QAAQ,EAAE,QAAQ,CAAC,MAAM;QACzB,KAAK,EAAE,iBAAiB;QACxB,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACrB,KAAK,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,IAAI,EAAE;YACpC,IAAI,EAAE,KAAK,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC;YACjC,KAAK,EAAE,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,SAAS,EAAE;SAC1E,CAAC;QACF,eAAe,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM;QACtC,QAAQ,EAAE,aAAa;KACxB,CAAC,CAAC;IAEH,OAAO,KAAK,EAAE,KAAsB,EAA2B,EAAE;QAC/D,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,aAAa,CAAC,CAAC;QACrF,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* list_curators Tool
|
|
3
|
+
*
|
|
4
|
+
* Returns the curator directory: name, id, logo, description, website.
|
|
5
|
+
* Lets the LLM resolve "which curators are on Lagoon?" without scanning all
|
|
6
|
+
* vaults.
|
|
7
|
+
*
|
|
8
|
+
* Cache: cacheTTL.vaultData (15 minutes — curator metadata changes infrequently).
|
|
9
|
+
*
|
|
10
|
+
* Cache tag: curator directory is vault-adjacent; registered under
|
|
11
|
+
* CacheTag.VAULT so a flush invalidates both vault data and curator metadata
|
|
12
|
+
* together.
|
|
13
|
+
*/
|
|
14
|
+
import { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
|
|
15
|
+
import { ListCuratorsInput } from '../utils/validators.js';
|
|
16
|
+
import { ServiceContainer } from '../core/container.js';
|
|
17
|
+
export declare function createExecuteListCurators(container: ServiceContainer): (input: ListCuratorsInput) => Promise<CallToolResult>;
|
|
18
|
+
//# sourceMappingURL=list-curators.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-curators.d.ts","sourceRoot":"","sources":["../../src/tools/list-curators.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAI3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAgCxD,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,gBAAgB,GAC1B,CAAC,KAAK,EAAE,iBAAiB,KAAK,OAAO,CAAC,cAAc,CAAC,CA8BvD"}
|