@general-liquidity/gordon-cli 0.75.5 → 0.75.6
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/gordon.js +359 -26
- package/package.json +1 -1
package/dist/gordon.js
CHANGED
|
@@ -195785,6 +195785,9 @@ var init_hyperliquid3 = __esm(() => {
|
|
|
195785
195785
|
});
|
|
195786
195786
|
|
|
195787
195787
|
// src/infra/uniswap/types.ts
|
|
195788
|
+
function isUniswapXRouting(routing) {
|
|
195789
|
+
return ["DUTCH_V2", "DUTCH_V3", "DUTCH_LIMIT", "PRIORITY"].includes(routing);
|
|
195790
|
+
}
|
|
195788
195791
|
var NATIVE_TOKEN = "0x0000000000000000000000000000000000000000", GAS_BUFFER_PERCENT = 0.15, WRAPPED_NATIVE, USDC_ADDRESSES, SUPPORTED_CHAIN_IDS, CHAIN_NAMES;
|
|
195789
195792
|
var init_types10 = __esm(() => {
|
|
195790
195793
|
WRAPPED_NATIVE = {
|
|
@@ -195805,13 +195808,14 @@ var init_types10 = __esm(() => {
|
|
|
195805
195808
|
42161: "0xaf88d065e77c8cC2239327C5EDb3A432268e5831",
|
|
195806
195809
|
43114: "0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E"
|
|
195807
195810
|
};
|
|
195808
|
-
SUPPORTED_CHAIN_IDS = [1, 10, 56, 130, 137, 196, 324, 480, 1868, 8453, 42161, 42220, 43114, 81457, 7777777];
|
|
195811
|
+
SUPPORTED_CHAIN_IDS = [1, 10, 56, 130, 137, 143, 196, 324, 480, 1868, 8453, 42161, 42220, 43114, 81457, 7777777];
|
|
195809
195812
|
CHAIN_NAMES = {
|
|
195810
195813
|
1: "Ethereum",
|
|
195811
195814
|
10: "Optimism",
|
|
195812
195815
|
56: "BNB Chain",
|
|
195813
195816
|
130: "Unichain",
|
|
195814
195817
|
137: "Polygon",
|
|
195818
|
+
143: "Monad",
|
|
195815
195819
|
196: "X Layer",
|
|
195816
195820
|
324: "zkSync",
|
|
195817
195821
|
480: "World Chain",
|
|
@@ -197148,11 +197152,16 @@ class UniswapAdapter {
|
|
|
197148
197152
|
this.localOrders.set(orderId, order);
|
|
197149
197153
|
const meta3 = {
|
|
197150
197154
|
_unsignedTx: swapTx.swap,
|
|
197151
|
-
_quoteTimestamp: quoteTimestamp
|
|
197155
|
+
_quoteTimestamp: quoteTimestamp,
|
|
197156
|
+
_routing: quote.routing
|
|
197152
197157
|
};
|
|
197153
197158
|
if (approvalResult.approval) {
|
|
197154
197159
|
meta3._approvalTx = approvalResult.approval;
|
|
197155
197160
|
}
|
|
197161
|
+
if (isUniswapXRouting(quote.routing) && quote.permitData) {
|
|
197162
|
+
meta3._permitData = quote.permitData;
|
|
197163
|
+
meta3._isUniswapX = true;
|
|
197164
|
+
}
|
|
197156
197165
|
if (swapTx.txFailureReasons?.length) {
|
|
197157
197166
|
meta3._txFailureReasons = swapTx.txFailureReasons;
|
|
197158
197167
|
}
|
|
@@ -287117,26 +287126,52 @@ async function dexScreenerFetch(path6) {
|
|
|
287117
287126
|
}
|
|
287118
287127
|
return await res.json();
|
|
287119
287128
|
}
|
|
287120
|
-
async function
|
|
287121
|
-
const data = await dexScreenerFetch(`/token-pairs/v1
|
|
287122
|
-
return (data.pairs ?? []).filter((p) => p.chainId ===
|
|
287129
|
+
async function getDexPairs(chain, tokenAddress) {
|
|
287130
|
+
const data = await dexScreenerFetch(`/token-pairs/v1/${chain}/${tokenAddress}`);
|
|
287131
|
+
return (data.pairs ?? []).filter((p) => p.chainId === chain);
|
|
287123
287132
|
}
|
|
287124
|
-
async function
|
|
287133
|
+
async function searchDexPairs(query, chain, dex) {
|
|
287125
287134
|
const data = await dexScreenerFetch(`/latest/dex/search?q=${encodeURIComponent(query)}`);
|
|
287126
|
-
|
|
287127
|
-
|
|
287128
|
-
|
|
287135
|
+
let pairs = data.pairs ?? [];
|
|
287136
|
+
if (chain)
|
|
287137
|
+
pairs = pairs.filter((p) => p.chainId === chain);
|
|
287138
|
+
if (dex)
|
|
287139
|
+
pairs = pairs.filter((p) => p.dexId === dex);
|
|
287140
|
+
return pairs;
|
|
287141
|
+
}
|
|
287142
|
+
async function getDexTokensBatch(chain, addresses) {
|
|
287129
287143
|
if (addresses.length === 0)
|
|
287130
287144
|
return [];
|
|
287131
287145
|
const batch = addresses.slice(0, 30).join(",");
|
|
287132
|
-
const data = await dexScreenerFetch(`/tokens/v1
|
|
287133
|
-
return (data.pairs ?? []).filter((p) => p.chainId ===
|
|
287146
|
+
const data = await dexScreenerFetch(`/tokens/v1/${chain}/${batch}`);
|
|
287147
|
+
return (data.pairs ?? []).filter((p) => p.chainId === chain);
|
|
287134
287148
|
}
|
|
287135
|
-
async function
|
|
287149
|
+
async function getNewTokens(chain) {
|
|
287136
287150
|
const data = await dexScreenerFetch(`/token-profiles/latest/v1`);
|
|
287137
|
-
|
|
287151
|
+
if (!chain)
|
|
287152
|
+
return data ?? [];
|
|
287153
|
+
return (data ?? []).filter((t2) => t2.chainId === chain);
|
|
287154
|
+
}
|
|
287155
|
+
async function getBoostedTokens(chain) {
|
|
287156
|
+
const data = await dexScreenerFetch(`/token-boosts/top/v1`);
|
|
287157
|
+
if (!chain)
|
|
287158
|
+
return data ?? [];
|
|
287159
|
+
return (data ?? []).filter((t2) => t2.chainId === chain);
|
|
287160
|
+
}
|
|
287161
|
+
async function getBasePairs(tokenAddress) {
|
|
287162
|
+
return getDexPairs("base", tokenAddress);
|
|
287163
|
+
}
|
|
287164
|
+
async function searchBasePairs(query) {
|
|
287165
|
+
return searchDexPairs(query, "base");
|
|
287166
|
+
}
|
|
287167
|
+
async function getBaseTokensBatch(addresses) {
|
|
287168
|
+
return getDexTokensBatch("base", addresses);
|
|
287169
|
+
}
|
|
287170
|
+
async function getNewBaseTokens() {
|
|
287171
|
+
return getNewTokens("base");
|
|
287138
287172
|
}
|
|
287139
287173
|
var DEXSCREENER_BASE = "https://api.dexscreener.com";
|
|
287174
|
+
var init_dexscreener = () => {};
|
|
287140
287175
|
|
|
287141
287176
|
// src/infra/base/signals.ts
|
|
287142
287177
|
async function detectWhaleTransfers(opts = {}) {
|
|
@@ -287247,6 +287282,7 @@ async function detectNewListings(opts = {}) {
|
|
|
287247
287282
|
return signals;
|
|
287248
287283
|
}
|
|
287249
287284
|
var init_signals = __esm(() => {
|
|
287285
|
+
init_dexscreener();
|
|
287250
287286
|
init_types14();
|
|
287251
287287
|
});
|
|
287252
287288
|
|
|
@@ -287254,6 +287290,7 @@ var init_signals = __esm(() => {
|
|
|
287254
287290
|
var init_base4 = __esm(() => {
|
|
287255
287291
|
init_registry4();
|
|
287256
287292
|
init_chain2();
|
|
287293
|
+
init_dexscreener();
|
|
287257
287294
|
init_signals();
|
|
287258
287295
|
init_types14();
|
|
287259
287296
|
});
|
|
@@ -1121084,6 +1121121,7 @@ var init_base_signals = __esm(() => {
|
|
|
1121084
1121121
|
init_tools();
|
|
1121085
1121122
|
init_zod();
|
|
1121086
1121123
|
init_signals();
|
|
1121124
|
+
init_dexscreener();
|
|
1121087
1121125
|
scanBaseWhaleTransfersTool = createTool({
|
|
1121088
1121126
|
id: "scan_base_whale_transfers",
|
|
1121089
1121127
|
description: "Scan for large token transfers (whale movements) on Base L2. " + "Detects big USDC, WETH, and other major token movements. " + "Requires BASESCAN_API_KEY. " + "Use when user asks 'any whale activity on Base', 'large transfers', 'who is moving big money on Base'.",
|
|
@@ -1121871,6 +1121909,282 @@ var init_uniswap_data = __esm(() => {
|
|
|
1121871
1121909
|
};
|
|
1121872
1121910
|
});
|
|
1121873
1121911
|
|
|
1121912
|
+
// src/infra/agents/tools/dex-search.ts
|
|
1121913
|
+
var searchDexPairsTool, getBoostedTokensTool, dexSearchTools;
|
|
1121914
|
+
var init_dex_search = __esm(() => {
|
|
1121915
|
+
init_tools();
|
|
1121916
|
+
init_zod();
|
|
1121917
|
+
init_dexscreener();
|
|
1121918
|
+
searchDexPairsTool = createTool({
|
|
1121919
|
+
id: "search_dex_pairs",
|
|
1121920
|
+
description: "Search for DEX trading pairs across any chain using DexScreener. " + "Works on Ethereum, Base, Arbitrum, Optimism, Polygon, BSC, Avalanche, and more. " + "Filter by chain and/or DEX. No API key needed. " + "Use when user asks about DEX pairs on chains other than Base, or wants to compare " + "pairs across chains. For Base-only queries, prefer get_base_dex_pairs.",
|
|
1121921
|
+
inputSchema: exports_external.object({
|
|
1121922
|
+
query: exports_external.string().describe("Search term: token symbol (e.g., 'UNI'), pair (e.g., 'WETH/USDC'), or token address (0x...)"),
|
|
1121923
|
+
chain: exports_external.string().optional().describe("DexScreener chain ID: 'ethereum', 'base', 'arbitrum', 'optimism', 'polygon', 'bsc', 'avalanche', 'unichain'. Omit for all chains."),
|
|
1121924
|
+
dex: exports_external.string().optional().describe("DEX filter: 'uniswap', 'sushiswap', 'aerodrome', 'curve', etc. Omit for all DEXs.")
|
|
1121925
|
+
}),
|
|
1121926
|
+
outputSchema: exports_external.object({
|
|
1121927
|
+
pairs: exports_external.array(exports_external.object({
|
|
1121928
|
+
chain: exports_external.string(),
|
|
1121929
|
+
pairAddress: exports_external.string(),
|
|
1121930
|
+
dex: exports_external.string(),
|
|
1121931
|
+
baseToken: exports_external.string(),
|
|
1121932
|
+
quoteToken: exports_external.string(),
|
|
1121933
|
+
priceUsd: exports_external.string(),
|
|
1121934
|
+
volumeH24: exports_external.number(),
|
|
1121935
|
+
liquidityUsd: exports_external.number(),
|
|
1121936
|
+
priceChangeH24: exports_external.number(),
|
|
1121937
|
+
marketCap: exports_external.number().nullable(),
|
|
1121938
|
+
url: exports_external.string()
|
|
1121939
|
+
})).optional(),
|
|
1121940
|
+
count: exports_external.number().optional(),
|
|
1121941
|
+
error: exports_external.string().optional()
|
|
1121942
|
+
}),
|
|
1121943
|
+
execute: async ({ query, chain, dex }) => {
|
|
1121944
|
+
try {
|
|
1121945
|
+
const isAddress4 = /^0x[a-fA-F0-9]{40}$/.test(query);
|
|
1121946
|
+
let pairs;
|
|
1121947
|
+
if (isAddress4 && chain) {
|
|
1121948
|
+
pairs = await getDexPairs(chain, query);
|
|
1121949
|
+
if (dex)
|
|
1121950
|
+
pairs = pairs.filter((p) => p.dexId === dex);
|
|
1121951
|
+
} else {
|
|
1121952
|
+
pairs = await searchDexPairs(query, chain, dex);
|
|
1121953
|
+
}
|
|
1121954
|
+
return {
|
|
1121955
|
+
count: pairs.length,
|
|
1121956
|
+
pairs: pairs.slice(0, 25).map((p) => ({
|
|
1121957
|
+
chain: p.chainId,
|
|
1121958
|
+
pairAddress: p.pairAddress,
|
|
1121959
|
+
dex: p.dexId,
|
|
1121960
|
+
baseToken: `${p.baseToken.symbol} (${p.baseToken.address})`,
|
|
1121961
|
+
quoteToken: `${p.quoteToken.symbol} (${p.quoteToken.address})`,
|
|
1121962
|
+
priceUsd: p.priceUsd,
|
|
1121963
|
+
volumeH24: p.volume?.h24 ?? 0,
|
|
1121964
|
+
liquidityUsd: p.liquidity?.usd ?? 0,
|
|
1121965
|
+
priceChangeH24: p.priceChange?.h24 ?? 0,
|
|
1121966
|
+
marketCap: p.marketCap ?? null,
|
|
1121967
|
+
url: p.url
|
|
1121968
|
+
}))
|
|
1121969
|
+
};
|
|
1121970
|
+
} catch (error48) {
|
|
1121971
|
+
return { error: `Failed to search DEX pairs: ${error48.message}` };
|
|
1121972
|
+
}
|
|
1121973
|
+
}
|
|
1121974
|
+
});
|
|
1121975
|
+
getBoostedTokensTool = createTool({
|
|
1121976
|
+
id: "get_boosted_tokens",
|
|
1121977
|
+
description: "Get currently promoted/boosted tokens from DexScreener across all chains. " + "Shows tokens with active promotions \u2014 can indicate marketing spend or community interest. " + "Optionally filter by chain. No API key needed.",
|
|
1121978
|
+
inputSchema: exports_external.object({
|
|
1121979
|
+
chain: exports_external.string().optional().describe("Filter to a specific chain: 'ethereum', 'base', 'arbitrum', etc. Omit for all chains.")
|
|
1121980
|
+
}),
|
|
1121981
|
+
outputSchema: exports_external.object({
|
|
1121982
|
+
tokens: exports_external.array(exports_external.object({
|
|
1121983
|
+
chain: exports_external.string(),
|
|
1121984
|
+
tokenAddress: exports_external.string(),
|
|
1121985
|
+
url: exports_external.string(),
|
|
1121986
|
+
description: exports_external.string().optional()
|
|
1121987
|
+
})).optional(),
|
|
1121988
|
+
count: exports_external.number().optional(),
|
|
1121989
|
+
error: exports_external.string().optional()
|
|
1121990
|
+
}),
|
|
1121991
|
+
execute: async ({ chain }) => {
|
|
1121992
|
+
try {
|
|
1121993
|
+
const tokens = await getBoostedTokens(chain);
|
|
1121994
|
+
return {
|
|
1121995
|
+
count: tokens.length,
|
|
1121996
|
+
tokens: tokens.slice(0, 30).map((t3) => ({
|
|
1121997
|
+
chain: t3.chainId,
|
|
1121998
|
+
tokenAddress: t3.tokenAddress,
|
|
1121999
|
+
url: t3.url,
|
|
1122000
|
+
description: t3.description
|
|
1122001
|
+
}))
|
|
1122002
|
+
};
|
|
1122003
|
+
} catch (error48) {
|
|
1122004
|
+
return { error: `Failed to get boosted tokens: ${error48.message}` };
|
|
1122005
|
+
}
|
|
1122006
|
+
}
|
|
1122007
|
+
});
|
|
1122008
|
+
dexSearchTools = {
|
|
1122009
|
+
search_dex_pairs: searchDexPairsTool,
|
|
1122010
|
+
get_boosted_tokens: getBoostedTokensTool
|
|
1122011
|
+
};
|
|
1122012
|
+
});
|
|
1122013
|
+
|
|
1122014
|
+
// src/infra/defillama/client.ts
|
|
1122015
|
+
async function llamaFetch(base4, path6) {
|
|
1122016
|
+
const url2 = `${base4}${path6}`;
|
|
1122017
|
+
const res = await fetch(url2, { signal: AbortSignal.timeout(15000) });
|
|
1122018
|
+
if (!res.ok) {
|
|
1122019
|
+
throw new Error(`DefiLlama API error: ${res.status} ${res.statusText}`);
|
|
1122020
|
+
}
|
|
1122021
|
+
return await res.json();
|
|
1122022
|
+
}
|
|
1122023
|
+
async function getAllPools() {
|
|
1122024
|
+
const cached2 = poolsCache.get("all");
|
|
1122025
|
+
if (cached2)
|
|
1122026
|
+
return cached2;
|
|
1122027
|
+
const resp = await llamaFetch(YIELDS_BASE, "/pools");
|
|
1122028
|
+
const pools = resp.data ?? [];
|
|
1122029
|
+
poolsCache.set("all", pools);
|
|
1122030
|
+
return pools;
|
|
1122031
|
+
}
|
|
1122032
|
+
async function getUniswapPoolYields(chain, symbol16) {
|
|
1122033
|
+
const allPools = await getAllPools();
|
|
1122034
|
+
let pools = allPools.filter((p) => p.project === "uniswap-v3" || p.project === "uniswap-v4");
|
|
1122035
|
+
if (chain) {
|
|
1122036
|
+
const defillamaChain = DEFILLAMA_CHAINS[chain.toLowerCase()] ?? chain;
|
|
1122037
|
+
pools = pools.filter((p) => p.chain === defillamaChain);
|
|
1122038
|
+
}
|
|
1122039
|
+
if (symbol16) {
|
|
1122040
|
+
const sym = symbol16.toUpperCase();
|
|
1122041
|
+
pools = pools.filter((p) => p.symbol.toUpperCase().includes(sym));
|
|
1122042
|
+
}
|
|
1122043
|
+
pools.sort((a2, b) => b.tvlUsd - a2.tvlUsd);
|
|
1122044
|
+
return pools;
|
|
1122045
|
+
}
|
|
1122046
|
+
async function getTopYieldPools(chain, limit = 20, minTvl = 1e5) {
|
|
1122047
|
+
const allPools = await getAllPools();
|
|
1122048
|
+
let pools = allPools.filter((p) => p.tvlUsd >= minTvl && p.apy > 0);
|
|
1122049
|
+
if (chain) {
|
|
1122050
|
+
const defillamaChain = DEFILLAMA_CHAINS[chain.toLowerCase()] ?? chain;
|
|
1122051
|
+
pools = pools.filter((p) => p.chain === defillamaChain);
|
|
1122052
|
+
}
|
|
1122053
|
+
pools.sort((a2, b) => b.apy - a2.apy);
|
|
1122054
|
+
return pools.slice(0, limit);
|
|
1122055
|
+
}
|
|
1122056
|
+
var YIELDS_BASE = "https://yields.llama.fi", DEFILLAMA_CHAINS, poolsCache, priceCache;
|
|
1122057
|
+
var init_client11 = __esm(() => {
|
|
1122058
|
+
DEFILLAMA_CHAINS = {
|
|
1122059
|
+
ethereum: "Ethereum",
|
|
1122060
|
+
base: "Base",
|
|
1122061
|
+
arbitrum: "Arbitrum",
|
|
1122062
|
+
optimism: "Optimism",
|
|
1122063
|
+
polygon: "Polygon",
|
|
1122064
|
+
bsc: "BSC",
|
|
1122065
|
+
avalanche: "Avalanche",
|
|
1122066
|
+
celo: "Celo",
|
|
1122067
|
+
blast: "Blast",
|
|
1122068
|
+
unichain: "Unichain"
|
|
1122069
|
+
};
|
|
1122070
|
+
poolsCache = new Cache({ defaultTtl: 5 * 60 * 1000 });
|
|
1122071
|
+
priceCache = new Cache({ defaultTtl: 2 * 60 * 1000 });
|
|
1122072
|
+
});
|
|
1122073
|
+
|
|
1122074
|
+
// src/infra/agents/tools/defillama-yields.ts
|
|
1122075
|
+
var getUniswapYieldsTool, getTopYieldsTool, defillamaYieldTools;
|
|
1122076
|
+
var init_defillama_yields = __esm(() => {
|
|
1122077
|
+
init_tools();
|
|
1122078
|
+
init_zod();
|
|
1122079
|
+
init_client11();
|
|
1122080
|
+
getUniswapYieldsTool = createTool({
|
|
1122081
|
+
id: "get_uniswap_pool_yields",
|
|
1122082
|
+
description: "Get current APY, TVL, and volume data for Uniswap V3/V4 pools from DefiLlama. " + "Shows base APY (fees), reward APY, 7d/30d trends, impermanent loss risk, and pool TVL. " + "Use for yield farming analysis, comparing fee tiers, and LP profitability assessment. " + "Supports all chains: Ethereum, Base, Arbitrum, Optimism, Polygon, etc.",
|
|
1122083
|
+
inputSchema: exports_external.object({
|
|
1122084
|
+
chain: exports_external.string().optional().describe("Chain name (e.g., 'ethereum', 'base', 'arbitrum'). Omit for all chains."),
|
|
1122085
|
+
symbol: exports_external.string().optional().describe("Token pair filter (e.g., 'WETH-USDC', 'USDC'). Partial match."),
|
|
1122086
|
+
limit: exports_external.number().min(1).max(50).default(15).describe("Max pools to return")
|
|
1122087
|
+
}),
|
|
1122088
|
+
outputSchema: exports_external.object({
|
|
1122089
|
+
pools: exports_external.array(exports_external.object({
|
|
1122090
|
+
pool: exports_external.string(),
|
|
1122091
|
+
symbol: exports_external.string(),
|
|
1122092
|
+
chain: exports_external.string(),
|
|
1122093
|
+
tvlUsd: exports_external.number(),
|
|
1122094
|
+
apy: exports_external.number(),
|
|
1122095
|
+
apyBase: exports_external.number().nullable(),
|
|
1122096
|
+
apyReward: exports_external.number().nullable(),
|
|
1122097
|
+
apyPct7D: exports_external.number().nullable(),
|
|
1122098
|
+
apyPct30D: exports_external.number().nullable(),
|
|
1122099
|
+
volumeUsd1d: exports_external.number().nullable(),
|
|
1122100
|
+
volumeUsd7d: exports_external.number().nullable(),
|
|
1122101
|
+
ilRisk: exports_external.string(),
|
|
1122102
|
+
stablecoin: exports_external.boolean(),
|
|
1122103
|
+
poolMeta: exports_external.string().nullable()
|
|
1122104
|
+
})).optional(),
|
|
1122105
|
+
count: exports_external.number().optional(),
|
|
1122106
|
+
error: exports_external.string().optional()
|
|
1122107
|
+
}),
|
|
1122108
|
+
execute: async ({ chain, symbol: symbol16, limit }) => {
|
|
1122109
|
+
try {
|
|
1122110
|
+
const pools = await getUniswapPoolYields(chain, symbol16);
|
|
1122111
|
+
return {
|
|
1122112
|
+
count: Math.min(pools.length, limit),
|
|
1122113
|
+
pools: pools.slice(0, limit).map((p) => ({
|
|
1122114
|
+
pool: p.pool,
|
|
1122115
|
+
symbol: p.symbol,
|
|
1122116
|
+
chain: p.chain,
|
|
1122117
|
+
tvlUsd: Math.round(p.tvlUsd),
|
|
1122118
|
+
apy: Math.round(p.apy * 100) / 100,
|
|
1122119
|
+
apyBase: p.apyBase !== null ? Math.round(p.apyBase * 100) / 100 : null,
|
|
1122120
|
+
apyReward: p.apyReward !== null ? Math.round(p.apyReward * 100) / 100 : null,
|
|
1122121
|
+
apyPct7D: p.apyPct7D !== null ? Math.round(p.apyPct7D * 100) / 100 : null,
|
|
1122122
|
+
apyPct30D: p.apyPct30D !== null ? Math.round(p.apyPct30D * 100) / 100 : null,
|
|
1122123
|
+
volumeUsd1d: p.volumeUsd1d !== null ? Math.round(p.volumeUsd1d) : null,
|
|
1122124
|
+
volumeUsd7d: p.volumeUsd7d !== null ? Math.round(p.volumeUsd7d) : null,
|
|
1122125
|
+
ilRisk: p.ilRisk,
|
|
1122126
|
+
stablecoin: p.stablecoin,
|
|
1122127
|
+
poolMeta: p.poolMeta
|
|
1122128
|
+
}))
|
|
1122129
|
+
};
|
|
1122130
|
+
} catch (error48) {
|
|
1122131
|
+
return { error: `Failed to get Uniswap yields: ${error48.message}` };
|
|
1122132
|
+
}
|
|
1122133
|
+
}
|
|
1122134
|
+
});
|
|
1122135
|
+
getTopYieldsTool = createTool({
|
|
1122136
|
+
id: "get_top_defi_yields",
|
|
1122137
|
+
description: "Get the highest-yielding DeFi pools across all protocols from DefiLlama. " + "Includes Uniswap, Aave, Compound, Aerodrome, Curve, and all tracked protocols. " + "Use for finding the best yield opportunities, comparing protocols, and yield farming research.",
|
|
1122138
|
+
inputSchema: exports_external.object({
|
|
1122139
|
+
chain: exports_external.string().optional().describe("Chain name (e.g., 'ethereum', 'base', 'arbitrum'). Omit for all chains."),
|
|
1122140
|
+
limit: exports_external.number().min(1).max(50).default(20).describe("Max pools to return"),
|
|
1122141
|
+
minTvl: exports_external.number().default(1e5).describe("Minimum TVL in USD (default: 100000)")
|
|
1122142
|
+
}),
|
|
1122143
|
+
outputSchema: exports_external.object({
|
|
1122144
|
+
pools: exports_external.array(exports_external.object({
|
|
1122145
|
+
pool: exports_external.string(),
|
|
1122146
|
+
project: exports_external.string(),
|
|
1122147
|
+
symbol: exports_external.string(),
|
|
1122148
|
+
chain: exports_external.string(),
|
|
1122149
|
+
tvlUsd: exports_external.number(),
|
|
1122150
|
+
apy: exports_external.number(),
|
|
1122151
|
+
apyBase: exports_external.number().nullable(),
|
|
1122152
|
+
apyReward: exports_external.number().nullable(),
|
|
1122153
|
+
stablecoin: exports_external.boolean(),
|
|
1122154
|
+
ilRisk: exports_external.string()
|
|
1122155
|
+
})).optional(),
|
|
1122156
|
+
count: exports_external.number().optional(),
|
|
1122157
|
+
error: exports_external.string().optional()
|
|
1122158
|
+
}),
|
|
1122159
|
+
execute: async ({ chain, limit, minTvl }) => {
|
|
1122160
|
+
try {
|
|
1122161
|
+
const pools = await getTopYieldPools(chain, limit, minTvl);
|
|
1122162
|
+
return {
|
|
1122163
|
+
count: pools.length,
|
|
1122164
|
+
pools: pools.map((p) => ({
|
|
1122165
|
+
pool: p.pool,
|
|
1122166
|
+
project: p.project,
|
|
1122167
|
+
symbol: p.symbol,
|
|
1122168
|
+
chain: p.chain,
|
|
1122169
|
+
tvlUsd: Math.round(p.tvlUsd),
|
|
1122170
|
+
apy: Math.round(p.apy * 100) / 100,
|
|
1122171
|
+
apyBase: p.apyBase !== null ? Math.round(p.apyBase * 100) / 100 : null,
|
|
1122172
|
+
apyReward: p.apyReward !== null ? Math.round(p.apyReward * 100) / 100 : null,
|
|
1122173
|
+
stablecoin: p.stablecoin,
|
|
1122174
|
+
ilRisk: p.ilRisk
|
|
1122175
|
+
}))
|
|
1122176
|
+
};
|
|
1122177
|
+
} catch (error48) {
|
|
1122178
|
+
return { error: `Failed to get top yields: ${error48.message}` };
|
|
1122179
|
+
}
|
|
1122180
|
+
}
|
|
1122181
|
+
});
|
|
1122182
|
+
defillamaYieldTools = {
|
|
1122183
|
+
get_uniswap_pool_yields: getUniswapYieldsTool,
|
|
1122184
|
+
get_top_defi_yields: getTopYieldsTool
|
|
1122185
|
+
};
|
|
1122186
|
+
});
|
|
1122187
|
+
|
|
1121874
1122188
|
// src/infra/agents/tools/position-tracking.ts
|
|
1121875
1122189
|
async function getManager() {
|
|
1121876
1122190
|
return getPositionManager(getEventBus());
|
|
@@ -1128231,6 +1128545,8 @@ var init_tools3 = __esm(async () => {
|
|
|
1128231
1128545
|
init_base_signals();
|
|
1128232
1128546
|
init_base_indexers();
|
|
1128233
1128547
|
init_uniswap_data();
|
|
1128548
|
+
init_dex_search();
|
|
1128549
|
+
init_defillama_yields();
|
|
1128234
1128550
|
init_position_tracking();
|
|
1128235
1128551
|
init_risk_gate();
|
|
1128236
1128552
|
init_memory_tools();
|
|
@@ -1128283,6 +1128599,8 @@ var init_tools3 = __esm(async () => {
|
|
|
1128283
1128599
|
init_base_signals();
|
|
1128284
1128600
|
init_base_indexers();
|
|
1128285
1128601
|
init_uniswap_data();
|
|
1128602
|
+
init_dex_search();
|
|
1128603
|
+
init_defillama_yields();
|
|
1128286
1128604
|
init_position_tracking();
|
|
1128287
1128605
|
init_risk_gate();
|
|
1128288
1128606
|
init_memory_tools();
|
|
@@ -1128339,6 +1128657,8 @@ var init_tools3 = __esm(async () => {
|
|
|
1128339
1128657
|
...baseSignalTools,
|
|
1128340
1128658
|
...baseIndexerTools,
|
|
1128341
1128659
|
...uniswapDataTools,
|
|
1128660
|
+
...dexSearchTools,
|
|
1128661
|
+
...defillamaYieldTools,
|
|
1128342
1128662
|
...multiModalChartTools,
|
|
1128343
1128663
|
...evalTools,
|
|
1128344
1128664
|
...positionTrackingTools,
|
|
@@ -1128386,6 +1128706,8 @@ var init_tools3 = __esm(async () => {
|
|
|
1128386
1128706
|
baseSignals: Object.keys(baseSignalTools).length,
|
|
1128387
1128707
|
baseIndexers: Object.keys(baseIndexerTools).length,
|
|
1128388
1128708
|
uniswapData: Object.keys(uniswapDataTools).length,
|
|
1128709
|
+
dexSearch: Object.keys(dexSearchTools).length,
|
|
1128710
|
+
defillamaYields: Object.keys(defillamaYieldTools).length,
|
|
1128389
1128711
|
multiModalCharts: Object.keys(multiModalChartTools).length,
|
|
1128390
1128712
|
evals: Object.keys(evalTools).length,
|
|
1128391
1128713
|
positionTracking: Object.keys(positionTrackingTools).length,
|
|
@@ -1142027,7 +1142349,7 @@ class ExperimentalClientTasks {
|
|
|
1142027
1142349
|
return this._client.requestStream(request, resultSchema, options);
|
|
1142028
1142350
|
}
|
|
1142029
1142351
|
}
|
|
1142030
|
-
var
|
|
1142352
|
+
var init_client12 = __esm(() => {
|
|
1142031
1142353
|
init_types19();
|
|
1142032
1142354
|
});
|
|
1142033
1142355
|
|
|
@@ -1142109,12 +1142431,12 @@ function getSupportedElicitationModes(capabilities) {
|
|
|
1142109
1142431
|
return { supportsFormMode, supportsUrlMode };
|
|
1142110
1142432
|
}
|
|
1142111
1142433
|
var Client2;
|
|
1142112
|
-
var
|
|
1142434
|
+
var init_client13 = __esm(() => {
|
|
1142113
1142435
|
init_protocol3();
|
|
1142114
1142436
|
init_types19();
|
|
1142115
1142437
|
init_ajv_provider();
|
|
1142116
1142438
|
init_zod_compat();
|
|
1142117
|
-
|
|
1142439
|
+
init_client12();
|
|
1142118
1142440
|
Client2 = class Client2 extends Protocol {
|
|
1142119
1142441
|
constructor(_clientInfo, options) {
|
|
1142120
1142442
|
super(options);
|
|
@@ -1149993,7 +1150315,7 @@ var init_dist18 = __esm(() => {
|
|
|
1149993
1150315
|
init_error();
|
|
1149994
1150316
|
init_tools();
|
|
1149995
1150317
|
init_utils();
|
|
1149996
|
-
|
|
1150318
|
+
init_client13();
|
|
1149997
1150319
|
init_sse();
|
|
1149998
1150320
|
init_stdio2();
|
|
1149999
1150321
|
init_streamableHttp();
|
|
@@ -1151565,7 +1151887,7 @@ function disableMCPHotReload() {
|
|
|
1151565
1151887
|
}
|
|
1151566
1151888
|
}
|
|
1151567
1151889
|
var _mcpClient = null, _mcpTools = null, _initPromise = null, _hotReloadTimer = null, _lastPluginFingerprint = null;
|
|
1151568
|
-
var
|
|
1151890
|
+
var init_client14 = __esm(() => {
|
|
1151569
1151891
|
init_dist18();
|
|
1151570
1151892
|
init_installer();
|
|
1151571
1151893
|
init_credentials();
|
|
@@ -1151659,6 +1151981,8 @@ function getScannerAgent() {
|
|
|
1151659
1151981
|
defillama_search_protocols: instrumentedAgentKitDefiTools.defillama_search_protocols,
|
|
1151660
1151982
|
indexer_top_pools: instrumentedBaseIndexerTools.indexer_top_pools,
|
|
1151661
1151983
|
indexer_aerodrome_pools: instrumentedBaseIndexerTools.indexer_aerodrome_pools,
|
|
1151984
|
+
search_dex_pairs: instrumentedDexSearchTools.search_dex_pairs,
|
|
1151985
|
+
get_boosted_tokens: instrumentedDexSearchTools.get_boosted_tokens,
|
|
1151662
1151986
|
get_uniswap_protocol_overview: instrumentedUniswapDataTools.get_uniswap_protocol_overview,
|
|
1151663
1151987
|
get_liquidity_events: instrumentedUniswapDataTools.get_liquidity_events,
|
|
1151664
1151988
|
report_setup: instrumentedPositionTrackingTools.report_setup,
|
|
@@ -1151709,6 +1152033,9 @@ function getAnalystAgent() {
|
|
|
1151709
1152033
|
get_pool_flash_events: instrumentedUniswapDataTools.get_pool_flash_events,
|
|
1151710
1152034
|
get_fee_collections: instrumentedUniswapDataTools.get_fee_collections,
|
|
1151711
1152035
|
get_uniswap_protocol_overview: instrumentedUniswapDataTools.get_uniswap_protocol_overview,
|
|
1152036
|
+
get_uniswap_pool_yields: instrumentedDefillamaYieldTools.get_uniswap_pool_yields,
|
|
1152037
|
+
get_top_defi_yields: instrumentedDefillamaYieldTools.get_top_defi_yields,
|
|
1152038
|
+
search_dex_pairs: instrumentedDexSearchTools.search_dex_pairs,
|
|
1151712
1152039
|
track_base_wallet: instrumentedBaseSignalTools.track_base_wallet,
|
|
1151713
1152040
|
get_base_token_holders: instrumentedBaseSignalTools.get_base_token_holders,
|
|
1151714
1152041
|
get_base_dex_pairs: instrumentedBaseSignalTools.get_base_dex_pairs,
|
|
@@ -1151965,7 +1152292,7 @@ function resetAgents() {
|
|
|
1151965
1152292
|
_agents = {};
|
|
1151966
1152293
|
_subAgentMemory = null;
|
|
1151967
1152294
|
}
|
|
1151968
|
-
var DEFAULT_MEMORY_CONFIG, _memoryConfig, instrumentedIndicatorTools, instrumentedExplainTools, instrumentedMarketTools, instrumentedPositionTools, instrumentedSchedulerTools, instrumentedSystemTools, instrumentedEarnTools, instrumentedChartTools, instrumentedOrderbookTools, instrumentedWalletTools, instrumentedDiscoveryTools, instrumentedHistoryTools, instrumentedAccountTools, instrumentedTradingTools, instrumentedMarketAnalysisTools, instrumentedLiquidationIntelligenceTools, instrumentedRiskManagementTools, instrumentedStrategyTools, instrumentedMetricsTools, instrumentedCompositionTools, instrumentedBacktestTools, instrumentedSharedContextTools, instrumentedParallelAnalysisTools, instrumentedStrategyGenerationTools, instrumentedMultiModalChartTools, instrumentedMarketDataTools, instrumentedPairAnalysisTools, instrumentedAutonomousTools, instrumentedBaseOnchainTools, instrumentedAgentKitOnchainTools, instrumentedAgentKitDefiTools, instrumentedBaseSignalTools, instrumentedBaseIndexerTools, instrumentedUniswapDataTools, instrumentedEvalTools, instrumentedPositionTrackingTools, instrumentedMemoryTools, instrumentedPlaybookTools, instrumentedPlaybookBacktestTools, instrumentedAuditTools, instrumentedProtocolTools, instrumentedRegimeTools, instrumentedRuntimeTools, instrumentedAdvancedTools, instrumentedCheckRiskTool, WORKING_MEMORY_TEMPLATE = `
|
|
1152295
|
+
var DEFAULT_MEMORY_CONFIG, _memoryConfig, instrumentedIndicatorTools, instrumentedExplainTools, instrumentedMarketTools, instrumentedPositionTools, instrumentedSchedulerTools, instrumentedSystemTools, instrumentedEarnTools, instrumentedChartTools, instrumentedOrderbookTools, instrumentedWalletTools, instrumentedDiscoveryTools, instrumentedHistoryTools, instrumentedAccountTools, instrumentedTradingTools, instrumentedMarketAnalysisTools, instrumentedLiquidationIntelligenceTools, instrumentedRiskManagementTools, instrumentedStrategyTools, instrumentedMetricsTools, instrumentedCompositionTools, instrumentedBacktestTools, instrumentedSharedContextTools, instrumentedParallelAnalysisTools, instrumentedStrategyGenerationTools, instrumentedMultiModalChartTools, instrumentedMarketDataTools, instrumentedPairAnalysisTools, instrumentedAutonomousTools, instrumentedBaseOnchainTools, instrumentedAgentKitOnchainTools, instrumentedAgentKitDefiTools, instrumentedBaseSignalTools, instrumentedBaseIndexerTools, instrumentedUniswapDataTools, instrumentedDexSearchTools, instrumentedDefillamaYieldTools, instrumentedEvalTools, instrumentedPositionTrackingTools, instrumentedMemoryTools, instrumentedPlaybookTools, instrumentedPlaybookBacktestTools, instrumentedAuditTools, instrumentedProtocolTools, instrumentedRegimeTools, instrumentedRuntimeTools, instrumentedAdvancedTools, instrumentedCheckRiskTool, WORKING_MEMORY_TEMPLATE = `
|
|
1151969
1152296
|
# Trader Profile
|
|
1151970
1152297
|
|
|
1151971
1152298
|
## Personal Info
|
|
@@ -1152571,7 +1152898,7 @@ var init_agents = __esm(async () => {
|
|
|
1152571
1152898
|
init_registry2();
|
|
1152572
1152899
|
init_shared_context();
|
|
1152573
1152900
|
init_evals2();
|
|
1152574
|
-
|
|
1152901
|
+
init_client14();
|
|
1152575
1152902
|
await init_tools3();
|
|
1152576
1152903
|
DEFAULT_MEMORY_CONFIG = {
|
|
1152577
1152904
|
lastMessages: 20,
|
|
@@ -1152613,6 +1152940,8 @@ var init_agents = __esm(async () => {
|
|
|
1152613
1152940
|
instrumentedBaseSignalTools = withToolsMetrics(baseSignalTools);
|
|
1152614
1152941
|
instrumentedBaseIndexerTools = withToolsMetrics(baseIndexerTools);
|
|
1152615
1152942
|
instrumentedUniswapDataTools = withToolsMetrics(uniswapDataTools);
|
|
1152943
|
+
instrumentedDexSearchTools = withToolsMetrics(dexSearchTools);
|
|
1152944
|
+
instrumentedDefillamaYieldTools = withToolsMetrics(defillamaYieldTools);
|
|
1152616
1152945
|
instrumentedEvalTools = withToolsMetrics(evalTools);
|
|
1152617
1152946
|
instrumentedPositionTrackingTools = withToolsMetrics(positionTrackingTools);
|
|
1152618
1152947
|
instrumentedMemoryTools = withToolsMetrics(memoryTools);
|
|
@@ -1154455,6 +1154784,10 @@ var init_orchestrator = __esm(async () => {
|
|
|
1154455
1154784
|
get_lp_positions: "Monitor",
|
|
1154456
1154785
|
get_uniswap_protocol_overview: "Scanner",
|
|
1154457
1154786
|
get_fee_collections: "Monitor",
|
|
1154787
|
+
search_dex_pairs: "Scanner",
|
|
1154788
|
+
get_boosted_tokens: "Scanner",
|
|
1154789
|
+
get_uniswap_pool_yields: "Analyst",
|
|
1154790
|
+
get_top_defi_yields: "Analyst",
|
|
1154458
1154791
|
scan_base_whale_transfers: "Scanner",
|
|
1154459
1154792
|
scan_base_volume_spikes: "Scanner",
|
|
1154460
1154793
|
scan_base_new_tokens: "Scanner",
|
|
@@ -1156603,7 +1156936,7 @@ async function checkOrphanedOrders(exchange, activeTrades, result) {
|
|
|
1156603
1156936
|
}
|
|
1156604
1156937
|
|
|
1156605
1156938
|
// src/gateway/runtime/gateway-runtime.ts
|
|
1156606
|
-
|
|
1156939
|
+
init_client14();
|
|
1156607
1156940
|
|
|
1156608
1156941
|
// src/gateway/scheduler/local-cron.ts
|
|
1156609
1156942
|
init_logger2();
|
|
@@ -1157457,7 +1157790,7 @@ class ReconciliationLoop {
|
|
|
1157457
1157790
|
}
|
|
1157458
1157791
|
}
|
|
1157459
1157792
|
// src/gateway/daemon/process.ts
|
|
1157460
|
-
|
|
1157793
|
+
init_client14();
|
|
1157461
1157794
|
init_engine();
|
|
1157462
1157795
|
var logger116 = createModuleLogger("gateway-daemon");
|
|
1157463
1157796
|
async function startGatewayDaemonProcess() {
|
|
@@ -1163590,7 +1163923,7 @@ var import_react64 = __toESM(require_react(), 1);
|
|
|
1163590
1163923
|
// package.json
|
|
1163591
1163924
|
var package_default2 = {
|
|
1163592
1163925
|
name: "@general-liquidity/gordon-cli",
|
|
1163593
|
-
version: "0.75.
|
|
1163926
|
+
version: "0.75.6",
|
|
1163594
1163927
|
description: "The Frontier Trading Agent",
|
|
1163595
1163928
|
author: "General Liquidity, Inc.",
|
|
1163596
1163929
|
license: "MIT",
|
|
@@ -1165718,7 +1166051,7 @@ async function ensureThreadRegistered() {
|
|
|
1165718
1166051
|
|
|
1165719
1166052
|
// src/infra/agents/index.ts
|
|
1165720
1166053
|
init_memory3();
|
|
1165721
|
-
|
|
1166054
|
+
init_client14();
|
|
1165722
1166055
|
init_reflection();
|
|
1165723
1166056
|
|
|
1165724
1166057
|
// src/app/SetupWizard.tsx
|
|
@@ -1167635,7 +1167968,7 @@ function useTheme() {
|
|
|
1167635
1167968
|
}
|
|
1167636
1167969
|
|
|
1167637
1167970
|
// src/app/App.tsx
|
|
1167638
|
-
|
|
1167971
|
+
init_client14();
|
|
1167639
1167972
|
init_llm();
|
|
1167640
1167973
|
init_binance2();
|
|
1167641
1167974
|
init_exchange();
|
|
@@ -1173867,7 +1174200,7 @@ async function checkForUpdates() {
|
|
|
1173867
1174200
|
|
|
1173868
1174201
|
// src/index.tsx
|
|
1173869
1174202
|
init_telemetry2();
|
|
1173870
|
-
|
|
1174203
|
+
init_client14();
|
|
1173871
1174204
|
var jsx_dev_runtime26 = __toESM(require_jsx_dev_runtime(), 1);
|
|
1173872
1174205
|
var flags = parseFlags();
|
|
1173873
1174206
|
var command = parseCommand();
|