@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.
Files changed (2) hide show
  1. package/dist/gordon.js +359 -26
  2. 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 getBasePairs(tokenAddress) {
287121
- const data = await dexScreenerFetch(`/token-pairs/v1/base/${tokenAddress}`);
287122
- return (data.pairs ?? []).filter((p) => p.chainId === "base");
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 searchBasePairs(query) {
287133
+ async function searchDexPairs(query, chain, dex) {
287125
287134
  const data = await dexScreenerFetch(`/latest/dex/search?q=${encodeURIComponent(query)}`);
287126
- return (data.pairs ?? []).filter((p) => p.chainId === "base");
287127
- }
287128
- async function getBaseTokensBatch(addresses) {
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/base/${batch}`);
287133
- return (data.pairs ?? []).filter((p) => p.chainId === "base");
287146
+ const data = await dexScreenerFetch(`/tokens/v1/${chain}/${batch}`);
287147
+ return (data.pairs ?? []).filter((p) => p.chainId === chain);
287134
287148
  }
287135
- async function getNewBaseTokens() {
287149
+ async function getNewTokens(chain) {
287136
287150
  const data = await dexScreenerFetch(`/token-profiles/latest/v1`);
287137
- return (data ?? []).filter((t2) => t2.chainId === "base");
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 init_client11 = __esm(() => {
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 init_client12 = __esm(() => {
1142434
+ var init_client13 = __esm(() => {
1142113
1142435
  init_protocol3();
1142114
1142436
  init_types19();
1142115
1142437
  init_ajv_provider();
1142116
1142438
  init_zod_compat();
1142117
- init_client11();
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
- init_client12();
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 init_client13 = __esm(() => {
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
- init_client13();
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
- init_client13();
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
- init_client13();
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.5",
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
- init_client13();
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
- init_client13();
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
- init_client13();
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();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@general-liquidity/gordon-cli",
3
- "version": "0.75.5",
3
+ "version": "0.75.6",
4
4
  "description": "The Frontier Trading Agent",
5
5
  "author": "General Liquidity, Inc.",
6
6
  "license": "MIT",