keyring-agent-core 0.1.1 → 0.2.1
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/agent/AgentCore.d.ts +37 -1
- package/dist/agent/AgentCore.d.ts.map +1 -1
- package/dist/agent/AgentCore.js +287 -144
- package/dist/agent/AgentCore.js.map +1 -1
- package/dist/agent/QueryRewriter.d.ts +17 -0
- package/dist/agent/QueryRewriter.d.ts.map +1 -1
- package/dist/agent/QueryRewriter.js +48 -4
- package/dist/agent/QueryRewriter.js.map +1 -1
- package/dist/agent/Router.d.ts.map +1 -1
- package/dist/agent/Router.js +73 -35
- package/dist/agent/Router.js.map +1 -1
- package/dist/agent/Subagent.d.ts +17 -0
- package/dist/agent/Subagent.d.ts.map +1 -1
- package/dist/agent/Subagent.js +32 -0
- package/dist/agent/Subagent.js.map +1 -1
- package/dist/agent/chatGraph.d.ts +364 -0
- package/dist/agent/chatGraph.d.ts.map +1 -0
- package/dist/agent/chatGraph.js +184 -0
- package/dist/agent/chatGraph.js.map +1 -0
- package/dist/agent/subagents/AiAgent.d.ts +1 -1
- package/dist/agent/subagents/AiAgent.d.ts.map +1 -1
- package/dist/agent/subagents/AiAgent.js +24 -20
- package/dist/agent/subagents/AiAgent.js.map +1 -1
- package/dist/agent/subagents/NftAgent.d.ts +1 -1
- package/dist/agent/subagents/NftAgent.d.ts.map +1 -1
- package/dist/agent/subagents/NftAgent.js +36 -26
- package/dist/agent/subagents/NftAgent.js.map +1 -1
- package/dist/agent/subagents/PoolSubgraphAgent.d.ts +6 -0
- package/dist/agent/subagents/PoolSubgraphAgent.d.ts.map +1 -0
- package/dist/agent/subagents/PoolSubgraphAgent.js +117 -0
- package/dist/agent/subagents/PoolSubgraphAgent.js.map +1 -0
- package/dist/agent/subagents/TokenAgent.d.ts +1 -1
- package/dist/agent/subagents/TokenAgent.d.ts.map +1 -1
- package/dist/agent/subagents/TokenAgent.js +23 -22
- package/dist/agent/subagents/TokenAgent.js.map +1 -1
- package/dist/agent/subagents/WalletActionAgent.d.ts +6 -0
- package/dist/agent/subagents/WalletActionAgent.d.ts.map +1 -0
- package/dist/agent/subagents/WalletActionAgent.js +55 -0
- package/dist/agent/subagents/WalletActionAgent.js.map +1 -0
- package/dist/agent/subagents/WalletAgent.d.ts +1 -1
- package/dist/agent/subagents/WalletAgent.d.ts.map +1 -1
- package/dist/agent/subagents/WalletAgent.js +18 -17
- package/dist/agent/subagents/WalletAgent.js.map +1 -1
- package/dist/agent/subagents/index.d.ts +23 -3
- package/dist/agent/subagents/index.d.ts.map +1 -1
- package/dist/agent/subagents/index.js +42 -11
- package/dist/agent/subagents/index.js.map +1 -1
- package/dist/constants/abi.d.ts +31 -0
- package/dist/constants/abi.d.ts.map +1 -1
- package/dist/constants/abi.js +24 -1
- package/dist/constants/abi.js.map +1 -1
- package/dist/functions/web3.d.ts +0 -1
- package/dist/functions/web3.d.ts.map +1 -1
- package/dist/functions/web3.js +0 -45
- package/dist/functions/web3.js.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -1
- package/dist/index.js.map +1 -1
- package/dist/llm/GeminiProvider.d.ts.map +1 -1
- package/dist/llm/GeminiProvider.js +115 -34
- package/dist/llm/GeminiProvider.js.map +1 -1
- package/dist/memory/UpstashKnowledgeBase.d.ts +1 -1
- package/dist/memory/UpstashKnowledgeBase.js +1 -1
- package/dist/services/MoralisService.d.ts +3 -25
- package/dist/services/MoralisService.d.ts.map +1 -1
- package/dist/services/MoralisService.js +7 -132
- package/dist/services/MoralisService.js.map +1 -1
- package/dist/services/PantographService.d.ts +61 -1
- package/dist/services/PantographService.d.ts.map +1 -1
- package/dist/services/PantographService.js +264 -12
- package/dist/services/PantographService.js.map +1 -1
- package/dist/services/PoolService.d.ts +1 -4
- package/dist/services/PoolService.d.ts.map +1 -1
- package/dist/services/PoolService.js +18 -40
- package/dist/services/PoolService.js.map +1 -1
- package/dist/services/UniswapSubgraphService.d.ts +144 -0
- package/dist/services/UniswapSubgraphService.d.ts.map +1 -0
- package/dist/services/UniswapSubgraphService.js +606 -0
- package/dist/services/UniswapSubgraphService.js.map +1 -0
- package/dist/services/rpc.d.ts +35 -0
- package/dist/services/rpc.d.ts.map +1 -0
- package/dist/services/rpc.js +110 -0
- package/dist/services/rpc.js.map +1 -0
- package/dist/services/swap/DebridgeAdapter.d.ts +17 -0
- package/dist/services/swap/DebridgeAdapter.d.ts.map +1 -1
- package/dist/services/swap/DebridgeAdapter.js +74 -6
- package/dist/services/swap/DebridgeAdapter.js.map +1 -1
- package/dist/services/swap/SwapServiceFactory.d.ts +1 -0
- package/dist/services/swap/SwapServiceFactory.d.ts.map +1 -1
- package/dist/services/swap/SwapServiceFactory.js +8 -3
- package/dist/services/swap/SwapServiceFactory.js.map +1 -1
- package/dist/tools/builtin/ai/GeminiSearchAiTool.d.ts +36 -0
- package/dist/tools/builtin/ai/GeminiSearchAiTool.d.ts.map +1 -0
- package/dist/tools/builtin/ai/GeminiSearchAiTool.js +91 -0
- package/dist/tools/builtin/ai/GeminiSearchAiTool.js.map +1 -0
- package/dist/tools/builtin/ai/index.d.ts +2 -4
- package/dist/tools/builtin/ai/index.d.ts.map +1 -1
- package/dist/tools/builtin/ai/index.js +3 -5
- package/dist/tools/builtin/ai/index.js.map +1 -1
- package/dist/tools/builtin/index.d.ts +2 -0
- package/dist/tools/builtin/index.d.ts.map +1 -1
- package/dist/tools/builtin/index.js +2 -0
- package/dist/tools/builtin/index.js.map +1 -1
- package/dist/tools/builtin/nft/BaseNftMessageTool.d.ts +35 -0
- package/dist/tools/builtin/nft/BaseNftMessageTool.d.ts.map +1 -0
- package/dist/tools/builtin/nft/BaseNftMessageTool.js +45 -0
- package/dist/tools/builtin/nft/BaseNftMessageTool.js.map +1 -0
- package/dist/tools/builtin/nft/NFTContractInfoTool.d.ts +7 -13
- package/dist/tools/builtin/nft/NFTContractInfoTool.d.ts.map +1 -1
- package/dist/tools/builtin/nft/NFTContractInfoTool.js +8 -43
- package/dist/tools/builtin/nft/NFTContractInfoTool.js.map +1 -1
- package/dist/tools/builtin/nft/NFTMetadataTool.d.ts +7 -113
- package/dist/tools/builtin/nft/NFTMetadataTool.d.ts.map +1 -1
- package/dist/tools/builtin/nft/NFTMetadataTool.js +9 -148
- package/dist/tools/builtin/nft/NFTMetadataTool.js.map +1 -1
- package/dist/tools/builtin/nft/SendNftTool.d.ts +14 -0
- package/dist/tools/builtin/nft/SendNftTool.d.ts.map +1 -0
- package/dist/tools/builtin/nft/SendNftTool.js +20 -0
- package/dist/tools/builtin/nft/SendNftTool.js.map +1 -0
- package/dist/tools/builtin/nft/WalletNFTsTool.d.ts +7 -74
- package/dist/tools/builtin/nft/WalletNFTsTool.d.ts.map +1 -1
- package/dist/tools/builtin/nft/WalletNFTsTool.js +9 -161
- package/dist/tools/builtin/nft/WalletNFTsTool.js.map +1 -1
- package/dist/tools/builtin/pool/EstimatePoolYieldTool.d.ts.map +1 -1
- package/dist/tools/builtin/pool/EstimatePoolYieldTool.js +4 -3
- package/dist/tools/builtin/pool/EstimatePoolYieldTool.js.map +1 -1
- package/dist/tools/builtin/pool/OpenAddLiquidityFormTool.d.ts +1 -0
- package/dist/tools/builtin/pool/OpenAddLiquidityFormTool.d.ts.map +1 -1
- package/dist/tools/builtin/pool/OpenAddLiquidityFormTool.js +8 -5
- package/dist/tools/builtin/pool/OpenAddLiquidityFormTool.js.map +1 -1
- package/dist/tools/builtin/pool/PoolByAddressTool.d.ts.map +1 -1
- package/dist/tools/builtin/pool/PoolByAddressTool.js +4 -3
- package/dist/tools/builtin/pool/PoolByAddressTool.js.map +1 -1
- package/dist/tools/builtin/pool/PoolDetailTool.d.ts.map +1 -1
- package/dist/tools/builtin/pool/PoolDetailTool.js +4 -3
- package/dist/tools/builtin/pool/PoolDetailTool.js.map +1 -1
- package/dist/tools/builtin/pool/PoolSearchTool.d.ts.map +1 -1
- package/dist/tools/builtin/pool/PoolSearchTool.js +4 -3
- package/dist/tools/builtin/pool/PoolSearchTool.js.map +1 -1
- package/dist/tools/builtin/pool/PreviewAddLiquidityTool.d.ts +1 -0
- package/dist/tools/builtin/pool/PreviewAddLiquidityTool.d.ts.map +1 -1
- package/dist/tools/builtin/pool/PreviewAddLiquidityTool.js +5 -3
- package/dist/tools/builtin/pool/PreviewAddLiquidityTool.js.map +1 -1
- package/dist/tools/builtin/pool/TopPoolsTool.d.ts.map +1 -1
- package/dist/tools/builtin/pool/TopPoolsTool.js +4 -3
- package/dist/tools/builtin/pool/TopPoolsTool.js.map +1 -1
- package/dist/tools/builtin/pool-subgraph/SubgraphCoinPoolPairsTool.d.ts +54 -0
- package/dist/tools/builtin/pool-subgraph/SubgraphCoinPoolPairsTool.d.ts.map +1 -0
- package/dist/tools/builtin/pool-subgraph/SubgraphCoinPoolPairsTool.js +98 -0
- package/dist/tools/builtin/pool-subgraph/SubgraphCoinPoolPairsTool.js.map +1 -0
- package/dist/tools/builtin/pool-subgraph/SubgraphPoolByAddressTool.d.ts +63 -0
- package/dist/tools/builtin/pool-subgraph/SubgraphPoolByAddressTool.d.ts.map +1 -0
- package/dist/tools/builtin/pool-subgraph/SubgraphPoolByAddressTool.js +82 -0
- package/dist/tools/builtin/pool-subgraph/SubgraphPoolByAddressTool.js.map +1 -0
- package/dist/tools/builtin/pool-subgraph/SubgraphPoolByPositionIdTool.d.ts +79 -0
- package/dist/tools/builtin/pool-subgraph/SubgraphPoolByPositionIdTool.d.ts.map +1 -0
- package/dist/tools/builtin/pool-subgraph/SubgraphPoolByPositionIdTool.js +97 -0
- package/dist/tools/builtin/pool-subgraph/SubgraphPoolByPositionIdTool.js.map +1 -0
- package/dist/tools/builtin/pool-subgraph/SubgraphPoolSearchTool.d.ts +77 -0
- package/dist/tools/builtin/pool-subgraph/SubgraphPoolSearchTool.d.ts.map +1 -0
- package/dist/tools/builtin/pool-subgraph/SubgraphPoolSearchTool.js +190 -0
- package/dist/tools/builtin/pool-subgraph/SubgraphPoolSearchTool.js.map +1 -0
- package/dist/tools/builtin/pool-subgraph/SubgraphPositionDetailTool.d.ts +107 -0
- package/dist/tools/builtin/pool-subgraph/SubgraphPositionDetailTool.d.ts.map +1 -0
- package/dist/tools/builtin/pool-subgraph/SubgraphPositionDetailTool.js +92 -0
- package/dist/tools/builtin/pool-subgraph/SubgraphPositionDetailTool.js.map +1 -0
- package/dist/tools/builtin/pool-subgraph/SubgraphTrendingPoolsTool.d.ts +56 -0
- package/dist/tools/builtin/pool-subgraph/SubgraphTrendingPoolsTool.d.ts.map +1 -0
- package/dist/tools/builtin/pool-subgraph/SubgraphTrendingPoolsTool.js +94 -0
- package/dist/tools/builtin/pool-subgraph/SubgraphTrendingPoolsTool.js.map +1 -0
- package/dist/tools/builtin/pool-subgraph/index.d.ts +13 -0
- package/dist/tools/builtin/pool-subgraph/index.d.ts.map +1 -0
- package/dist/tools/builtin/pool-subgraph/index.js +18 -0
- package/dist/tools/builtin/pool-subgraph/index.js.map +1 -0
- package/dist/tools/builtin/token/TokenAnalyticsTool.d.ts.map +1 -1
- package/dist/tools/builtin/token/TokenAnalyticsTool.js +4 -3
- package/dist/tools/builtin/token/TokenAnalyticsTool.js.map +1 -1
- package/dist/tools/builtin/token/TokenHoldersTool.d.ts.map +1 -1
- package/dist/tools/builtin/token/TokenHoldersTool.js +4 -3
- package/dist/tools/builtin/token/TokenHoldersTool.js.map +1 -1
- package/dist/tools/builtin/token/TokenInfoTool.d.ts +6 -2
- package/dist/tools/builtin/token/TokenInfoTool.d.ts.map +1 -1
- package/dist/tools/builtin/token/TokenInfoTool.js +66 -8
- package/dist/tools/builtin/token/TokenInfoTool.js.map +1 -1
- package/dist/tools/builtin/token/TokenScoreTool.d.ts.map +1 -1
- package/dist/tools/builtin/token/TokenScoreTool.js +4 -3
- package/dist/tools/builtin/token/TokenScoreTool.js.map +1 -1
- package/dist/tools/builtin/token/TopGainersTool.d.ts +10 -19
- package/dist/tools/builtin/token/TopGainersTool.d.ts.map +1 -1
- package/dist/tools/builtin/token/TopGainersTool.js +44 -54
- package/dist/tools/builtin/token/TopGainersTool.js.map +1 -1
- package/dist/tools/builtin/token/TopLosersTool.d.ts.map +1 -1
- package/dist/tools/builtin/token/TopLosersTool.js +3 -2
- package/dist/tools/builtin/token/TopLosersTool.js.map +1 -1
- package/dist/tools/builtin/token/TrendingTokensTool.d.ts +1 -1
- package/dist/tools/builtin/token/TrendingTokensTool.d.ts.map +1 -1
- package/dist/tools/builtin/token/TrendingTokensTool.js +20 -12
- package/dist/tools/builtin/token/TrendingTokensTool.js.map +1 -1
- package/dist/tools/builtin/token/index.d.ts +0 -2
- package/dist/tools/builtin/token/index.d.ts.map +1 -1
- package/dist/tools/builtin/token/index.js +1 -3
- package/dist/tools/builtin/token/index.js.map +1 -1
- package/dist/tools/builtin/wallet/TransactionByHashTool.d.ts.map +1 -1
- package/dist/tools/builtin/wallet/TransactionByHashTool.js +4 -3
- package/dist/tools/builtin/wallet/TransactionByHashTool.js.map +1 -1
- package/dist/tools/builtin/wallet/WalletApprovalsTool.d.ts.map +1 -1
- package/dist/tools/builtin/wallet/WalletApprovalsTool.js +4 -3
- package/dist/tools/builtin/wallet/WalletApprovalsTool.js.map +1 -1
- package/dist/tools/builtin/wallet/WalletDefiPositionsTool.d.ts.map +1 -1
- package/dist/tools/builtin/wallet/WalletDefiPositionsTool.js +4 -3
- package/dist/tools/builtin/wallet/WalletDefiPositionsTool.js.map +1 -1
- package/dist/tools/builtin/wallet/WalletDefiProtocolPositionsTool.d.ts.map +1 -1
- package/dist/tools/builtin/wallet/WalletDefiProtocolPositionsTool.js +4 -3
- package/dist/tools/builtin/wallet/WalletDefiProtocolPositionsTool.js.map +1 -1
- package/dist/tools/builtin/wallet/WalletDefiSummaryTool.d.ts.map +1 -1
- package/dist/tools/builtin/wallet/WalletDefiSummaryTool.js +4 -3
- package/dist/tools/builtin/wallet/WalletDefiSummaryTool.js.map +1 -1
- package/dist/tools/builtin/wallet/WalletHistoryTool.d.ts.map +1 -1
- package/dist/tools/builtin/wallet/WalletHistoryTool.js +5 -4
- package/dist/tools/builtin/wallet/WalletHistoryTool.js.map +1 -1
- package/dist/tools/builtin/wallet/WalletNetWorthTool.js +1 -1
- package/dist/tools/builtin/wallet/WalletNetWorthTool.js.map +1 -1
- package/dist/tools/builtin/wallet/WalletNftTransfersTool.d.ts.map +1 -1
- package/dist/tools/builtin/wallet/WalletNftTransfersTool.js +5 -4
- package/dist/tools/builtin/wallet/WalletNftTransfersTool.js.map +1 -1
- package/dist/tools/builtin/wallet/WalletPnlSummaryTool.d.ts.map +1 -1
- package/dist/tools/builtin/wallet/WalletPnlSummaryTool.js +4 -3
- package/dist/tools/builtin/wallet/WalletPnlSummaryTool.js.map +1 -1
- package/dist/tools/builtin/wallet/WalletPnlTool.d.ts.map +1 -1
- package/dist/tools/builtin/wallet/WalletPnlTool.js +4 -3
- package/dist/tools/builtin/wallet/WalletPnlTool.js.map +1 -1
- package/dist/tools/builtin/wallet/WalletTokenBalancesTool.d.ts.map +1 -1
- package/dist/tools/builtin/wallet/WalletTokenBalancesTool.js +4 -3
- package/dist/tools/builtin/wallet/WalletTokenBalancesTool.js.map +1 -1
- package/dist/tools/builtin/wallet/WalletTokenTransfersTool.d.ts.map +1 -1
- package/dist/tools/builtin/wallet/WalletTokenTransfersTool.js +5 -4
- package/dist/tools/builtin/wallet/WalletTokenTransfersTool.js.map +1 -1
- package/dist/tools/builtin/wallet/index.d.ts +3 -0
- package/dist/tools/builtin/wallet/index.d.ts.map +1 -1
- package/dist/tools/builtin/wallet/index.js +5 -1
- package/dist/tools/builtin/wallet/index.js.map +1 -1
- package/dist/tools/builtin/wallet-action/ApproveTokenTool.d.ts +25 -0
- package/dist/tools/builtin/wallet-action/ApproveTokenTool.d.ts.map +1 -0
- package/dist/tools/builtin/wallet-action/ApproveTokenTool.js +98 -0
- package/dist/tools/builtin/wallet-action/ApproveTokenTool.js.map +1 -0
- package/dist/tools/builtin/wallet-action/BaseWalletActionTool.d.ts +211 -0
- package/dist/tools/builtin/wallet-action/BaseWalletActionTool.d.ts.map +1 -0
- package/dist/tools/builtin/wallet-action/BaseWalletActionTool.js +499 -0
- package/dist/tools/builtin/wallet-action/BaseWalletActionTool.js.map +1 -0
- package/dist/tools/builtin/wallet-action/BuyTokenTool.d.ts +240 -0
- package/dist/tools/builtin/wallet-action/BuyTokenTool.d.ts.map +1 -0
- package/dist/tools/builtin/wallet-action/BuyTokenTool.js +1257 -0
- package/dist/tools/builtin/wallet-action/BuyTokenTool.js.map +1 -0
- package/dist/tools/builtin/wallet-action/SendNativeTool.d.ts +41 -0
- package/dist/tools/builtin/wallet-action/SendNativeTool.d.ts.map +1 -0
- package/dist/tools/builtin/wallet-action/SendNativeTool.js +127 -0
- package/dist/tools/builtin/wallet-action/SendNativeTool.js.map +1 -0
- package/dist/tools/builtin/wallet-action/SendTokenTool.d.ts +63 -0
- package/dist/tools/builtin/wallet-action/SendTokenTool.d.ts.map +1 -0
- package/dist/tools/builtin/wallet-action/SendTokenTool.js +294 -0
- package/dist/tools/builtin/wallet-action/SendTokenTool.js.map +1 -0
- package/dist/tools/builtin/wallet-action/SwapTokenTool.d.ts +247 -0
- package/dist/tools/builtin/wallet-action/SwapTokenTool.d.ts.map +1 -0
- package/dist/tools/builtin/wallet-action/SwapTokenTool.js +1258 -0
- package/dist/tools/builtin/wallet-action/SwapTokenTool.js.map +1 -0
- package/dist/tools/builtin/wallet-action/UnwrapNativeTool.d.ts +20 -0
- package/dist/tools/builtin/wallet-action/UnwrapNativeTool.d.ts.map +1 -0
- package/dist/tools/builtin/wallet-action/UnwrapNativeTool.js +36 -0
- package/dist/tools/builtin/wallet-action/UnwrapNativeTool.js.map +1 -0
- package/dist/tools/builtin/wallet-action/WrapNativeTool.d.ts +23 -0
- package/dist/tools/builtin/wallet-action/WrapNativeTool.d.ts.map +1 -0
- package/dist/tools/builtin/wallet-action/WrapNativeTool.js +54 -0
- package/dist/tools/builtin/wallet-action/WrapNativeTool.js.map +1 -0
- package/dist/tools/builtin/wallet-action/amountSpec.d.ts +62 -0
- package/dist/tools/builtin/wallet-action/amountSpec.d.ts.map +1 -0
- package/dist/tools/builtin/wallet-action/amountSpec.js +93 -0
- package/dist/tools/builtin/wallet-action/amountSpec.js.map +1 -0
- package/dist/tools/builtin/wallet-action/gasReserve.d.ts +42 -0
- package/dist/tools/builtin/wallet-action/gasReserve.d.ts.map +1 -0
- package/dist/tools/builtin/wallet-action/gasReserve.js +103 -0
- package/dist/tools/builtin/wallet-action/gasReserve.js.map +1 -0
- package/dist/tools/builtin/wallet-action/index.d.ts +9 -0
- package/dist/tools/builtin/wallet-action/index.d.ts.map +1 -0
- package/dist/tools/builtin/wallet-action/index.js +20 -0
- package/dist/tools/builtin/wallet-action/index.js.map +1 -0
- package/dist/tools/chainResolver.d.ts +98 -0
- package/dist/tools/chainResolver.d.ts.map +1 -0
- package/dist/tools/chainResolver.js +302 -0
- package/dist/tools/chainResolver.js.map +1 -0
- package/dist/types/index.d.ts +218 -7
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +5 -2
- package/dist/tools/builtin/ai/MoralisCortexTool.d.ts +0 -33
- package/dist/tools/builtin/ai/MoralisCortexTool.d.ts.map +0 -1
- package/dist/tools/builtin/ai/MoralisCortexTool.js +0 -76
- package/dist/tools/builtin/ai/MoralisCortexTool.js.map +0 -1
- package/dist/tools/builtin/ai/SolanaCortexTool.d.ts +0 -22
- package/dist/tools/builtin/ai/SolanaCortexTool.d.ts.map +0 -1
- package/dist/tools/builtin/ai/SolanaCortexTool.js +0 -80
- package/dist/tools/builtin/ai/SolanaCortexTool.js.map +0 -1
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SubgraphPoolByPositionIdTool = void 0;
|
|
4
|
+
const BaseTool_1 = require("../../BaseTool");
|
|
5
|
+
const UniswapSubgraphService_1 = require("../../../services/UniswapSubgraphService");
|
|
6
|
+
const SubgraphPoolSearchTool_1 = require("./SubgraphPoolSearchTool");
|
|
7
|
+
/**
|
|
8
|
+
* Tool: subgraph-pool-by-position-id
|
|
9
|
+
*
|
|
10
|
+
* Resolve a Uniswap V3 NFT position id to its underlying pool (without the
|
|
11
|
+
* deposit / fee history). Useful when the user asks "what pool is position
|
|
12
|
+
* 12345 in?" or refers to a pool by its position id colloquially.
|
|
13
|
+
*/
|
|
14
|
+
class SubgraphPoolByPositionIdTool extends BaseTool_1.BaseTool {
|
|
15
|
+
name = 'subgraph-pool-by-position-id';
|
|
16
|
+
description = 'Return the pool underlying a Uniswap V3 NFT position id. ' +
|
|
17
|
+
'Use when the user wants the pool stats for a numeric id WITHOUT the deposit/withdraw/fee history ' +
|
|
18
|
+
'(e.g. "which pool is position 962961 in?", "show the pool of id 12345"). ' +
|
|
19
|
+
'For full position history use subgraph-position-detail instead.';
|
|
20
|
+
category = 'blockchain-data';
|
|
21
|
+
noSuggestions = true;
|
|
22
|
+
parameters = [
|
|
23
|
+
{
|
|
24
|
+
name: 'positionId',
|
|
25
|
+
type: 'string',
|
|
26
|
+
description: 'Numeric Uniswap V3 NFT position id as a string.',
|
|
27
|
+
required: true,
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
name: 'chains',
|
|
31
|
+
type: 'array',
|
|
32
|
+
items: { type: 'string' },
|
|
33
|
+
description: 'Hex chain IDs: "0x1" Ethereum, "0xa" Optimism, "0x38" BSC, "0x89" Polygon, "0x2105" Base, "0xa4b1" Arbitrum, "0xa86a" Avalanche. ' +
|
|
34
|
+
'Pass [] when the user did not name a chain — the tool defaults to the connected chain.',
|
|
35
|
+
required: false,
|
|
36
|
+
default: [],
|
|
37
|
+
},
|
|
38
|
+
];
|
|
39
|
+
service;
|
|
40
|
+
constructor(config) {
|
|
41
|
+
super();
|
|
42
|
+
this.service = new UniswapSubgraphService_1.UniswapSubgraphService(config);
|
|
43
|
+
}
|
|
44
|
+
async run(args, userContext) {
|
|
45
|
+
const positionId = typeof args.positionId === 'string' ? args.positionId.trim() : '';
|
|
46
|
+
if (!/^\d+$/.test(positionId)) {
|
|
47
|
+
return { error: 'positionId must be a numeric string.' };
|
|
48
|
+
}
|
|
49
|
+
const requested = (Array.isArray(args.chains) ? args.chains : []).filter((c) => typeof c === 'string' && c.trim().length > 0);
|
|
50
|
+
const unsupported = requested.filter((c) => !this.service.isSupported(c));
|
|
51
|
+
const supported = requested.filter((c) => this.service.isSupported(c)).map((c) => this.service.resolveChain(c));
|
|
52
|
+
if (requested.length > 0 && supported.length === 0) {
|
|
53
|
+
return {
|
|
54
|
+
_instructions: 'Requested chains are not supported. List the supported chains.',
|
|
55
|
+
unsupportedChains: unsupported,
|
|
56
|
+
supportedChains: this.service.listSupportedChains(),
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
const chains = supported.length > 0
|
|
60
|
+
? supported
|
|
61
|
+
: this.service.isSupported(userContext?.chain)
|
|
62
|
+
? [this.service.resolveChain(userContext?.chain)]
|
|
63
|
+
: ['0x1'];
|
|
64
|
+
const results = await Promise.allSettled(chains.map((chain) => this.service.getPoolByPositionId({ positionId, chain })));
|
|
65
|
+
const pool = results.map((r) => (r.status === 'fulfilled' ? r.value : null)).find((p) => p != null);
|
|
66
|
+
if (!pool) {
|
|
67
|
+
return {
|
|
68
|
+
_instructions: 'No pool found for this position id on the chosen chains. Ask the user to verify the id or chain.',
|
|
69
|
+
positionId,
|
|
70
|
+
chains,
|
|
71
|
+
found: false,
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
return {
|
|
75
|
+
_instructions: 'Prefix with: "According to the latest data from Subgraph Uniswap V3," (translate naturally; keep "Subgraph" as-is). ' +
|
|
76
|
+
'Show the pool of that position: pair, fee %, TVL, 24h volume, APR. Mention the position id. ' +
|
|
77
|
+
'End the response with the provided uniswapUrl as a clickable markdown link, e.g. "[View on Uniswap](uniswapUrl)". Never omit it. Do not invent URLs.',
|
|
78
|
+
positionId,
|
|
79
|
+
pool: {
|
|
80
|
+
pair: pool.pair,
|
|
81
|
+
poolAddress: pool.poolAddress,
|
|
82
|
+
chain: pool.chain,
|
|
83
|
+
feeTierBps: pool.feeTierBps,
|
|
84
|
+
feeTierPercent: pool.feeTierPercent,
|
|
85
|
+
tvlUsd: pool.tvl,
|
|
86
|
+
volume24hUsd: pool.volume24hUsd,
|
|
87
|
+
fees24hUsd: pool.fees24hUsd,
|
|
88
|
+
apr: pool.apr,
|
|
89
|
+
token0: pool.token0,
|
|
90
|
+
token1: pool.token1,
|
|
91
|
+
uniswapUrl: (0, SubgraphPoolSearchTool_1.buildUniswapPoolUrl)(pool),
|
|
92
|
+
},
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
exports.SubgraphPoolByPositionIdTool = SubgraphPoolByPositionIdTool;
|
|
97
|
+
//# sourceMappingURL=SubgraphPoolByPositionIdTool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SubgraphPoolByPositionIdTool.js","sourceRoot":"","sources":["../../../../src/tools/builtin/pool-subgraph/SubgraphPoolByPositionIdTool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { BaseTool } from '../../BaseTool';
|
|
2
|
+
import type { ToolParameter, UserContext } from '../../../types';
|
|
3
|
+
import { type SubgraphServiceConfig, type SubgraphSort } from '../../../services/UniswapSubgraphService';
|
|
4
|
+
export type SubgraphPoolSearchToolConfig = SubgraphServiceConfig;
|
|
5
|
+
/**
|
|
6
|
+
* Tool: subgraph-search-pools
|
|
7
|
+
*
|
|
8
|
+
* Search Uniswap V3 pools across one or more EVM chains via The Graph
|
|
9
|
+
* subgraphs. Handles single-token, two-token, and no-token queries. Used
|
|
10
|
+
* for intents: search_pool, best_pool, safe_pool, compare_pool, new_pool.
|
|
11
|
+
*
|
|
12
|
+
* APR comes from DefiLlama Yields (uniswap-v3 only) for accuracy.
|
|
13
|
+
*/
|
|
14
|
+
export declare class SubgraphPoolSearchTool extends BaseTool {
|
|
15
|
+
name: string;
|
|
16
|
+
description: string;
|
|
17
|
+
category: string;
|
|
18
|
+
noSuggestions: boolean;
|
|
19
|
+
parameters: ToolParameter[];
|
|
20
|
+
private service;
|
|
21
|
+
constructor(config?: SubgraphPoolSearchToolConfig);
|
|
22
|
+
protected run(args: Record<string, unknown>, userContext?: UserContext): Promise<{
|
|
23
|
+
_instructions: string;
|
|
24
|
+
unsupportedChains: string[];
|
|
25
|
+
supportedChains: string[];
|
|
26
|
+
pools: never[];
|
|
27
|
+
count: number;
|
|
28
|
+
tokens?: undefined;
|
|
29
|
+
chains?: undefined;
|
|
30
|
+
sortBy?: undefined;
|
|
31
|
+
filters?: undefined;
|
|
32
|
+
} | {
|
|
33
|
+
_instructions: string;
|
|
34
|
+
tokens: string[];
|
|
35
|
+
chains: string[];
|
|
36
|
+
unsupportedChains: string[];
|
|
37
|
+
sortBy: SubgraphSort;
|
|
38
|
+
filters: {
|
|
39
|
+
minTVL: number | undefined;
|
|
40
|
+
maxTVL: number | undefined;
|
|
41
|
+
minAPR: number | undefined;
|
|
42
|
+
maxAPR: number | undefined;
|
|
43
|
+
feeTier: number | undefined;
|
|
44
|
+
};
|
|
45
|
+
count: number;
|
|
46
|
+
pools: {
|
|
47
|
+
pair: string;
|
|
48
|
+
poolAddress: string;
|
|
49
|
+
chain: string;
|
|
50
|
+
feeTierBps: number;
|
|
51
|
+
feeTierPercent: number;
|
|
52
|
+
tvlUsd: number;
|
|
53
|
+
volume24hUsd: number;
|
|
54
|
+
fees24hUsd: number;
|
|
55
|
+
apr: number | null;
|
|
56
|
+
token0: {
|
|
57
|
+
symbol: string;
|
|
58
|
+
address: string;
|
|
59
|
+
name?: string;
|
|
60
|
+
};
|
|
61
|
+
token1: {
|
|
62
|
+
symbol: string;
|
|
63
|
+
address: string;
|
|
64
|
+
name?: string;
|
|
65
|
+
};
|
|
66
|
+
uniswapUrl: string;
|
|
67
|
+
}[];
|
|
68
|
+
supportedChains?: undefined;
|
|
69
|
+
}>;
|
|
70
|
+
private formatPool;
|
|
71
|
+
}
|
|
72
|
+
export declare function buildUniswapPoolUrl(p: {
|
|
73
|
+
chain: string;
|
|
74
|
+
poolAddress: string;
|
|
75
|
+
}): string;
|
|
76
|
+
export declare const UNISWAP_CHAIN_SLUG: Record<string, string>;
|
|
77
|
+
//# sourceMappingURL=SubgraphPoolSearchTool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SubgraphPoolSearchTool.d.ts","sourceRoot":"","sources":["../../../../src/tools/builtin/pool-subgraph/SubgraphPoolSearchTool.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,qBAAqB,EAE1B,KAAK,YAAY,EAClB,MAAM,0CAA0C,CAAC;AAElD,MAAM,MAAM,4BAA4B,GAAG,qBAAqB,CAAC;AAIjE;;;;;;;;GAQG;AACH,qBAAa,sBAAuB,SAAQ,QAAQ;IAClD,IAAI,SAA2B;IAC/B,WAAW,SAK6H;IACxI,QAAQ,SAAqB;IAC7B,aAAa,UAAQ;IACrB,UAAU,EAAE,aAAa,EAAE,CAiEzB;IAEF,OAAO,CAAC,OAAO,CAAyB;gBAE5B,MAAM,CAAC,EAAE,4BAA4B;cAKjC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA+E5E,OAAO,CAAC,UAAU;CAgBnB;AAED,wBAAgB,mBAAmB,CAAC,CAAC,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAGrF;AAED,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAQrD,CAAC"}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UNISWAP_CHAIN_SLUG = exports.SubgraphPoolSearchTool = void 0;
|
|
4
|
+
exports.buildUniswapPoolUrl = buildUniswapPoolUrl;
|
|
5
|
+
const BaseTool_1 = require("../../BaseTool");
|
|
6
|
+
const UniswapSubgraphService_1 = require("../../../services/UniswapSubgraphService");
|
|
7
|
+
const ALLOWED_SORT = ['tvl', 'volume', 'apr', 'fee', 'liquidity'];
|
|
8
|
+
/**
|
|
9
|
+
* Tool: subgraph-search-pools
|
|
10
|
+
*
|
|
11
|
+
* Search Uniswap V3 pools across one or more EVM chains via The Graph
|
|
12
|
+
* subgraphs. Handles single-token, two-token, and no-token queries. Used
|
|
13
|
+
* for intents: search_pool, best_pool, safe_pool, compare_pool, new_pool.
|
|
14
|
+
*
|
|
15
|
+
* APR comes from DefiLlama Yields (uniswap-v3 only) for accuracy.
|
|
16
|
+
*/
|
|
17
|
+
class SubgraphPoolSearchTool extends BaseTool_1.BaseTool {
|
|
18
|
+
name = 'subgraph-search-pools';
|
|
19
|
+
description = 'Search Uniswap V3 liquidity pools via The Graph subgraphs by token symbol(s) on one or more chains. ' +
|
|
20
|
+
'Use for: "find ETH/USDC pools on Base", "show OP pools", "stablecoin pools on Arbitrum", "best USDC pool". ' +
|
|
21
|
+
'Returns pools with pair, TVL, 24h volume, fee tier (%), APR (DefiLlama-enriched), and liquidity rank. ' +
|
|
22
|
+
'Supports TVL/APR/fee filters and sort by tvl, volume, apr, fee, or liquidity. ' +
|
|
23
|
+
'Supported chains: Ethereum (0x1), Arbitrum (0xa4b1), Polygon (0x89), BSC (0x38), Base (0x2105), Optimism (0xa), Avalanche (0xa86a).';
|
|
24
|
+
category = 'blockchain-data';
|
|
25
|
+
noSuggestions = true;
|
|
26
|
+
parameters = [
|
|
27
|
+
{
|
|
28
|
+
name: 'tokens',
|
|
29
|
+
type: 'array',
|
|
30
|
+
items: { type: 'string' },
|
|
31
|
+
description: 'Token symbols to match. 0 tokens = top pools by chosen sort. 1 token = pools containing it. ' +
|
|
32
|
+
'2 tokens = pools with that exact pair (both orderings tried). Wrapped variants (WETH↔ETH, WBTC↔BTC) auto-handled.',
|
|
33
|
+
required: false,
|
|
34
|
+
default: [],
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
name: 'chains',
|
|
38
|
+
type: 'array',
|
|
39
|
+
items: { type: 'string' },
|
|
40
|
+
description: 'Hex chain IDs: "0x1" Ethereum, "0xa" Optimism, "0x38" BSC, "0x89" Polygon, "0x2105" Base, "0xa4b1" Arbitrum, "0xa86a" Avalanche. ' +
|
|
41
|
+
'Pass [] when the user did not name a chain — the tool defaults to the connected chain.',
|
|
42
|
+
required: false,
|
|
43
|
+
default: [],
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
name: 'sortBy',
|
|
47
|
+
type: 'string',
|
|
48
|
+
description: 'Sort key: "tvl" (default), "volume", "apr", "fee" (low-to-high), or "liquidity".',
|
|
49
|
+
required: false,
|
|
50
|
+
default: 'tvl',
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
name: 'minTVL',
|
|
54
|
+
type: 'number',
|
|
55
|
+
description: 'Minimum TVL in USD.',
|
|
56
|
+
required: false,
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
name: 'maxTVL',
|
|
60
|
+
type: 'number',
|
|
61
|
+
description: 'Maximum TVL in USD.',
|
|
62
|
+
required: false,
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
name: 'minAPR',
|
|
66
|
+
type: 'number',
|
|
67
|
+
description: 'Minimum APR percentage (e.g. 5 for 5%).',
|
|
68
|
+
required: false,
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
name: 'maxAPR',
|
|
72
|
+
type: 'number',
|
|
73
|
+
description: 'Maximum APR percentage.',
|
|
74
|
+
required: false,
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
name: 'feeTier',
|
|
78
|
+
type: 'number',
|
|
79
|
+
description: 'Fee tier in basis points: 100, 500, 3000, or 10000.',
|
|
80
|
+
required: false,
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
name: 'limit',
|
|
84
|
+
type: 'number',
|
|
85
|
+
description: 'Max pools to return after sort/filter. Default 5, max 20.',
|
|
86
|
+
required: false,
|
|
87
|
+
default: 5,
|
|
88
|
+
},
|
|
89
|
+
];
|
|
90
|
+
service;
|
|
91
|
+
constructor(config) {
|
|
92
|
+
super();
|
|
93
|
+
this.service = new UniswapSubgraphService_1.UniswapSubgraphService(config);
|
|
94
|
+
}
|
|
95
|
+
async run(args, userContext) {
|
|
96
|
+
const tokens = (Array.isArray(args.tokens) ? args.tokens : [])
|
|
97
|
+
.filter((t) => typeof t === 'string' && t.trim().length > 0)
|
|
98
|
+
.map((t) => t.trim().toUpperCase());
|
|
99
|
+
const requested = (Array.isArray(args.chains) ? args.chains : []).filter((c) => typeof c === 'string' && c.trim().length > 0);
|
|
100
|
+
const unsupported = requested.filter((c) => !this.service.isSupported(c));
|
|
101
|
+
const supported = requested.filter((c) => this.service.isSupported(c)).map((c) => this.service.resolveChain(c));
|
|
102
|
+
const chainsToQuery = supported.length > 0
|
|
103
|
+
? supported
|
|
104
|
+
: this.service.isSupported(userContext?.chain)
|
|
105
|
+
? [this.service.resolveChain(userContext?.chain)]
|
|
106
|
+
: ['0x1'];
|
|
107
|
+
const sortBy = (typeof args.sortBy === 'string' && ALLOWED_SORT.includes(args.sortBy) ? args.sortBy : 'tvl');
|
|
108
|
+
const filters = {
|
|
109
|
+
minTVL: typeof args.minTVL === 'number' ? args.minTVL : undefined,
|
|
110
|
+
maxTVL: typeof args.maxTVL === 'number' ? args.maxTVL : undefined,
|
|
111
|
+
minAPR: typeof args.minAPR === 'number' ? args.minAPR : undefined,
|
|
112
|
+
maxAPR: typeof args.maxAPR === 'number' ? args.maxAPR : undefined,
|
|
113
|
+
feeTier: typeof args.feeTier === 'number' ? args.feeTier : undefined,
|
|
114
|
+
};
|
|
115
|
+
const limit = typeof args.limit === 'number' && Number.isFinite(args.limit) && args.limit > 0
|
|
116
|
+
? Math.min(Math.floor(args.limit), 20)
|
|
117
|
+
: 5;
|
|
118
|
+
// If user only requested unsupported chains, do NOT silently fall back.
|
|
119
|
+
if (requested.length > 0 && supported.length === 0) {
|
|
120
|
+
return {
|
|
121
|
+
_instructions: 'The user requested chains we do not support via The Graph subgraph. Politely list the unsupported chains and the supported chains. Do not show any pool data.',
|
|
122
|
+
unsupportedChains: unsupported,
|
|
123
|
+
supportedChains: this.service.listSupportedChains(),
|
|
124
|
+
pools: [],
|
|
125
|
+
count: 0,
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
const results = await Promise.allSettled(chainsToQuery.map((chain) => this.service.searchPools({ tokens, chain, sortBy, filters })));
|
|
129
|
+
let pools = results.flatMap((r) => (r.status === 'fulfilled' ? r.value : []));
|
|
130
|
+
if (sortBy === 'apr') {
|
|
131
|
+
pools.sort((a, b) => (b.apr ?? 0) - (a.apr ?? 0));
|
|
132
|
+
}
|
|
133
|
+
else if (sortBy === 'tvl') {
|
|
134
|
+
pools.sort((a, b) => b.tvl - a.tvl);
|
|
135
|
+
}
|
|
136
|
+
else if (sortBy === 'volume') {
|
|
137
|
+
pools.sort((a, b) => b.volume24hUsd - a.volume24hUsd);
|
|
138
|
+
}
|
|
139
|
+
else if (sortBy === 'fee') {
|
|
140
|
+
pools.sort((a, b) => a.feeTierBps - b.feeTierBps);
|
|
141
|
+
}
|
|
142
|
+
pools = pools.slice(0, limit);
|
|
143
|
+
return {
|
|
144
|
+
_instructions: 'Prefix the answer with: "According to the latest data from Subgraph Uniswap V3," (translate naturally into the user language; keep the word "Subgraph" as-is). ' +
|
|
145
|
+
'Then list the pools with: pair (e.g. USDC/WETH), fee tier (%), TVL (USD), 24h volume (USD), APR (%). ' +
|
|
146
|
+
'Format USD human-readably ($12.5M, $450K). Mention chain and sort metric briefly. ' +
|
|
147
|
+
'If a pool has no APR (null), skip the APR field rather than showing zero. ' +
|
|
148
|
+
'For EACH pool, render the provided uniswapUrl as a clickable markdown link — e.g. wrap the pair as "[USDC/WETH](uniswapUrl)" or append "[View on Uniswap](uniswapUrl)". Never omit this link. Do not invent URLs. ' +
|
|
149
|
+
'If unsupportedChains is non-empty, mention them once at the end.',
|
|
150
|
+
tokens,
|
|
151
|
+
chains: chainsToQuery,
|
|
152
|
+
unsupportedChains: unsupported,
|
|
153
|
+
sortBy,
|
|
154
|
+
filters,
|
|
155
|
+
count: pools.length,
|
|
156
|
+
pools: pools.map((p) => this.formatPool(p)),
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
formatPool(p) {
|
|
160
|
+
return {
|
|
161
|
+
pair: p.pair,
|
|
162
|
+
poolAddress: p.poolAddress,
|
|
163
|
+
chain: p.chain,
|
|
164
|
+
feeTierBps: p.feeTierBps,
|
|
165
|
+
feeTierPercent: p.feeTierPercent,
|
|
166
|
+
tvlUsd: p.tvl,
|
|
167
|
+
volume24hUsd: p.volume24hUsd,
|
|
168
|
+
fees24hUsd: p.fees24hUsd,
|
|
169
|
+
apr: p.apr,
|
|
170
|
+
token0: p.token0,
|
|
171
|
+
token1: p.token1,
|
|
172
|
+
uniswapUrl: buildUniswapPoolUrl(p),
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
exports.SubgraphPoolSearchTool = SubgraphPoolSearchTool;
|
|
177
|
+
function buildUniswapPoolUrl(p) {
|
|
178
|
+
const slug = exports.UNISWAP_CHAIN_SLUG[p.chain] || p.chain;
|
|
179
|
+
return `https://app.uniswap.org/explore/pools/${slug}/${p.poolAddress}`;
|
|
180
|
+
}
|
|
181
|
+
exports.UNISWAP_CHAIN_SLUG = {
|
|
182
|
+
ethereum: 'ethereum',
|
|
183
|
+
arbitrum: 'arbitrum',
|
|
184
|
+
polygon: 'polygon',
|
|
185
|
+
bsc: 'bnb',
|
|
186
|
+
base: 'base',
|
|
187
|
+
optimism: 'optimism',
|
|
188
|
+
avalanche: 'avalanche',
|
|
189
|
+
};
|
|
190
|
+
//# sourceMappingURL=SubgraphPoolSearchTool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SubgraphPoolSearchTool.js","sourceRoot":"","sources":["../../../../src/tools/builtin/pool-subgraph/SubgraphPoolSearchTool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { BaseTool } from '../../BaseTool';
|
|
2
|
+
import type { ToolParameter, UserContext } from '../../../types';
|
|
3
|
+
import { type SubgraphServiceConfig } from '../../../services/UniswapSubgraphService';
|
|
4
|
+
export type SubgraphPositionDetailToolConfig = SubgraphServiceConfig;
|
|
5
|
+
/**
|
|
6
|
+
* Tool: subgraph-position-detail
|
|
7
|
+
*
|
|
8
|
+
* Returns full position detail (deposits/withdrawals/collected fees + the
|
|
9
|
+
* underlying pool) for a Uniswap V3 NFT position id (numeric string).
|
|
10
|
+
* Maps to intent `position_detail` ("tell me about position 962961").
|
|
11
|
+
*/
|
|
12
|
+
export declare class SubgraphPositionDetailTool extends BaseTool {
|
|
13
|
+
name: string;
|
|
14
|
+
description: string;
|
|
15
|
+
category: string;
|
|
16
|
+
noSuggestions: boolean;
|
|
17
|
+
parameters: ToolParameter[];
|
|
18
|
+
private service;
|
|
19
|
+
constructor(config?: SubgraphPositionDetailToolConfig);
|
|
20
|
+
protected run(args: Record<string, unknown>, userContext?: UserContext): Promise<{
|
|
21
|
+
error: string;
|
|
22
|
+
_instructions?: undefined;
|
|
23
|
+
unsupportedChains?: undefined;
|
|
24
|
+
supportedChains?: undefined;
|
|
25
|
+
positionId?: undefined;
|
|
26
|
+
chains?: undefined;
|
|
27
|
+
found?: undefined;
|
|
28
|
+
position?: undefined;
|
|
29
|
+
pool?: undefined;
|
|
30
|
+
} | {
|
|
31
|
+
_instructions: string;
|
|
32
|
+
unsupportedChains: string[];
|
|
33
|
+
supportedChains: string[];
|
|
34
|
+
error?: undefined;
|
|
35
|
+
positionId?: undefined;
|
|
36
|
+
chains?: undefined;
|
|
37
|
+
found?: undefined;
|
|
38
|
+
position?: undefined;
|
|
39
|
+
pool?: undefined;
|
|
40
|
+
} | {
|
|
41
|
+
_instructions: string;
|
|
42
|
+
positionId: string;
|
|
43
|
+
chains: string[];
|
|
44
|
+
found: boolean;
|
|
45
|
+
error?: undefined;
|
|
46
|
+
unsupportedChains?: undefined;
|
|
47
|
+
supportedChains?: undefined;
|
|
48
|
+
position?: undefined;
|
|
49
|
+
pool?: undefined;
|
|
50
|
+
} | {
|
|
51
|
+
_instructions: string;
|
|
52
|
+
positionId: string;
|
|
53
|
+
position: {
|
|
54
|
+
uniswapPositionUrl: string;
|
|
55
|
+
positionId: string;
|
|
56
|
+
poolAddress: string;
|
|
57
|
+
pair: string;
|
|
58
|
+
token0: {
|
|
59
|
+
symbol: string;
|
|
60
|
+
address: string;
|
|
61
|
+
};
|
|
62
|
+
token1: {
|
|
63
|
+
symbol: string;
|
|
64
|
+
address: string;
|
|
65
|
+
};
|
|
66
|
+
feeTierBps: number;
|
|
67
|
+
feeTierPercent: number;
|
|
68
|
+
chain: string;
|
|
69
|
+
liquidity: string;
|
|
70
|
+
depositedToken0: string;
|
|
71
|
+
depositedToken1: string;
|
|
72
|
+
withdrawnToken0: string;
|
|
73
|
+
withdrawnToken1: string;
|
|
74
|
+
collectedFeesToken0: string;
|
|
75
|
+
collectedFeesToken1: string;
|
|
76
|
+
};
|
|
77
|
+
pool: {
|
|
78
|
+
uniswapUrl: string;
|
|
79
|
+
poolAddress: string;
|
|
80
|
+
pair: string;
|
|
81
|
+
token0: {
|
|
82
|
+
symbol: string;
|
|
83
|
+
address: string;
|
|
84
|
+
name?: string;
|
|
85
|
+
};
|
|
86
|
+
token1: {
|
|
87
|
+
symbol: string;
|
|
88
|
+
address: string;
|
|
89
|
+
name?: string;
|
|
90
|
+
};
|
|
91
|
+
tvl: number;
|
|
92
|
+
volume24hUsd: number;
|
|
93
|
+
fees24hUsd: number;
|
|
94
|
+
apr: number | null;
|
|
95
|
+
feeTierBps: number;
|
|
96
|
+
feeTierPercent: number;
|
|
97
|
+
liquidity: string;
|
|
98
|
+
chain: string;
|
|
99
|
+
};
|
|
100
|
+
error?: undefined;
|
|
101
|
+
unsupportedChains?: undefined;
|
|
102
|
+
supportedChains?: undefined;
|
|
103
|
+
chains?: undefined;
|
|
104
|
+
found?: undefined;
|
|
105
|
+
}>;
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=SubgraphPositionDetailTool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SubgraphPositionDetailTool.d.ts","sourceRoot":"","sources":["../../../../src/tools/builtin/pool-subgraph/SubgraphPositionDetailTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAA0B,KAAK,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AAG9G,MAAM,MAAM,gCAAgC,GAAG,qBAAqB,CAAC;AAErE;;;;;;GAMG;AACH,qBAAa,0BAA2B,SAAQ,QAAQ;IACtD,IAAI,SAA8B;IAClC,WAAW,SAI+D;IAC1E,QAAQ,SAAqB;IAC7B,aAAa,UAAQ;IACrB,UAAU,EAAE,aAAa,EAAE,CAiBzB;IAEF,OAAO,CAAC,OAAO,CAAyB;gBAE5B,MAAM,CAAC,EAAE,gCAAgC;cAKrC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBA1BvD,CAAC;;;;;oBAGL,CAAC;;;;;;;;;;;;;;;;;CAmFnB"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SubgraphPositionDetailTool = void 0;
|
|
4
|
+
const BaseTool_1 = require("../../BaseTool");
|
|
5
|
+
const UniswapSubgraphService_1 = require("../../../services/UniswapSubgraphService");
|
|
6
|
+
const SubgraphPoolSearchTool_1 = require("./SubgraphPoolSearchTool");
|
|
7
|
+
/**
|
|
8
|
+
* Tool: subgraph-position-detail
|
|
9
|
+
*
|
|
10
|
+
* Returns full position detail (deposits/withdrawals/collected fees + the
|
|
11
|
+
* underlying pool) for a Uniswap V3 NFT position id (numeric string).
|
|
12
|
+
* Maps to intent `position_detail` ("tell me about position 962961").
|
|
13
|
+
*/
|
|
14
|
+
class SubgraphPositionDetailTool extends BaseTool_1.BaseTool {
|
|
15
|
+
name = 'subgraph-position-detail';
|
|
16
|
+
description = 'Look up a Uniswap V3 liquidity position by its numeric NFT id (e.g. 962961) on one or more chains via The Graph subgraphs. ' +
|
|
17
|
+
'Returns the position (deposited/withdrawn token amounts, collected fees, liquidity) AND its underlying pool (pair, fee tier, TVL, 24h volume, APR). ' +
|
|
18
|
+
'Use when the user names a numeric id with phrases like: "position 12345", "pool id 962961", "tell me about position 962961". ' +
|
|
19
|
+
"Does NOT support the user's wallet-wide LP list — only a specific id.";
|
|
20
|
+
category = 'blockchain-data';
|
|
21
|
+
noSuggestions = true;
|
|
22
|
+
parameters = [
|
|
23
|
+
{
|
|
24
|
+
name: 'positionId',
|
|
25
|
+
type: 'string',
|
|
26
|
+
description: 'Numeric Uniswap V3 NFT position id as a string (e.g. "962961").',
|
|
27
|
+
required: true,
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
name: 'chains',
|
|
31
|
+
type: 'array',
|
|
32
|
+
items: { type: 'string' },
|
|
33
|
+
description: 'Hex chain IDs: "0x1" Ethereum, "0xa" Optimism, "0x38" BSC, "0x89" Polygon, "0x2105" Base, "0xa4b1" Arbitrum, "0xa86a" Avalanche. ' +
|
|
34
|
+
'Pass [] when the user did not name a chain — the tool defaults to the connected chain.',
|
|
35
|
+
required: false,
|
|
36
|
+
default: [],
|
|
37
|
+
},
|
|
38
|
+
];
|
|
39
|
+
service;
|
|
40
|
+
constructor(config) {
|
|
41
|
+
super();
|
|
42
|
+
this.service = new UniswapSubgraphService_1.UniswapSubgraphService(config);
|
|
43
|
+
}
|
|
44
|
+
async run(args, userContext) {
|
|
45
|
+
const positionId = typeof args.positionId === 'string' ? args.positionId.trim() : '';
|
|
46
|
+
if (!/^\d+$/.test(positionId)) {
|
|
47
|
+
return { error: 'positionId must be a numeric string (Uniswap V3 NFT id).' };
|
|
48
|
+
}
|
|
49
|
+
const requested = (Array.isArray(args.chains) ? args.chains : []).filter((c) => typeof c === 'string' && c.trim().length > 0);
|
|
50
|
+
const unsupported = requested.filter((c) => !this.service.isSupported(c));
|
|
51
|
+
const supported = requested.filter((c) => this.service.isSupported(c)).map((c) => this.service.resolveChain(c));
|
|
52
|
+
if (requested.length > 0 && supported.length === 0) {
|
|
53
|
+
return {
|
|
54
|
+
_instructions: 'User asked about a position on chains we do not support. List unsupported + supported chains.',
|
|
55
|
+
unsupportedChains: unsupported,
|
|
56
|
+
supportedChains: this.service.listSupportedChains(),
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
const chains = supported.length > 0
|
|
60
|
+
? supported
|
|
61
|
+
: this.service.isSupported(userContext?.chain)
|
|
62
|
+
? [this.service.resolveChain(userContext?.chain)]
|
|
63
|
+
: ['0x1'];
|
|
64
|
+
const results = await Promise.allSettled(chains.map((chain) => this.service.getPositionDetail({ positionId, chain })));
|
|
65
|
+
const hit = results.map((r) => (r.status === 'fulfilled' ? r.value : null)).find((v) => v != null);
|
|
66
|
+
if (!hit) {
|
|
67
|
+
return {
|
|
68
|
+
_instructions: 'No position with this id was found on the chosen chains. Suggest the user double-check the id or specify another chain.',
|
|
69
|
+
positionId,
|
|
70
|
+
chains,
|
|
71
|
+
found: false,
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
const slug = SubgraphPoolSearchTool_1.UNISWAP_CHAIN_SLUG[hit.position.chain] || hit.position.chain;
|
|
75
|
+
return {
|
|
76
|
+
_instructions: 'Prefix with: "According to the latest data from Subgraph Uniswap V3," (translate naturally; keep "Subgraph" as-is). ' +
|
|
77
|
+
'Show the pair, chain, fee tier (%), deposited/withdrawn/collected fees for each token, plus pool stats (TVL, 24h volume, APR). ' +
|
|
78
|
+
'End the response with TWO clickable markdown links from the data: position.uniswapPositionUrl as "[View position on Uniswap](uniswapPositionUrl)" and pool.uniswapUrl as "[View pool on Uniswap](uniswapUrl)". Never omit them. Do not invent URLs.',
|
|
79
|
+
positionId,
|
|
80
|
+
position: {
|
|
81
|
+
...hit.position,
|
|
82
|
+
uniswapPositionUrl: `https://app.uniswap.org/positions/v3/${slug}/${hit.position.positionId}`,
|
|
83
|
+
},
|
|
84
|
+
pool: {
|
|
85
|
+
...hit.pool,
|
|
86
|
+
uniswapUrl: (0, SubgraphPoolSearchTool_1.buildUniswapPoolUrl)(hit.pool),
|
|
87
|
+
},
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
exports.SubgraphPositionDetailTool = SubgraphPositionDetailTool;
|
|
92
|
+
//# sourceMappingURL=SubgraphPositionDetailTool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SubgraphPositionDetailTool.js","sourceRoot":"","sources":["../../../../src/tools/builtin/pool-subgraph/SubgraphPositionDetailTool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { BaseTool } from '../../BaseTool';
|
|
2
|
+
import type { ToolParameter, UserContext } from '../../../types';
|
|
3
|
+
import { type SubgraphServiceConfig } from '../../../services/UniswapSubgraphService';
|
|
4
|
+
export type SubgraphTrendingPoolsToolConfig = SubgraphServiceConfig;
|
|
5
|
+
/**
|
|
6
|
+
* Tool: subgraph-trending-pools
|
|
7
|
+
*
|
|
8
|
+
* Returns Uniswap V3 pools sorted by 24h volume on the chosen chain(s).
|
|
9
|
+
* Maps to intent: trending_pool ("hot pools", "most active", "trending").
|
|
10
|
+
*/
|
|
11
|
+
export declare class SubgraphTrendingPoolsTool extends BaseTool {
|
|
12
|
+
name: string;
|
|
13
|
+
description: string;
|
|
14
|
+
category: string;
|
|
15
|
+
noSuggestions: boolean;
|
|
16
|
+
parameters: ToolParameter[];
|
|
17
|
+
private service;
|
|
18
|
+
constructor(config?: SubgraphTrendingPoolsToolConfig);
|
|
19
|
+
protected run(args: Record<string, unknown>, userContext?: UserContext): Promise<{
|
|
20
|
+
_instructions: string;
|
|
21
|
+
unsupportedChains: string[];
|
|
22
|
+
supportedChains: string[];
|
|
23
|
+
pools: never[];
|
|
24
|
+
count: number;
|
|
25
|
+
chains?: undefined;
|
|
26
|
+
} | {
|
|
27
|
+
_instructions: string;
|
|
28
|
+
chains: string[];
|
|
29
|
+
unsupportedChains: string[];
|
|
30
|
+
count: number;
|
|
31
|
+
pools: {
|
|
32
|
+
pair: string;
|
|
33
|
+
poolAddress: string;
|
|
34
|
+
chain: string;
|
|
35
|
+
feeTierBps: number;
|
|
36
|
+
feeTierPercent: number;
|
|
37
|
+
tvlUsd: number;
|
|
38
|
+
volume24hUsd: number;
|
|
39
|
+
fees24hUsd: number;
|
|
40
|
+
apr: number | null;
|
|
41
|
+
token0: {
|
|
42
|
+
symbol: string;
|
|
43
|
+
address: string;
|
|
44
|
+
name?: string;
|
|
45
|
+
};
|
|
46
|
+
token1: {
|
|
47
|
+
symbol: string;
|
|
48
|
+
address: string;
|
|
49
|
+
name?: string;
|
|
50
|
+
};
|
|
51
|
+
uniswapUrl: string;
|
|
52
|
+
}[];
|
|
53
|
+
supportedChains?: undefined;
|
|
54
|
+
}>;
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=SubgraphTrendingPoolsTool.d.ts.map
|