keyring-agent-core 0.1.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 +169 -0
- package/dist/agent/AgentCore.d.ts +220 -0
- package/dist/agent/AgentCore.d.ts.map +1 -0
- package/dist/agent/AgentCore.js +950 -0
- package/dist/agent/AgentCore.js.map +1 -0
- package/dist/agent/QueryRewriter.d.ts +67 -0
- package/dist/agent/QueryRewriter.d.ts.map +1 -0
- package/dist/agent/QueryRewriter.js +262 -0
- package/dist/agent/QueryRewriter.js.map +1 -0
- package/dist/agent/Router.d.ts +33 -0
- package/dist/agent/Router.d.ts.map +1 -0
- package/dist/agent/Router.js +191 -0
- package/dist/agent/Router.js.map +1 -0
- package/dist/agent/Subagent.d.ts +63 -0
- package/dist/agent/Subagent.d.ts.map +1 -0
- package/dist/agent/Subagent.js +240 -0
- package/dist/agent/Subagent.js.map +1 -0
- package/dist/agent/Synthesizer.d.ts +11 -0
- package/dist/agent/Synthesizer.d.ts.map +1 -0
- package/dist/agent/Synthesizer.js +86 -0
- package/dist/agent/Synthesizer.js.map +1 -0
- package/dist/agent/index.d.ts +10 -0
- package/dist/agent/index.d.ts.map +1 -0
- package/dist/agent/index.js +24 -0
- package/dist/agent/index.js.map +1 -0
- package/dist/agent/subagents/AiAgent.d.ts +6 -0
- package/dist/agent/subagents/AiAgent.d.ts.map +1 -0
- package/dist/agent/subagents/AiAgent.js +48 -0
- package/dist/agent/subagents/AiAgent.js.map +1 -0
- package/dist/agent/subagents/NftAgent.d.ts +6 -0
- package/dist/agent/subagents/NftAgent.d.ts.map +1 -0
- package/dist/agent/subagents/NftAgent.js +69 -0
- package/dist/agent/subagents/NftAgent.js.map +1 -0
- package/dist/agent/subagents/PoolAgent.d.ts +6 -0
- package/dist/agent/subagents/PoolAgent.d.ts.map +1 -0
- package/dist/agent/subagents/PoolAgent.js +184 -0
- package/dist/agent/subagents/PoolAgent.js.map +1 -0
- package/dist/agent/subagents/TokenAgent.d.ts +6 -0
- package/dist/agent/subagents/TokenAgent.d.ts.map +1 -0
- package/dist/agent/subagents/TokenAgent.js +75 -0
- package/dist/agent/subagents/TokenAgent.js.map +1 -0
- package/dist/agent/subagents/WalletAgent.d.ts +6 -0
- package/dist/agent/subagents/WalletAgent.d.ts.map +1 -0
- package/dist/agent/subagents/WalletAgent.js +92 -0
- package/dist/agent/subagents/WalletAgent.js.map +1 -0
- package/dist/agent/subagents/index.d.ts +14 -0
- package/dist/agent/subagents/index.d.ts.map +1 -0
- package/dist/agent/subagents/index.js +38 -0
- package/dist/agent/subagents/index.js.map +1 -0
- package/dist/constants/abi.d.ts +520 -0
- package/dist/constants/abi.d.ts.map +1 -0
- package/dist/constants/abi.js +667 -0
- package/dist/constants/abi.js.map +1 -0
- package/dist/functions/pool.d.ts +25 -0
- package/dist/functions/pool.d.ts.map +1 -0
- package/dist/functions/pool.js +151 -0
- package/dist/functions/pool.js.map +1 -0
- package/dist/functions/web3.d.ts +32 -0
- package/dist/functions/web3.d.ts.map +1 -0
- package/dist/functions/web3.js +277 -0
- package/dist/functions/web3.js.map +1 -0
- package/dist/index.d.ts +24 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +65 -0
- package/dist/index.js.map +1 -0
- package/dist/llm/GeminiProvider.d.ts +16 -0
- package/dist/llm/GeminiProvider.d.ts.map +1 -0
- package/dist/llm/GeminiProvider.js +248 -0
- package/dist/llm/GeminiProvider.js.map +1 -0
- package/dist/llm/index.d.ts +2 -0
- package/dist/llm/index.d.ts.map +1 -0
- package/dist/llm/index.js +6 -0
- package/dist/llm/index.js.map +1 -0
- package/dist/memory/ChatHistory.d.ts +83 -0
- package/dist/memory/ChatHistory.d.ts.map +1 -0
- package/dist/memory/ChatHistory.js +143 -0
- package/dist/memory/ChatHistory.js.map +1 -0
- package/dist/memory/KnowledgeBase.d.ts +38 -0
- package/dist/memory/KnowledgeBase.d.ts.map +1 -0
- package/dist/memory/KnowledgeBase.js +139 -0
- package/dist/memory/KnowledgeBase.js.map +1 -0
- package/dist/memory/Summarizer.d.ts +12 -0
- package/dist/memory/Summarizer.d.ts.map +1 -0
- package/dist/memory/Summarizer.js +39 -0
- package/dist/memory/Summarizer.js.map +1 -0
- package/dist/memory/UpstashKnowledgeBase.d.ts +124 -0
- package/dist/memory/UpstashKnowledgeBase.d.ts.map +1 -0
- package/dist/memory/UpstashKnowledgeBase.js +152 -0
- package/dist/memory/UpstashKnowledgeBase.js.map +1 -0
- package/dist/memory/historyUtils.d.ts +58 -0
- package/dist/memory/historyUtils.d.ts.map +1 -0
- package/dist/memory/historyUtils.js +190 -0
- package/dist/memory/historyUtils.js.map +1 -0
- package/dist/memory/index.d.ts +7 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/index.js +12 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/memory/ingestKnowledgeBase.d.ts +17 -0
- package/dist/memory/ingestKnowledgeBase.d.ts.map +1 -0
- package/dist/memory/ingestKnowledgeBase.js +35 -0
- package/dist/memory/ingestKnowledgeBase.js.map +1 -0
- package/dist/services/MoralisService.d.ts +1350 -0
- package/dist/services/MoralisService.d.ts.map +1 -0
- package/dist/services/MoralisService.js +1364 -0
- package/dist/services/MoralisService.js.map +1 -0
- package/dist/services/PantographService.d.ts +38 -0
- package/dist/services/PantographService.d.ts.map +1 -0
- package/dist/services/PantographService.js +199 -0
- package/dist/services/PantographService.js.map +1 -0
- package/dist/services/PoolService.d.ts +241 -0
- package/dist/services/PoolService.d.ts.map +1 -0
- package/dist/services/PoolService.js +507 -0
- package/dist/services/PoolService.js.map +1 -0
- package/dist/services/UniswapService.d.ts +289 -0
- package/dist/services/UniswapService.d.ts.map +1 -0
- package/dist/services/UniswapService.js +585 -0
- package/dist/services/UniswapService.js.map +1 -0
- package/dist/services/swap/BaseSwapService.d.ts +17 -0
- package/dist/services/swap/BaseSwapService.d.ts.map +1 -0
- package/dist/services/swap/BaseSwapService.js +19 -0
- package/dist/services/swap/BaseSwapService.js.map +1 -0
- package/dist/services/swap/DebridgeAdapter.d.ts +20 -0
- package/dist/services/swap/DebridgeAdapter.d.ts.map +1 -0
- package/dist/services/swap/DebridgeAdapter.js +175 -0
- package/dist/services/swap/DebridgeAdapter.js.map +1 -0
- package/dist/services/swap/RelayAdapter.d.ts +19 -0
- package/dist/services/swap/RelayAdapter.d.ts.map +1 -0
- package/dist/services/swap/RelayAdapter.js +189 -0
- package/dist/services/swap/RelayAdapter.js.map +1 -0
- package/dist/services/swap/SwapServiceFactory.d.ts +24 -0
- package/dist/services/swap/SwapServiceFactory.d.ts.map +1 -0
- package/dist/services/swap/SwapServiceFactory.js +74 -0
- package/dist/services/swap/SwapServiceFactory.js.map +1 -0
- package/dist/services/swap/addresses.d.ts +3 -0
- package/dist/services/swap/addresses.d.ts.map +1 -0
- package/dist/services/swap/addresses.js +68 -0
- package/dist/services/swap/addresses.js.map +1 -0
- package/dist/services/swap/affiliate.d.ts +17 -0
- package/dist/services/swap/affiliate.d.ts.map +1 -0
- package/dist/services/swap/affiliate.js +126 -0
- package/dist/services/swap/affiliate.js.map +1 -0
- package/dist/services/swap/config.d.ts +9 -0
- package/dist/services/swap/config.d.ts.map +1 -0
- package/dist/services/swap/config.js +19 -0
- package/dist/services/swap/config.js.map +1 -0
- package/dist/services/swap/index.d.ts +10 -0
- package/dist/services/swap/index.d.ts.map +1 -0
- package/dist/services/swap/index.js +22 -0
- package/dist/services/swap/index.js.map +1 -0
- package/dist/services/swap/types.d.ts +89 -0
- package/dist/services/swap/types.d.ts.map +1 -0
- package/dist/services/swap/types.js +6 -0
- package/dist/services/swap/types.js.map +1 -0
- package/dist/tools/BaseTool.d.ts +15 -0
- package/dist/tools/BaseTool.d.ts.map +1 -0
- package/dist/tools/BaseTool.js +35 -0
- package/dist/tools/BaseTool.js.map +1 -0
- package/dist/tools/ToolRegistry.d.ts +27 -0
- package/dist/tools/ToolRegistry.d.ts.map +1 -0
- package/dist/tools/ToolRegistry.js +80 -0
- package/dist/tools/ToolRegistry.js.map +1 -0
- package/dist/tools/builtin/ai/MoralisCortexTool.d.ts +33 -0
- package/dist/tools/builtin/ai/MoralisCortexTool.d.ts.map +1 -0
- package/dist/tools/builtin/ai/MoralisCortexTool.js +76 -0
- package/dist/tools/builtin/ai/MoralisCortexTool.js.map +1 -0
- package/dist/tools/builtin/ai/SolanaCortexTool.d.ts +22 -0
- package/dist/tools/builtin/ai/SolanaCortexTool.d.ts.map +1 -0
- package/dist/tools/builtin/ai/SolanaCortexTool.js +80 -0
- package/dist/tools/builtin/ai/SolanaCortexTool.js.map +1 -0
- package/dist/tools/builtin/ai/index.d.ts +5 -0
- package/dist/tools/builtin/ai/index.d.ts.map +1 -0
- package/dist/tools/builtin/ai/index.js +8 -0
- package/dist/tools/builtin/ai/index.js.map +1 -0
- package/dist/tools/builtin/index.d.ts +6 -0
- package/dist/tools/builtin/index.d.ts.map +1 -0
- package/dist/tools/builtin/index.js +22 -0
- package/dist/tools/builtin/index.js.map +1 -0
- package/dist/tools/builtin/nft/NFTContractInfoTool.d.ts +21 -0
- package/dist/tools/builtin/nft/NFTContractInfoTool.d.ts.map +1 -0
- package/dist/tools/builtin/nft/NFTContractInfoTool.js +54 -0
- package/dist/tools/builtin/nft/NFTContractInfoTool.js.map +1 -0
- package/dist/tools/builtin/nft/NFTMetadataTool.d.ts +121 -0
- package/dist/tools/builtin/nft/NFTMetadataTool.d.ts.map +1 -0
- package/dist/tools/builtin/nft/NFTMetadataTool.js +159 -0
- package/dist/tools/builtin/nft/NFTMetadataTool.js.map +1 -0
- package/dist/tools/builtin/nft/WalletNFTsTool.d.ts +82 -0
- package/dist/tools/builtin/nft/WalletNFTsTool.d.ts.map +1 -0
- package/dist/tools/builtin/nft/WalletNFTsTool.js +172 -0
- package/dist/tools/builtin/nft/WalletNFTsTool.js.map +1 -0
- package/dist/tools/builtin/nft/index.d.ts +7 -0
- package/dist/tools/builtin/nft/index.d.ts.map +1 -0
- package/dist/tools/builtin/nft/index.js +10 -0
- package/dist/tools/builtin/nft/index.js.map +1 -0
- package/dist/tools/builtin/pool/EstimatePoolYieldTool.d.ts +124 -0
- package/dist/tools/builtin/pool/EstimatePoolYieldTool.d.ts.map +1 -0
- package/dist/tools/builtin/pool/EstimatePoolYieldTool.js +235 -0
- package/dist/tools/builtin/pool/EstimatePoolYieldTool.js.map +1 -0
- package/dist/tools/builtin/pool/OpenAddLiquidityFormTool.d.ts +127 -0
- package/dist/tools/builtin/pool/OpenAddLiquidityFormTool.d.ts.map +1 -0
- package/dist/tools/builtin/pool/OpenAddLiquidityFormTool.js +517 -0
- package/dist/tools/builtin/pool/OpenAddLiquidityFormTool.js.map +1 -0
- package/dist/tools/builtin/pool/PoolByAddressTool.d.ts +127 -0
- package/dist/tools/builtin/pool/PoolByAddressTool.d.ts.map +1 -0
- package/dist/tools/builtin/pool/PoolByAddressTool.js +237 -0
- package/dist/tools/builtin/pool/PoolByAddressTool.js.map +1 -0
- package/dist/tools/builtin/pool/PoolDetailTool.d.ts +127 -0
- package/dist/tools/builtin/pool/PoolDetailTool.d.ts.map +1 -0
- package/dist/tools/builtin/pool/PoolDetailTool.js +272 -0
- package/dist/tools/builtin/pool/PoolDetailTool.js.map +1 -0
- package/dist/tools/builtin/pool/PoolSearchTool.d.ts +50 -0
- package/dist/tools/builtin/pool/PoolSearchTool.d.ts.map +1 -0
- package/dist/tools/builtin/pool/PoolSearchTool.js +159 -0
- package/dist/tools/builtin/pool/PoolSearchTool.js.map +1 -0
- package/dist/tools/builtin/pool/PreviewAddLiquidityTool.d.ts +123 -0
- package/dist/tools/builtin/pool/PreviewAddLiquidityTool.d.ts.map +1 -0
- package/dist/tools/builtin/pool/PreviewAddLiquidityTool.js +380 -0
- package/dist/tools/builtin/pool/PreviewAddLiquidityTool.js.map +1 -0
- package/dist/tools/builtin/pool/TopPoolsTool.d.ts +68 -0
- package/dist/tools/builtin/pool/TopPoolsTool.d.ts.map +1 -0
- package/dist/tools/builtin/pool/TopPoolsTool.js +158 -0
- package/dist/tools/builtin/pool/TopPoolsTool.js.map +1 -0
- package/dist/tools/builtin/pool/index.d.ts +15 -0
- package/dist/tools/builtin/pool/index.d.ts.map +1 -0
- package/dist/tools/builtin/pool/index.js +18 -0
- package/dist/tools/builtin/pool/index.js.map +1 -0
- package/dist/tools/builtin/token/TokenAnalyticsTool.d.ts +71 -0
- package/dist/tools/builtin/token/TokenAnalyticsTool.d.ts.map +1 -0
- package/dist/tools/builtin/token/TokenAnalyticsTool.js +146 -0
- package/dist/tools/builtin/token/TokenAnalyticsTool.js.map +1 -0
- package/dist/tools/builtin/token/TokenHoldersTool.d.ts +81 -0
- package/dist/tools/builtin/token/TokenHoldersTool.d.ts.map +1 -0
- package/dist/tools/builtin/token/TokenHoldersTool.js +138 -0
- package/dist/tools/builtin/token/TokenHoldersTool.js.map +1 -0
- package/dist/tools/builtin/token/TokenInfoTool.d.ts +36 -0
- package/dist/tools/builtin/token/TokenInfoTool.d.ts.map +1 -0
- package/dist/tools/builtin/token/TokenInfoTool.js +163 -0
- package/dist/tools/builtin/token/TokenInfoTool.js.map +1 -0
- package/dist/tools/builtin/token/TokenScoreTool.d.ts +63 -0
- package/dist/tools/builtin/token/TokenScoreTool.d.ts.map +1 -0
- package/dist/tools/builtin/token/TokenScoreTool.js +147 -0
- package/dist/tools/builtin/token/TokenScoreTool.js.map +1 -0
- package/dist/tools/builtin/token/TopGainersTool.d.ts +46 -0
- package/dist/tools/builtin/token/TopGainersTool.d.ts.map +1 -0
- package/dist/tools/builtin/token/TopGainersTool.js +110 -0
- package/dist/tools/builtin/token/TopGainersTool.js.map +1 -0
- package/dist/tools/builtin/token/TopLosersTool.d.ts +66 -0
- package/dist/tools/builtin/token/TopLosersTool.d.ts.map +1 -0
- package/dist/tools/builtin/token/TopLosersTool.js +128 -0
- package/dist/tools/builtin/token/TopLosersTool.js.map +1 -0
- package/dist/tools/builtin/token/TrendingTokensTool.d.ts +39 -0
- package/dist/tools/builtin/token/TrendingTokensTool.d.ts.map +1 -0
- package/dist/tools/builtin/token/TrendingTokensTool.js +75 -0
- package/dist/tools/builtin/token/TrendingTokensTool.js.map +1 -0
- package/dist/tools/builtin/token/index.d.ts +15 -0
- package/dist/tools/builtin/token/index.d.ts.map +1 -0
- package/dist/tools/builtin/token/index.js +18 -0
- package/dist/tools/builtin/token/index.js.map +1 -0
- package/dist/tools/builtin/wallet/TransactionByHashTool.d.ts +70 -0
- package/dist/tools/builtin/wallet/TransactionByHashTool.d.ts.map +1 -0
- package/dist/tools/builtin/wallet/TransactionByHashTool.js +110 -0
- package/dist/tools/builtin/wallet/TransactionByHashTool.js.map +1 -0
- package/dist/tools/builtin/wallet/WalletApprovalsTool.d.ts +107 -0
- package/dist/tools/builtin/wallet/WalletApprovalsTool.d.ts.map +1 -0
- package/dist/tools/builtin/wallet/WalletApprovalsTool.js +163 -0
- package/dist/tools/builtin/wallet/WalletApprovalsTool.js.map +1 -0
- package/dist/tools/builtin/wallet/WalletDefiPositionsTool.d.ts +61 -0
- package/dist/tools/builtin/wallet/WalletDefiPositionsTool.d.ts.map +1 -0
- package/dist/tools/builtin/wallet/WalletDefiPositionsTool.js +99 -0
- package/dist/tools/builtin/wallet/WalletDefiPositionsTool.js.map +1 -0
- package/dist/tools/builtin/wallet/WalletDefiProtocolPositionsTool.d.ts +68 -0
- package/dist/tools/builtin/wallet/WalletDefiProtocolPositionsTool.d.ts.map +1 -0
- package/dist/tools/builtin/wallet/WalletDefiProtocolPositionsTool.js +114 -0
- package/dist/tools/builtin/wallet/WalletDefiProtocolPositionsTool.js.map +1 -0
- package/dist/tools/builtin/wallet/WalletDefiSummaryTool.d.ts +50 -0
- package/dist/tools/builtin/wallet/WalletDefiSummaryTool.d.ts.map +1 -0
- package/dist/tools/builtin/wallet/WalletDefiSummaryTool.js +79 -0
- package/dist/tools/builtin/wallet/WalletDefiSummaryTool.js.map +1 -0
- package/dist/tools/builtin/wallet/WalletHistoryTool.d.ts +31 -0
- package/dist/tools/builtin/wallet/WalletHistoryTool.d.ts.map +1 -0
- package/dist/tools/builtin/wallet/WalletHistoryTool.js +153 -0
- package/dist/tools/builtin/wallet/WalletHistoryTool.js.map +1 -0
- package/dist/tools/builtin/wallet/WalletNetWorthTool.d.ts +44 -0
- package/dist/tools/builtin/wallet/WalletNetWorthTool.d.ts.map +1 -0
- package/dist/tools/builtin/wallet/WalletNetWorthTool.js +122 -0
- package/dist/tools/builtin/wallet/WalletNetWorthTool.js.map +1 -0
- package/dist/tools/builtin/wallet/WalletNftTransfersTool.d.ts +86 -0
- package/dist/tools/builtin/wallet/WalletNftTransfersTool.d.ts.map +1 -0
- package/dist/tools/builtin/wallet/WalletNftTransfersTool.js +264 -0
- package/dist/tools/builtin/wallet/WalletNftTransfersTool.js.map +1 -0
- package/dist/tools/builtin/wallet/WalletPnlSummaryTool.d.ts +43 -0
- package/dist/tools/builtin/wallet/WalletPnlSummaryTool.d.ts.map +1 -0
- package/dist/tools/builtin/wallet/WalletPnlSummaryTool.js +88 -0
- package/dist/tools/builtin/wallet/WalletPnlSummaryTool.js.map +1 -0
- package/dist/tools/builtin/wallet/WalletPnlTool.d.ts +43 -0
- package/dist/tools/builtin/wallet/WalletPnlTool.d.ts.map +1 -0
- package/dist/tools/builtin/wallet/WalletPnlTool.js +174 -0
- package/dist/tools/builtin/wallet/WalletPnlTool.js.map +1 -0
- package/dist/tools/builtin/wallet/WalletTokenBalancesTool.d.ts +35 -0
- package/dist/tools/builtin/wallet/WalletTokenBalancesTool.d.ts.map +1 -0
- package/dist/tools/builtin/wallet/WalletTokenBalancesTool.js +67 -0
- package/dist/tools/builtin/wallet/WalletTokenBalancesTool.js.map +1 -0
- package/dist/tools/builtin/wallet/WalletTokenTransfersTool.d.ts +109 -0
- package/dist/tools/builtin/wallet/WalletTokenTransfersTool.d.ts.map +1 -0
- package/dist/tools/builtin/wallet/WalletTokenTransfersTool.js +353 -0
- package/dist/tools/builtin/wallet/WalletTokenTransfersTool.js.map +1 -0
- package/dist/tools/builtin/wallet/index.d.ts +25 -0
- package/dist/tools/builtin/wallet/index.d.ts.map +1 -0
- package/dist/tools/builtin/wallet/index.js +28 -0
- package/dist/tools/builtin/wallet/index.js.map +1 -0
- package/dist/tools/index.d.ts +4 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +23 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/types/index.d.ts +566 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +6 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +52 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OpenAddLiquidityFormTool.js","sourceRoot":"","sources":["../../../../src/tools/builtin/pool/OpenAddLiquidityFormTool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { BaseTool } from '../../BaseTool';
|
|
2
|
+
import type { ToolParameter, UserContext } from '../../../types';
|
|
3
|
+
import { type UniswapServiceConfig } from '../../../services/UniswapService';
|
|
4
|
+
export type PoolByAddressToolConfig = UniswapServiceConfig;
|
|
5
|
+
/**
|
|
6
|
+
* Tool: lookup-pool-by-address
|
|
7
|
+
*
|
|
8
|
+
* Resolves a single 0x address against Uniswap when the caller does not yet
|
|
9
|
+
* know whether it is a pool contract or a token contract. The tool fans out
|
|
10
|
+
* two SearchTokens calls in parallel — one with `searchType: "POOL"`, one
|
|
11
|
+
* with `searchType: "TOKEN"` — and dispatches based on which side returns
|
|
12
|
+
* data:
|
|
13
|
+
*
|
|
14
|
+
* - POOL hit → fetch the pool's full detail (V3Pool GraphQL).
|
|
15
|
+
* - TOKEN hit → list pools that contain that token, ranked by 24h volume.
|
|
16
|
+
* - Neither → return an error so the caller can ask the user to clarify.
|
|
17
|
+
*/
|
|
18
|
+
export declare class PoolByAddressTool extends BaseTool {
|
|
19
|
+
name: string;
|
|
20
|
+
description: string;
|
|
21
|
+
category: string;
|
|
22
|
+
parameters: ToolParameter[];
|
|
23
|
+
private service;
|
|
24
|
+
constructor(config?: PoolByAddressToolConfig);
|
|
25
|
+
protected run(args: Record<string, unknown>, userContext?: UserContext): Promise<{
|
|
26
|
+
error: string;
|
|
27
|
+
_instructions?: undefined;
|
|
28
|
+
resolvedAs?: undefined;
|
|
29
|
+
chain?: undefined;
|
|
30
|
+
protocolVersion?: undefined;
|
|
31
|
+
pool?: undefined;
|
|
32
|
+
} | {
|
|
33
|
+
_instructions: string;
|
|
34
|
+
resolvedAs: string;
|
|
35
|
+
chain: string;
|
|
36
|
+
protocolVersion: import("../../../services/UniswapService").UniswapProtocolVersion;
|
|
37
|
+
pool: {
|
|
38
|
+
address: string | undefined;
|
|
39
|
+
protocolVersion: import("../../../services/UniswapService").UniswapProtocolVersion | undefined;
|
|
40
|
+
poolId: string | undefined;
|
|
41
|
+
tickSpacing: number | undefined;
|
|
42
|
+
isDynamicFee: boolean | undefined;
|
|
43
|
+
hookAddress: string | undefined;
|
|
44
|
+
feeTierBps: number | undefined;
|
|
45
|
+
feeTierPercent: number | undefined;
|
|
46
|
+
tvlUsd: number | undefined;
|
|
47
|
+
tvlChange24hPercent: number | undefined;
|
|
48
|
+
volume24hUsd: number | undefined;
|
|
49
|
+
fees24hUsd: number | undefined;
|
|
50
|
+
aprPercent: number | undefined;
|
|
51
|
+
txCount: number | undefined;
|
|
52
|
+
historicalVolumeWeek: {
|
|
53
|
+
timestamp: number | undefined;
|
|
54
|
+
volumeUsd: number | undefined;
|
|
55
|
+
}[] | undefined;
|
|
56
|
+
token0: {
|
|
57
|
+
address: string | undefined;
|
|
58
|
+
symbol: string | undefined;
|
|
59
|
+
name: string | undefined;
|
|
60
|
+
decimals: number | undefined;
|
|
61
|
+
priceUsd: number | undefined;
|
|
62
|
+
reserve: number | undefined;
|
|
63
|
+
} | undefined;
|
|
64
|
+
token1: {
|
|
65
|
+
address: string | undefined;
|
|
66
|
+
symbol: string | undefined;
|
|
67
|
+
name: string | undefined;
|
|
68
|
+
decimals: number | undefined;
|
|
69
|
+
priceUsd: number | undefined;
|
|
70
|
+
reserve: number | undefined;
|
|
71
|
+
} | undefined;
|
|
72
|
+
};
|
|
73
|
+
error?: undefined;
|
|
74
|
+
} | {
|
|
75
|
+
error: string;
|
|
76
|
+
_instructions?: undefined;
|
|
77
|
+
resolvedAs?: undefined;
|
|
78
|
+
chain?: undefined;
|
|
79
|
+
protocolVersion?: undefined;
|
|
80
|
+
token?: undefined;
|
|
81
|
+
poolCount?: undefined;
|
|
82
|
+
pools?: undefined;
|
|
83
|
+
} | {
|
|
84
|
+
_instructions: string;
|
|
85
|
+
resolvedAs: string;
|
|
86
|
+
chain: string;
|
|
87
|
+
protocolVersion: string;
|
|
88
|
+
token: {
|
|
89
|
+
address: string | undefined;
|
|
90
|
+
symbol: string | undefined;
|
|
91
|
+
name: string | undefined;
|
|
92
|
+
decimals: number | undefined;
|
|
93
|
+
chainId: number | undefined;
|
|
94
|
+
isSpam: string | undefined;
|
|
95
|
+
safetyLevel: string | undefined;
|
|
96
|
+
};
|
|
97
|
+
poolCount: number;
|
|
98
|
+
pools: {
|
|
99
|
+
address: string | undefined;
|
|
100
|
+
protocolVersion: import("../../../services/UniswapService").UniswapProtocolVersion | undefined;
|
|
101
|
+
feeTierBps: number | undefined;
|
|
102
|
+
feeTierPercent: number | undefined;
|
|
103
|
+
volume24hUsd: number | undefined;
|
|
104
|
+
pair: string | undefined;
|
|
105
|
+
token0: {
|
|
106
|
+
symbol: string | undefined;
|
|
107
|
+
name: string | undefined;
|
|
108
|
+
address: string | undefined;
|
|
109
|
+
} | undefined;
|
|
110
|
+
token1: {
|
|
111
|
+
symbol: string | undefined;
|
|
112
|
+
name: string | undefined;
|
|
113
|
+
address: string | undefined;
|
|
114
|
+
} | undefined;
|
|
115
|
+
}[];
|
|
116
|
+
error?: undefined;
|
|
117
|
+
}>;
|
|
118
|
+
private handlePoolHit;
|
|
119
|
+
private handleTokenHit;
|
|
120
|
+
private findPoolByAddress;
|
|
121
|
+
private findTokenByAddress;
|
|
122
|
+
private formatToken;
|
|
123
|
+
private formatPoolCandidate;
|
|
124
|
+
private formatPoolDetail;
|
|
125
|
+
private formatHistorical;
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=PoolByAddressTool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PoolByAddressTool.d.ts","sourceRoot":"","sources":["../../../../src/tools/builtin/pool/PoolByAddressTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAEL,KAAK,oBAAoB,EAK1B,MAAM,kCAAkC,CAAC;AAE1C,MAAM,MAAM,uBAAuB,GAAG,oBAAoB,CAAC;AAK3D;;;;;;;;;;;;GAYG;AACH,qBAAa,iBAAkB,SAAQ,QAAQ;IAC7C,IAAI,SAA4B;IAChC,WAAW,SASsE;IACjF,QAAQ,SAAqB;IAC7B,UAAU,EAAE,aAAa,EAAE,CAgBzB;IAEF,OAAO,CAAC,OAAO,CAAiB;gBAEpB,MAAM,CAAC,EAAE,uBAAuB;cAK5B,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAiC9D,aAAa;YAuCb,cAAc;IAyC5B,OAAO,CAAC,iBAAiB;IAKzB,OAAO,CAAC,kBAAkB;IAK1B,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,gBAAgB;IAuDxB,OAAO,CAAC,gBAAgB;CAIzB"}
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PoolByAddressTool = void 0;
|
|
4
|
+
const BaseTool_1 = require("../../BaseTool");
|
|
5
|
+
const UniswapService_1 = require("../../../services/UniswapService");
|
|
6
|
+
const DAYS_PER_YEAR = 365;
|
|
7
|
+
const EVM_ADDRESS_RE = /^0x[a-fA-F0-9]{40}$/;
|
|
8
|
+
/**
|
|
9
|
+
* Tool: lookup-pool-by-address
|
|
10
|
+
*
|
|
11
|
+
* Resolves a single 0x address against Uniswap when the caller does not yet
|
|
12
|
+
* know whether it is a pool contract or a token contract. The tool fans out
|
|
13
|
+
* two SearchTokens calls in parallel — one with `searchType: "POOL"`, one
|
|
14
|
+
* with `searchType: "TOKEN"` — and dispatches based on which side returns
|
|
15
|
+
* data:
|
|
16
|
+
*
|
|
17
|
+
* - POOL hit → fetch the pool's full detail (V3Pool GraphQL).
|
|
18
|
+
* - TOKEN hit → list pools that contain that token, ranked by 24h volume.
|
|
19
|
+
* - Neither → return an error so the caller can ask the user to clarify.
|
|
20
|
+
*/
|
|
21
|
+
class PoolByAddressTool extends BaseTool_1.BaseTool {
|
|
22
|
+
name = 'lookup-pool-by-address';
|
|
23
|
+
description = 'Resolve an unknown 0x address as either a Uniswap pool or a token, then return the appropriate data: ' +
|
|
24
|
+
'pool detail when the address is a pool, or the list of pools containing that token when the address is a token. ' +
|
|
25
|
+
'Use this tool when the user pastes a single address and asks about "the pool" without saying which kind. ' +
|
|
26
|
+
'For pool detail (when the address is a pool): pair, fee tier, TVL with 24h % change, 24h volume, 24h fees, ' +
|
|
27
|
+
'estimated APR, token reserves with USD prices, and weekly volume series. ' +
|
|
28
|
+
'For token resolution (when the address is a token): the resolved token (symbol, name, decimals) plus a ranked ' +
|
|
29
|
+
'list of pools that include it (pair, fee tier, 24h volume, pool address). ' +
|
|
30
|
+
'Source: https://app.uniswap.org. ' +
|
|
31
|
+
'Supports: Ethereum, Optimism, BSC, Polygon, Base, Arbitrum, Avalanche, Linea';
|
|
32
|
+
category = 'blockchain-data';
|
|
33
|
+
parameters = [
|
|
34
|
+
{
|
|
35
|
+
name: 'address',
|
|
36
|
+
type: 'string',
|
|
37
|
+
description: 'A 0x-prefixed EVM address. May be a Uniswap pool contract OR a token contract — the tool figures out which.',
|
|
38
|
+
required: true,
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
name: 'chain',
|
|
42
|
+
type: 'string',
|
|
43
|
+
description: 'Hex chain ID: "0x1" Ethereum, "0xa" Optimism, "0x38" BSC, "0x89" Polygon, "0x2105" Base, ' +
|
|
44
|
+
'"0xa4b1" Arbitrum, "0xa86a" Avalanche, "0xe708" Linea. Defaults to connected chain.',
|
|
45
|
+
required: true,
|
|
46
|
+
},
|
|
47
|
+
];
|
|
48
|
+
service;
|
|
49
|
+
constructor(config) {
|
|
50
|
+
super();
|
|
51
|
+
this.service = new UniswapService_1.UniswapService(config);
|
|
52
|
+
}
|
|
53
|
+
async run(args, userContext) {
|
|
54
|
+
const chain = typeof args.chain === 'string' && args.chain.trim() ? args.chain.trim() : userContext?.chain || '0x1';
|
|
55
|
+
const rawAddress = typeof args.address === 'string' ? args.address.trim() : '';
|
|
56
|
+
// Pool-side resolution always searches across ALL versions: if the user
|
|
57
|
+
// pasted a pool address, they want THAT pool — its actual version dictates
|
|
58
|
+
// the response shape, regardless of the `protocolVersion` parameter.
|
|
59
|
+
const [poolSearch, tokenSearch] = await Promise.all([
|
|
60
|
+
this.service.searchPools({ query: rawAddress, chain, page: 1, size: 5, protocolVersion: 'ALL' }),
|
|
61
|
+
this.service.searchTokens({ query: rawAddress, chain, page: 1, size: 5 }),
|
|
62
|
+
]);
|
|
63
|
+
const poolHit = poolSearch.success ? this.findPoolByAddress(poolSearch.data ?? [], rawAddress) : undefined;
|
|
64
|
+
if (poolHit) {
|
|
65
|
+
return this.handlePoolHit(poolHit, chain);
|
|
66
|
+
}
|
|
67
|
+
const tokenHit = tokenSearch.success ? this.findTokenByAddress(tokenSearch.data ?? [], rawAddress) : undefined;
|
|
68
|
+
if (tokenHit) {
|
|
69
|
+
return this.handleTokenHit(tokenHit, chain);
|
|
70
|
+
}
|
|
71
|
+
if (!poolSearch.success && !tokenSearch.success) {
|
|
72
|
+
return { error: poolSearch.error || tokenSearch.error || 'Failed to resolve address' };
|
|
73
|
+
}
|
|
74
|
+
return {
|
|
75
|
+
error: `Address ${rawAddress} did not match any pool or token Uniswap knows on chain ${chain}. ` +
|
|
76
|
+
'Verify the chain (the address may exist on a different network) or ask the user for context.',
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
async handlePoolHit(pool, chain) {
|
|
80
|
+
if (!pool.id) {
|
|
81
|
+
return { error: 'Resolved pool has no identifier' };
|
|
82
|
+
}
|
|
83
|
+
const version = pool.protocolVersion ?? 'V3';
|
|
84
|
+
// V2 and V3 are addressed by contract address. V4 uses a 32-byte poolId
|
|
85
|
+
// returned in `pool.id` (no individual contract — the singleton PoolManager
|
|
86
|
+
// owns all V4 pools).
|
|
87
|
+
const detail = version === 'V4'
|
|
88
|
+
? await this.service.getV4PoolDetail({ poolId: pool.id, chain })
|
|
89
|
+
: version === 'V2'
|
|
90
|
+
? EVM_ADDRESS_RE.test(pool.id)
|
|
91
|
+
? await this.service.getV2PoolDetail({ address: pool.id, chain })
|
|
92
|
+
: { success: false, error: 'Resolved V2 pair has no valid address' }
|
|
93
|
+
: EVM_ADDRESS_RE.test(pool.id)
|
|
94
|
+
? await this.service.getV3PoolDetail({ address: pool.id, chain })
|
|
95
|
+
: { success: false, error: 'Resolved V3 pool has no valid address' };
|
|
96
|
+
if (!detail.success || !detail.data) {
|
|
97
|
+
return { error: detail.error || 'Failed to fetch pool detail' };
|
|
98
|
+
}
|
|
99
|
+
return {
|
|
100
|
+
_instructions: `The address is a Uniswap ${version} pool. Present pool details in a compact summary. Lead with the pair ` +
|
|
101
|
+
'(token0/token1 symbols), fee tier (%), protocol version, and chain. Then show: TVL (USD) with 24h % change, ' +
|
|
102
|
+
'24h volume (USD), 24h fees (USD), estimated APR (%), token0 reserve + USD price, token1 reserve + USD price, ' +
|
|
103
|
+
'and total tx count. For V4 pools also mention tickSpacing, isDynamicFee, and the hook address if present. ' +
|
|
104
|
+
'Format numbers human-readably (e.g. $12.5M, +1.23%, 0.05%). Omit null fields. ' +
|
|
105
|
+
'Do NOT mention tool/API names.',
|
|
106
|
+
resolvedAs: 'pool',
|
|
107
|
+
chain,
|
|
108
|
+
protocolVersion: version,
|
|
109
|
+
pool: this.formatPoolDetail(detail.data),
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
async handleTokenHit(token, chain) {
|
|
113
|
+
const symbol = token.symbol?.trim();
|
|
114
|
+
if (!symbol) {
|
|
115
|
+
return { error: 'Resolved token has no symbol — cannot search related pools.' };
|
|
116
|
+
}
|
|
117
|
+
const poolsByToken = await this.service.searchPools({
|
|
118
|
+
query: symbol,
|
|
119
|
+
chain,
|
|
120
|
+
page: 1,
|
|
121
|
+
size: 100,
|
|
122
|
+
protocolVersion: 'V3',
|
|
123
|
+
});
|
|
124
|
+
if (!poolsByToken.success) {
|
|
125
|
+
return { error: poolsByToken.error || 'Failed to fetch pools for resolved token' };
|
|
126
|
+
}
|
|
127
|
+
const tokenAddrLower = (token.address ?? '').toLowerCase();
|
|
128
|
+
const matched = (poolsByToken.data ?? []).filter((p) => {
|
|
129
|
+
const a = (p.token0?.address ?? '').toLowerCase();
|
|
130
|
+
const b = (p.token1?.address ?? '').toLowerCase();
|
|
131
|
+
return a === tokenAddrLower || b === tokenAddrLower;
|
|
132
|
+
});
|
|
133
|
+
const ranked = [...matched].sort((a, b) => (b.volumeUsd24hr ?? 0) - (a.volumeUsd24hr ?? 0)).slice(0, 10);
|
|
134
|
+
return {
|
|
135
|
+
_instructions: 'The address is a token, not a pool. Tell the user which token it is (symbol + name), then render the ' +
|
|
136
|
+
'matching pools as a numbered list: pair (token0/token1 symbols), fee tier (%), protocol version, ' +
|
|
137
|
+
'24h volume (USD), and the pool address. Ask which pool they want detail on; when they answer, re-call this ' +
|
|
138
|
+
'tool with that pool address to fetch the detail. Format numbers human-readably. Omit null fields. ' +
|
|
139
|
+
'Do NOT mention tool/API names.',
|
|
140
|
+
resolvedAs: 'token',
|
|
141
|
+
chain,
|
|
142
|
+
protocolVersion: 'V3',
|
|
143
|
+
token: this.formatToken(token),
|
|
144
|
+
poolCount: ranked.length,
|
|
145
|
+
pools: ranked.map((p) => this.formatPoolCandidate(p)),
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
findPoolByAddress(pools, address) {
|
|
149
|
+
const target = address.toLowerCase();
|
|
150
|
+
return pools.find((p) => (p.id ?? '').toLowerCase() === target);
|
|
151
|
+
}
|
|
152
|
+
findTokenByAddress(tokens, address) {
|
|
153
|
+
const target = address.toLowerCase();
|
|
154
|
+
return tokens.find((t) => (t.address ?? '').toLowerCase() === target);
|
|
155
|
+
}
|
|
156
|
+
formatToken(t) {
|
|
157
|
+
return {
|
|
158
|
+
address: t.address,
|
|
159
|
+
symbol: t.symbol,
|
|
160
|
+
name: t.name,
|
|
161
|
+
decimals: t.decimals,
|
|
162
|
+
chainId: t.chainId,
|
|
163
|
+
isSpam: t.isSpam,
|
|
164
|
+
safetyLevel: t.safetyLevel,
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
formatPoolCandidate(p) {
|
|
168
|
+
return {
|
|
169
|
+
address: p.id,
|
|
170
|
+
protocolVersion: p.protocolVersion,
|
|
171
|
+
feeTierBps: p.feeTier,
|
|
172
|
+
feeTierPercent: typeof p.feeTier === 'number' ? p.feeTier / 10_000 : undefined,
|
|
173
|
+
volume24hUsd: p.volumeUsd24hr,
|
|
174
|
+
pair: p.token0?.symbol && p.token1?.symbol ? `${p.token0.symbol}/${p.token1.symbol}` : undefined,
|
|
175
|
+
token0: p.token0 ? { symbol: p.token0.symbol, name: p.token0.name, address: p.token0.address } : undefined,
|
|
176
|
+
token1: p.token1 ? { symbol: p.token1.symbol, name: p.token1.name, address: p.token1.address } : undefined,
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
formatPoolDetail(p) {
|
|
180
|
+
const tvlUsd = p.totalLiquidity?.value;
|
|
181
|
+
const volume24hUsd = p.volume24h?.value;
|
|
182
|
+
const feeTierBps = p.feeTier;
|
|
183
|
+
const feeTierPercent = typeof feeTierBps === 'number' ? feeTierBps / 10_000 : undefined;
|
|
184
|
+
const fees24hUsd = typeof volume24hUsd === 'number' && typeof feeTierPercent === 'number'
|
|
185
|
+
? (volume24hUsd * feeTierPercent) / 100
|
|
186
|
+
: undefined;
|
|
187
|
+
const aprPercent = typeof fees24hUsd === 'number' && typeof tvlUsd === 'number' && tvlUsd > 0
|
|
188
|
+
? (fees24hUsd / tvlUsd) * DAYS_PER_YEAR * 100
|
|
189
|
+
: undefined;
|
|
190
|
+
return {
|
|
191
|
+
// V2/V3 expose `address`; V4 has no address (singleton manager) so we
|
|
192
|
+
// fall back to the 32-byte poolId for identification.
|
|
193
|
+
address: p.address ?? p.poolId,
|
|
194
|
+
protocolVersion: p.protocolVersion,
|
|
195
|
+
poolId: p.poolId,
|
|
196
|
+
tickSpacing: p.tickSpacing,
|
|
197
|
+
isDynamicFee: p.isDynamicFee,
|
|
198
|
+
hookAddress: p.hook?.address,
|
|
199
|
+
feeTierBps,
|
|
200
|
+
feeTierPercent,
|
|
201
|
+
tvlUsd,
|
|
202
|
+
tvlChange24hPercent: p.totalLiquidityPercentChange24h?.value,
|
|
203
|
+
volume24hUsd,
|
|
204
|
+
fees24hUsd,
|
|
205
|
+
aprPercent,
|
|
206
|
+
txCount: p.txCount,
|
|
207
|
+
historicalVolumeWeek: this.formatHistorical(p.historicalVolume),
|
|
208
|
+
token0: p.token0
|
|
209
|
+
? {
|
|
210
|
+
address: p.token0.address,
|
|
211
|
+
symbol: p.token0.symbol,
|
|
212
|
+
name: p.token0.name,
|
|
213
|
+
decimals: p.token0.decimals,
|
|
214
|
+
priceUsd: p.token0.market?.price?.value ?? p.token0.price?.value,
|
|
215
|
+
reserve: p.token0Supply,
|
|
216
|
+
}
|
|
217
|
+
: undefined,
|
|
218
|
+
token1: p.token1
|
|
219
|
+
? {
|
|
220
|
+
address: p.token1.address,
|
|
221
|
+
symbol: p.token1.symbol,
|
|
222
|
+
name: p.token1.name,
|
|
223
|
+
decimals: p.token1.decimals,
|
|
224
|
+
priceUsd: p.token1.market?.price?.value ?? p.token1.price?.value,
|
|
225
|
+
reserve: p.token1Supply,
|
|
226
|
+
}
|
|
227
|
+
: undefined,
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
formatHistorical(points) {
|
|
231
|
+
if (!points || points.length === 0)
|
|
232
|
+
return undefined;
|
|
233
|
+
return points.map((pt) => ({ timestamp: pt.timestamp, volumeUsd: pt.value }));
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
exports.PoolByAddressTool = PoolByAddressTool;
|
|
237
|
+
//# sourceMappingURL=PoolByAddressTool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PoolByAddressTool.js","sourceRoot":"","sources":["../../../../src/tools/builtin/pool/PoolByAddressTool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { BaseTool } from '../../BaseTool';
|
|
2
|
+
import type { ToolParameter, UserContext } from '../../../types';
|
|
3
|
+
import { type UniswapServiceConfig } from '../../../services/UniswapService';
|
|
4
|
+
export type PoolDetailToolConfig = UniswapServiceConfig;
|
|
5
|
+
/**
|
|
6
|
+
* Tool: get-pool-detail
|
|
7
|
+
*
|
|
8
|
+
* Always-search-then-detail flow for a single Uniswap V3 pool:
|
|
9
|
+
* 1) call SearchTokens upstream to enumerate pools matching the user's input,
|
|
10
|
+
* 2) filter the search result by token symbols and (optionally) fee tier,
|
|
11
|
+
* 3) if the filter narrows to exactly one pool, fetch its full detail via
|
|
12
|
+
* the V3Pool GraphQL operation,
|
|
13
|
+
* 4) otherwise return the candidates so the LLM can ask the user to pick one.
|
|
14
|
+
*
|
|
15
|
+
* The LLM never passes pool addresses — every address that reaches the detail
|
|
16
|
+
* call is one we observed upstream this turn, which makes pool-address
|
|
17
|
+
* hallucinations structurally impossible.
|
|
18
|
+
*/
|
|
19
|
+
export declare class PoolDetailTool extends BaseTool {
|
|
20
|
+
name: string;
|
|
21
|
+
description: string;
|
|
22
|
+
category: string;
|
|
23
|
+
parameters: ToolParameter[];
|
|
24
|
+
private service;
|
|
25
|
+
constructor(config?: PoolDetailToolConfig);
|
|
26
|
+
protected run(args: Record<string, unknown>, userContext?: UserContext): Promise<{
|
|
27
|
+
error: string;
|
|
28
|
+
_instructions?: undefined;
|
|
29
|
+
pairOrderMatched?: undefined;
|
|
30
|
+
pool?: undefined;
|
|
31
|
+
chain?: undefined;
|
|
32
|
+
reason?: undefined;
|
|
33
|
+
missing?: undefined;
|
|
34
|
+
candidates?: undefined;
|
|
35
|
+
} | {
|
|
36
|
+
_instructions: string;
|
|
37
|
+
pairOrderMatched: string;
|
|
38
|
+
pool: {
|
|
39
|
+
address: string | undefined;
|
|
40
|
+
protocolVersion: import("../../../services/UniswapService").UniswapProtocolVersion | undefined;
|
|
41
|
+
feeTierBps: number | undefined;
|
|
42
|
+
feeTierPercent: number | undefined;
|
|
43
|
+
tvlUsd: number | undefined;
|
|
44
|
+
tvlChange24hPercent: number | undefined;
|
|
45
|
+
volume24hUsd: number | undefined;
|
|
46
|
+
fees24hUsd: number | undefined;
|
|
47
|
+
aprPercent: number | undefined;
|
|
48
|
+
txCount: number | undefined;
|
|
49
|
+
historicalVolumeWeek: {
|
|
50
|
+
timestamp: number | undefined;
|
|
51
|
+
volumeUsd: number | undefined;
|
|
52
|
+
}[] | undefined;
|
|
53
|
+
token0: {
|
|
54
|
+
address: string | undefined;
|
|
55
|
+
symbol: string | undefined;
|
|
56
|
+
name: string | undefined;
|
|
57
|
+
decimals: number | undefined;
|
|
58
|
+
priceUsd: number | undefined;
|
|
59
|
+
reserve: number | undefined;
|
|
60
|
+
isSpam: boolean | undefined;
|
|
61
|
+
safetyLevel: string | undefined;
|
|
62
|
+
} | undefined;
|
|
63
|
+
token1: {
|
|
64
|
+
address: string | undefined;
|
|
65
|
+
symbol: string | undefined;
|
|
66
|
+
name: string | undefined;
|
|
67
|
+
decimals: number | undefined;
|
|
68
|
+
priceUsd: number | undefined;
|
|
69
|
+
reserve: number | undefined;
|
|
70
|
+
isSpam: boolean | undefined;
|
|
71
|
+
safetyLevel: string | undefined;
|
|
72
|
+
} | undefined;
|
|
73
|
+
};
|
|
74
|
+
error?: undefined;
|
|
75
|
+
chain?: undefined;
|
|
76
|
+
reason?: undefined;
|
|
77
|
+
missing?: undefined;
|
|
78
|
+
candidates?: undefined;
|
|
79
|
+
} | {
|
|
80
|
+
_instructions: string;
|
|
81
|
+
chain: string;
|
|
82
|
+
pairOrderMatched: string;
|
|
83
|
+
reason: string;
|
|
84
|
+
missing: string[];
|
|
85
|
+
candidates: {
|
|
86
|
+
address: string | undefined;
|
|
87
|
+
protocolVersion: import("../../../services/UniswapService").UniswapProtocolVersion | undefined;
|
|
88
|
+
feeTierBps: number | undefined;
|
|
89
|
+
feeTierPercent: number | undefined;
|
|
90
|
+
volume24hUsd: number | undefined;
|
|
91
|
+
pair: string | undefined;
|
|
92
|
+
token0: {
|
|
93
|
+
symbol: string | undefined;
|
|
94
|
+
name: string | undefined;
|
|
95
|
+
address: string | undefined;
|
|
96
|
+
} | undefined;
|
|
97
|
+
token1: {
|
|
98
|
+
symbol: string | undefined;
|
|
99
|
+
name: string | undefined;
|
|
100
|
+
address: string | undefined;
|
|
101
|
+
} | undefined;
|
|
102
|
+
}[];
|
|
103
|
+
error?: undefined;
|
|
104
|
+
pool?: undefined;
|
|
105
|
+
}>;
|
|
106
|
+
/**
|
|
107
|
+
* Filter predicate. `mode` controls pair-order matching when both symbols
|
|
108
|
+
* are given:
|
|
109
|
+
* - "ordered" → pool.token0 must match sym0 AND pool.token1 must match sym1
|
|
110
|
+
* - "reversed" → pool.token0 must match sym1 AND pool.token1 must match sym0
|
|
111
|
+
* When sym1 is empty, mode is ignored (single-token contains check).
|
|
112
|
+
*/
|
|
113
|
+
private matchesFilter;
|
|
114
|
+
/** Bidirectional substring match — handles "ETH" vs "WETH", "USDC" vs "USDC.e", etc. */
|
|
115
|
+
private symbolIncludes;
|
|
116
|
+
private describeQuery;
|
|
117
|
+
private candidateReason;
|
|
118
|
+
private missingFields;
|
|
119
|
+
/** Sort candidates by 24h volume desc — the most-traded pool surfaces first. */
|
|
120
|
+
private rankCandidates;
|
|
121
|
+
/** Compact view of a search candidate for the LLM to render as a picker. */
|
|
122
|
+
private formatCandidate;
|
|
123
|
+
/** Trim and enrich the GraphQL payload with derived metrics. */
|
|
124
|
+
private formatPool;
|
|
125
|
+
private formatHistorical;
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=PoolDetailTool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PoolDetailTool.d.ts","sourceRoot":"","sources":["../../../../src/tools/builtin/pool/PoolDetailTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAEL,KAAK,oBAAoB,EAI1B,MAAM,kCAAkC,CAAC;AAE1C,MAAM,MAAM,oBAAoB,GAAG,oBAAoB,CAAC;AAKxD;;;;;;;;;;;;;GAaG;AACH,qBAAa,cAAe,SAAQ,QAAQ;IAC1C,IAAI,SAAqB;IACzB,WAAW,SAWsE;IACjF,QAAQ,SAAqB;IAC7B,UAAU,EAAE,aAAa,EAAE,CAkCzB;IAEF,OAAO,CAAC,OAAO,CAAiB;gBAEpB,MAAM,CAAC,EAAE,oBAAoB;cAKzB,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA2F5E;;;;;;OAMG;IACH,OAAO,CAAC,aAAa;IAqBrB,wFAAwF;IACxF,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,aAAa;IAOrB,gFAAgF;IAChF,OAAO,CAAC,cAAc;IAItB,4EAA4E;IAC5E,OAAO,CAAC,eAAe;IAavB,gEAAgE;IAChE,OAAO,CAAC,UAAU;IAqDlB,OAAO,CAAC,gBAAgB;CAIzB"}
|