@exagent/agent 0.1.25 → 0.1.27
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/chunk-AWBQDPZ6.mjs +5319 -0
- package/dist/chunk-L67V7YG6.mjs +5440 -0
- package/dist/chunk-X5L5HDHF.mjs +5319 -0
- package/dist/chunk-XWCCWFH6.mjs +5440 -0
- package/dist/cli.js +171 -46
- package/dist/cli.mjs +1 -1
- package/dist/index.d.mts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +171 -46
- package/dist/index.mjs +1 -1
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -40,77 +40,192 @@ var import_accounts5 = require("viem/accounts");
|
|
|
40
40
|
var import_viem = require("viem");
|
|
41
41
|
var NATIVE_ETH = "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE";
|
|
42
42
|
var TOKEN_DECIMALS = {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
//
|
|
46
|
-
"0xd9aaec86b65d86f6a7b5b1b0c42ffa531710b6ca": 6,
|
|
47
|
-
// USDbC
|
|
43
|
+
[NATIVE_ETH.toLowerCase()]: 18,
|
|
44
|
+
// Native ETH
|
|
45
|
+
// Core (0)
|
|
48
46
|
"0x4200000000000000000000000000000000000006": 18,
|
|
49
47
|
// WETH
|
|
50
|
-
"
|
|
51
|
-
//
|
|
48
|
+
"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913": 6,
|
|
49
|
+
// USDC
|
|
52
50
|
"0x2ae3f1ec7f1f5012cfeab0185bfc7aa3cf0dec22": 18,
|
|
53
51
|
// cbETH
|
|
54
|
-
|
|
55
|
-
//
|
|
56
|
-
|
|
52
|
+
"0xcbb7c0000ab88b473b1f5afd9ef808440eed33bf": 8,
|
|
53
|
+
// cbBTC
|
|
54
|
+
"0xc1cba3fcea344f92d9239c08c0568f6f2f0ee452": 18,
|
|
55
|
+
// wstETH
|
|
56
|
+
"0x50c5725949a6f0c72e6c4a641f24049a917db0cb": 18,
|
|
57
|
+
// DAI
|
|
58
|
+
"0xfde4c96c8593536e31f229ea8f37b2ada2699bb2": 6,
|
|
59
|
+
// USDT
|
|
60
|
+
"0xd9aaec86b65d86f6a7b5b1b0c42ffa531710b6ca": 6,
|
|
61
|
+
// USDbC
|
|
62
|
+
"0x60a3e35cc302bfa44cb288bc5a4f316fdb1adb42": 6,
|
|
63
|
+
// EURC
|
|
64
|
+
"0xb6fe221fe9eef5aba221c348ba20a1bf5e73624c": 18,
|
|
65
|
+
// rETH
|
|
66
|
+
"0x0555e30da8f98308edb960aa94c0db47230d2b9c": 8,
|
|
67
|
+
// WBTC
|
|
68
|
+
// Established (1)
|
|
57
69
|
"0x940181a94a35a4569e4529a3cdfb74e38fd98631": 18,
|
|
58
|
-
// AERO
|
|
59
|
-
"
|
|
60
|
-
//
|
|
61
|
-
"
|
|
62
|
-
//
|
|
70
|
+
// AERO
|
|
71
|
+
"0x04c0599ae5a44757c0af6f9ec3b93da8976c150a": 18,
|
|
72
|
+
// weETH
|
|
73
|
+
"0x2416092f143378750bb29b79ed961ab195cceea5": 18,
|
|
74
|
+
// ezETH
|
|
75
|
+
"0xa88594d404727625a9437c3f886c7643872296ae": 18,
|
|
76
|
+
// WELL
|
|
77
|
+
"0xbaa5cc21fd487b8fcc2f632f3f4e8d37262a0842": 18,
|
|
78
|
+
// MORPHO
|
|
79
|
+
"0x88fb150bdc53a65fe94dea0c9ba0a6daf8c6e196": 18,
|
|
80
|
+
// LINK
|
|
81
|
+
"0xc3de830ea07524a0761646a6a4e4be0e114a3c83": 18,
|
|
82
|
+
// UNI
|
|
83
|
+
"0x63706e401c06ac8513145b7687a14804d17f814b": 18,
|
|
84
|
+
// AAVE
|
|
85
|
+
"0x9e1028f5f1d5ede59748ffcee5532509976840e0": 18,
|
|
86
|
+
// COMP
|
|
87
|
+
"0x4158734d47fc9692176b5085e0f52ee0da5d47f1": 18,
|
|
88
|
+
// BAL
|
|
89
|
+
"0x8ee73c484a26e0a5df2ee2a4960b789967dd0415": 18,
|
|
90
|
+
// CRV
|
|
91
|
+
"0x22e6966b799c4d5b13be962e1d117b56327fda66": 18,
|
|
92
|
+
// SNX
|
|
93
|
+
// Derivatives (2)
|
|
63
94
|
"0x0b3e328455c4059eeb9e3f84b5543f74e24e7e1b": 18,
|
|
64
95
|
// VIRTUAL
|
|
96
|
+
"0x4f9fd6be4a90f2620860d680c0d4d5fb53d1a825": 18,
|
|
97
|
+
// AIXBT
|
|
98
|
+
"0x4ed4e862860bed51a9570b96d89af5e1b0efefed": 18,
|
|
99
|
+
// DEGEN
|
|
100
|
+
"0x0578d8a44db98b23bf096a382e016e29a5ce0ffe": 18,
|
|
101
|
+
// HIGHER
|
|
102
|
+
"0x1bc0c42215582d5a085795f4badbaac3ff36d1bcb": 18,
|
|
103
|
+
// CLANKER
|
|
104
|
+
// Emerging (3)
|
|
105
|
+
"0x532f27101965dd16442e59d40670faf5ebb142e4": 18,
|
|
106
|
+
// BRETT
|
|
65
107
|
"0xac1bd2486aaf3b5c0fc3fd868558b082a531b2b4": 18,
|
|
66
108
|
// TOSHI
|
|
67
|
-
"
|
|
68
|
-
//
|
|
69
|
-
"
|
|
70
|
-
//
|
|
71
|
-
"
|
|
72
|
-
//
|
|
109
|
+
"0x6921b130d297cc43754afba22e5eac0fbf8db75b": 18,
|
|
110
|
+
// DOGINME
|
|
111
|
+
"0xb1a03eda10342529bbf8eb700a06c60441fef25d": 18,
|
|
112
|
+
// MIGGLES
|
|
113
|
+
"0x7f12d13b34f5f4f0a9449c16bcd42f0da47af200": 9,
|
|
114
|
+
// NORMIE
|
|
115
|
+
"0x27d2decb4bfc9c76f0309b8e88dec3a601fe25a8": 18,
|
|
116
|
+
// BALD
|
|
117
|
+
"0x768be13e1680b5ebe0024c42c896e3db59ec0149": 9
|
|
118
|
+
// SKI
|
|
73
119
|
};
|
|
120
|
+
var decimalsCache = {};
|
|
74
121
|
function getTokenDecimals(address) {
|
|
75
|
-
const
|
|
76
|
-
|
|
77
|
-
|
|
122
|
+
const key = address.toLowerCase();
|
|
123
|
+
const known = TOKEN_DECIMALS[key];
|
|
124
|
+
if (known !== void 0) return known;
|
|
125
|
+
const cached = decimalsCache[key];
|
|
126
|
+
if (cached !== void 0) return cached;
|
|
127
|
+
console.warn(`Unknown token decimals for ${address}, defaulting to 18. Call fetchTokenDecimals() first for accuracy.`);
|
|
128
|
+
return 18;
|
|
129
|
+
}
|
|
130
|
+
async function fetchTokenDecimals(client, address) {
|
|
131
|
+
const key = address.toLowerCase();
|
|
132
|
+
const known = TOKEN_DECIMALS[key];
|
|
133
|
+
if (known !== void 0) return known;
|
|
134
|
+
const cached = decimalsCache[key];
|
|
135
|
+
if (cached !== void 0) return cached;
|
|
136
|
+
try {
|
|
137
|
+
const decimals = await client.readContract({
|
|
138
|
+
address,
|
|
139
|
+
abi: import_viem.erc20Abi,
|
|
140
|
+
functionName: "decimals"
|
|
141
|
+
});
|
|
142
|
+
const result = Number(decimals);
|
|
143
|
+
decimalsCache[key] = result;
|
|
144
|
+
return result;
|
|
145
|
+
} catch {
|
|
146
|
+
console.warn(`Failed to fetch decimals for ${address} on-chain, defaulting to 18`);
|
|
147
|
+
decimalsCache[key] = 18;
|
|
78
148
|
return 18;
|
|
79
149
|
}
|
|
80
|
-
return decimals;
|
|
81
150
|
}
|
|
82
151
|
var TOKEN_TO_COINGECKO = {
|
|
83
|
-
|
|
152
|
+
[NATIVE_ETH.toLowerCase()]: "ethereum",
|
|
153
|
+
// Core (0)
|
|
84
154
|
"0x4200000000000000000000000000000000000006": "ethereum",
|
|
85
155
|
// WETH
|
|
86
|
-
[NATIVE_ETH.toLowerCase()]: "ethereum",
|
|
87
156
|
"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913": "usd-coin",
|
|
88
157
|
// USDC
|
|
89
|
-
"0xd9aaec86b65d86f6a7b5b1b0c42ffa531710b6ca": "usd-coin",
|
|
90
|
-
// USDbC
|
|
91
158
|
"0x2ae3f1ec7f1f5012cfeab0185bfc7aa3cf0dec22": "coinbase-wrapped-staked-eth",
|
|
92
159
|
// cbETH
|
|
160
|
+
"0xcbb7c0000ab88b473b1f5afd9ef808440eed33bf": "coinbase-wrapped-btc",
|
|
161
|
+
// cbBTC
|
|
162
|
+
"0xc1cba3fcea344f92d9239c08c0568f6f2f0ee452": "wrapped-steth",
|
|
163
|
+
// wstETH
|
|
93
164
|
"0x50c5725949a6f0c72e6c4a641f24049a917db0cb": "dai",
|
|
94
165
|
// DAI
|
|
95
|
-
|
|
166
|
+
"0xfde4c96c8593536e31f229ea8f37b2ada2699bb2": "tether",
|
|
167
|
+
// USDT
|
|
168
|
+
"0xd9aaec86b65d86f6a7b5b1b0c42ffa531710b6ca": "usd-coin",
|
|
169
|
+
// USDbC
|
|
170
|
+
"0x60a3e35cc302bfa44cb288bc5a4f316fdb1adb42": "euro-coin",
|
|
171
|
+
// EURC
|
|
172
|
+
"0xb6fe221fe9eef5aba221c348ba20a1bf5e73624c": "rocket-pool-eth",
|
|
173
|
+
// rETH
|
|
174
|
+
"0x0555e30da8f98308edb960aa94c0db47230d2b9c": "wrapped-bitcoin",
|
|
175
|
+
// WBTC
|
|
176
|
+
// Established (1)
|
|
96
177
|
"0x940181a94a35a4569e4529a3cdfb74e38fd98631": "aerodrome-finance",
|
|
97
178
|
// AERO
|
|
98
|
-
"
|
|
99
|
-
//
|
|
100
|
-
"
|
|
101
|
-
//
|
|
179
|
+
"0x04c0599ae5a44757c0af6f9ec3b93da8976c150a": "wrapped-eeth",
|
|
180
|
+
// weETH
|
|
181
|
+
"0x2416092f143378750bb29b79ed961ab195cceea5": "renzo-restaked-eth",
|
|
182
|
+
// ezETH
|
|
183
|
+
"0xa88594d404727625a9437c3f886c7643872296ae": "moonwell",
|
|
184
|
+
// WELL
|
|
185
|
+
"0xbaa5cc21fd487b8fcc2f632f3f4e8d37262a0842": "morpho",
|
|
186
|
+
// MORPHO
|
|
187
|
+
"0x88fb150bdc53a65fe94dea0c9ba0a6daf8c6e196": "chainlink",
|
|
188
|
+
// LINK
|
|
189
|
+
"0xc3de830ea07524a0761646a6a4e4be0e114a3c83": "uniswap",
|
|
190
|
+
// UNI
|
|
191
|
+
"0x63706e401c06ac8513145b7687a14804d17f814b": "aave",
|
|
192
|
+
// AAVE
|
|
193
|
+
"0x9e1028f5f1d5ede59748ffcee5532509976840e0": "compound-governance-token",
|
|
194
|
+
// COMP
|
|
195
|
+
"0x4158734d47fc9692176b5085e0f52ee0da5d47f1": "balancer",
|
|
196
|
+
// BAL
|
|
197
|
+
"0x8ee73c484a26e0a5df2ee2a4960b789967dd0415": "curve-dao-token",
|
|
198
|
+
// CRV
|
|
199
|
+
"0x22e6966b799c4d5b13be962e1d117b56327fda66": "havven",
|
|
200
|
+
// SNX
|
|
201
|
+
// Derivatives (2)
|
|
102
202
|
"0x0b3e328455c4059eeb9e3f84b5543f74e24e7e1b": "virtual-protocol",
|
|
103
203
|
// VIRTUAL
|
|
204
|
+
"0x4f9fd6be4a90f2620860d680c0d4d5fb53d1a825": "aixbt",
|
|
205
|
+
// AIXBT
|
|
206
|
+
"0x4ed4e862860bed51a9570b96d89af5e1b0efefed": "degen-base",
|
|
207
|
+
// DEGEN
|
|
208
|
+
"0x0578d8a44db98b23bf096a382e016e29a5ce0ffe": "higher",
|
|
209
|
+
// HIGHER
|
|
210
|
+
"0x1bc0c42215582d5a085795f4badbaac3ff36d1bcb": "clanker",
|
|
211
|
+
// CLANKER
|
|
212
|
+
// Emerging (3)
|
|
213
|
+
"0x532f27101965dd16442e59d40670faf5ebb142e4": "based-brett",
|
|
214
|
+
// BRETT
|
|
104
215
|
"0xac1bd2486aaf3b5c0fc3fd868558b082a531b2b4": "toshi",
|
|
105
216
|
// TOSHI
|
|
106
|
-
"
|
|
107
|
-
//
|
|
108
|
-
"
|
|
109
|
-
//
|
|
110
|
-
"
|
|
111
|
-
//
|
|
217
|
+
"0x6921b130d297cc43754afba22e5eac0fbf8db75b": "doginme",
|
|
218
|
+
// DOGINME
|
|
219
|
+
"0xb1a03eda10342529bbf8eb700a06c60441fef25d": "mister-miggles",
|
|
220
|
+
// MIGGLES
|
|
221
|
+
"0x7f12d13b34f5f4f0a9449c16bcd42f0da47af200": "normie-2",
|
|
222
|
+
// NORMIE
|
|
223
|
+
"0x27d2decb4bfc9c76f0309b8e88dec3a601fe25a8": "bald",
|
|
224
|
+
// BALD
|
|
225
|
+
"0x768be13e1680b5ebe0024c42c896e3db59ec0149": "ski-mask-dog"
|
|
226
|
+
// SKI
|
|
112
227
|
};
|
|
113
|
-
var STABLECOIN_IDS = /* @__PURE__ */ new Set(["usd-coin", "dai"]);
|
|
228
|
+
var STABLECOIN_IDS = /* @__PURE__ */ new Set(["usd-coin", "dai", "tether"]);
|
|
114
229
|
var PRICE_STALENESS_MS = 6e4;
|
|
115
230
|
var MarketDataService = class {
|
|
116
231
|
rpcUrl;
|
|
@@ -266,6 +381,12 @@ var MarketDataService = class {
|
|
|
266
381
|
const balances = {};
|
|
267
382
|
const wallet = walletAddress;
|
|
268
383
|
try {
|
|
384
|
+
const unknownTokens = tokenAddresses.filter(
|
|
385
|
+
(addr) => TOKEN_DECIMALS[addr.toLowerCase()] === void 0 && !decimalsCache[addr.toLowerCase()]
|
|
386
|
+
);
|
|
387
|
+
if (unknownTokens.length > 0) {
|
|
388
|
+
await Promise.all(unknownTokens.map((addr) => fetchTokenDecimals(this.client, addr)));
|
|
389
|
+
}
|
|
269
390
|
const nativeBalance = await this.client.getBalance({ address: wallet });
|
|
270
391
|
balances[NATIVE_ETH.toLowerCase()] = nativeBalance;
|
|
271
392
|
const erc20Promises = tokenAddresses.map(async (tokenAddress) => {
|
|
@@ -3704,7 +3825,7 @@ function loadSecureEnv(basePath, passphrase) {
|
|
|
3704
3825
|
}
|
|
3705
3826
|
|
|
3706
3827
|
// src/index.ts
|
|
3707
|
-
var AGENT_VERSION = "0.1.
|
|
3828
|
+
var AGENT_VERSION = "0.1.27";
|
|
3708
3829
|
|
|
3709
3830
|
// src/relay.ts
|
|
3710
3831
|
var RelayClient = class {
|
|
@@ -4296,6 +4417,13 @@ var AgentRuntime = class {
|
|
|
4296
4417
|
try {
|
|
4297
4418
|
this.riskUniverse = await this.client.registry.getRiskUniverse(agentId);
|
|
4298
4419
|
console.log(`Risk universe: ${RISK_UNIVERSE_NAMES[this.riskUniverse] || this.riskUniverse}`);
|
|
4420
|
+
if (this.riskUniverse === 4) {
|
|
4421
|
+
this.allowedTokens.clear();
|
|
4422
|
+
this.config.allowedTokens = void 0;
|
|
4423
|
+
console.log("Frontier risk universe: all tokens allowed (no restrictions)");
|
|
4424
|
+
console.log("Frontier risk universe: vault creation is disabled");
|
|
4425
|
+
return;
|
|
4426
|
+
}
|
|
4299
4427
|
const configTokens = this.config.allowedTokens || this.getDefaultTokens();
|
|
4300
4428
|
const verified = [];
|
|
4301
4429
|
for (const token of configTokens) {
|
|
@@ -4318,10 +4446,7 @@ var AgentRuntime = class {
|
|
|
4318
4446
|
}
|
|
4319
4447
|
}
|
|
4320
4448
|
this.config.allowedTokens = verified;
|
|
4321
|
-
console.log(`Allowed tokens loaded: ${verified.length}
|
|
4322
|
-
if (this.riskUniverse === 4) {
|
|
4323
|
-
console.warn("Frontier risk universe: vault creation is disabled");
|
|
4324
|
-
}
|
|
4449
|
+
console.log(`Allowed tokens loaded: ${verified.length} verified`);
|
|
4325
4450
|
} catch (error) {
|
|
4326
4451
|
console.warn(
|
|
4327
4452
|
"Could not load trading restrictions from registry (using defaults):",
|
package/dist/cli.mjs
CHANGED
package/dist/index.d.mts
CHANGED
|
@@ -339,9 +339,9 @@ declare const AgentConfigSchema: z.ZodObject<{
|
|
|
339
339
|
}>>;
|
|
340
340
|
allowedTokens: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
341
341
|
}, "strip", z.ZodTypeAny, {
|
|
342
|
-
agentId: string | number;
|
|
343
342
|
name: string;
|
|
344
343
|
network: "mainnet";
|
|
344
|
+
agentId: string | number;
|
|
345
345
|
llm: {
|
|
346
346
|
provider: "custom" | "openai" | "anthropic" | "google" | "deepseek" | "mistral" | "groq" | "together" | "ollama";
|
|
347
347
|
temperature: number;
|
|
@@ -388,8 +388,8 @@ declare const AgentConfigSchema: z.ZodObject<{
|
|
|
388
388
|
} | undefined;
|
|
389
389
|
allowedTokens?: string[] | undefined;
|
|
390
390
|
}, {
|
|
391
|
-
agentId: string | number;
|
|
392
391
|
name: string;
|
|
392
|
+
agentId: string | number;
|
|
393
393
|
llm: {
|
|
394
394
|
provider: "custom" | "openai" | "anthropic" | "google" | "deepseek" | "mistral" | "groq" | "together" | "ollama";
|
|
395
395
|
model?: string | undefined;
|
|
@@ -2107,6 +2107,6 @@ declare function decryptEnvFile(encPath: string, passphrase: string): Record<str
|
|
|
2107
2107
|
declare function loadSecureEnv(basePath: string, passphrase?: string): boolean;
|
|
2108
2108
|
|
|
2109
2109
|
/** @exagent/agent package version — update alongside package.json */
|
|
2110
|
-
declare const AGENT_VERSION = "0.1.
|
|
2110
|
+
declare const AGENT_VERSION = "0.1.27";
|
|
2111
2111
|
|
|
2112
2112
|
export { AGENT_VERSION, type AccountSummary, type AgentConfig, AgentConfigSchema, type AgentMode, AgentRuntime, type AgentStatusPayload, AnthropicAdapter, BaseLLMAdapter, type CommandType, DeepSeekAdapter, FileStore, type FillCallback, type FundingCallback, type FundingPayment, GoogleAdapter, GroqAdapter, HYPERLIQUID_DOMAIN, HyperliquidClient, HyperliquidSigner, HyperliquidWebSocket, type LLMAdapter, type LLMConfig, LLMConfigSchema, type LLMMessage, type LLMMetadata, type LLMProvider, LLMProviderSchema, type LLMResponse, type LiquidationCallback, type MarketData, MarketDataService, type MessageLevel, type MessageType, MistralAdapter, OllamaAdapter, type OnboardingStatus, OpenAIAdapter, OrderManager, type OrderResult, type PerpAction, type PerpConfig$1 as PerpConfig, PerpConfigSchema, type PerpFill, type PerpMarketData, PerpOnboarding, type PerpPosition, type PerpStrategyFunction, PerpTradeRecorder, type PerpTradeSignal, type PerpConfig as PerpTradingConfig, PositionManager, type PositionSummary, PositionTracker, type RecordPerpTradeParams, RelayClient, type RelayCommand, type RelayConfig$1 as RelayConfig, RelayConfigSchema, RiskManager, type RiskState, type RiskUniverse, RiskUniverseSchema, type RuntimeConfig, STRATEGY_TEMPLATES, type StrategyContext, type StrategyFunction, type StrategyStore, type StrategyTemplate, TogetherAdapter, type TrackedPosition, TradeExecutor, type TradeRecord, type TradeSignal, type TradingConfig, TradingConfigSchema, type VaultConfig, VaultConfigSchema, VaultManager, type VaultManagerConfig, type VaultPolicy, VaultPolicySchema, type VaultStatus, createLLMAdapter, createSampleConfig, decryptEnvFile, encryptEnvFile, fillHashToBytes32, fillOidToBytes32, getAllStrategyTemplates, getNextNonce, getStrategyTemplate, loadConfig, loadSecureEnv, loadStrategy, validateConfig, validateStrategy };
|
package/dist/index.d.ts
CHANGED
|
@@ -339,9 +339,9 @@ declare const AgentConfigSchema: z.ZodObject<{
|
|
|
339
339
|
}>>;
|
|
340
340
|
allowedTokens: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
341
341
|
}, "strip", z.ZodTypeAny, {
|
|
342
|
-
agentId: string | number;
|
|
343
342
|
name: string;
|
|
344
343
|
network: "mainnet";
|
|
344
|
+
agentId: string | number;
|
|
345
345
|
llm: {
|
|
346
346
|
provider: "custom" | "openai" | "anthropic" | "google" | "deepseek" | "mistral" | "groq" | "together" | "ollama";
|
|
347
347
|
temperature: number;
|
|
@@ -388,8 +388,8 @@ declare const AgentConfigSchema: z.ZodObject<{
|
|
|
388
388
|
} | undefined;
|
|
389
389
|
allowedTokens?: string[] | undefined;
|
|
390
390
|
}, {
|
|
391
|
-
agentId: string | number;
|
|
392
391
|
name: string;
|
|
392
|
+
agentId: string | number;
|
|
393
393
|
llm: {
|
|
394
394
|
provider: "custom" | "openai" | "anthropic" | "google" | "deepseek" | "mistral" | "groq" | "together" | "ollama";
|
|
395
395
|
model?: string | undefined;
|
|
@@ -2107,6 +2107,6 @@ declare function decryptEnvFile(encPath: string, passphrase: string): Record<str
|
|
|
2107
2107
|
declare function loadSecureEnv(basePath: string, passphrase?: string): boolean;
|
|
2108
2108
|
|
|
2109
2109
|
/** @exagent/agent package version — update alongside package.json */
|
|
2110
|
-
declare const AGENT_VERSION = "0.1.
|
|
2110
|
+
declare const AGENT_VERSION = "0.1.27";
|
|
2111
2111
|
|
|
2112
2112
|
export { AGENT_VERSION, type AccountSummary, type AgentConfig, AgentConfigSchema, type AgentMode, AgentRuntime, type AgentStatusPayload, AnthropicAdapter, BaseLLMAdapter, type CommandType, DeepSeekAdapter, FileStore, type FillCallback, type FundingCallback, type FundingPayment, GoogleAdapter, GroqAdapter, HYPERLIQUID_DOMAIN, HyperliquidClient, HyperliquidSigner, HyperliquidWebSocket, type LLMAdapter, type LLMConfig, LLMConfigSchema, type LLMMessage, type LLMMetadata, type LLMProvider, LLMProviderSchema, type LLMResponse, type LiquidationCallback, type MarketData, MarketDataService, type MessageLevel, type MessageType, MistralAdapter, OllamaAdapter, type OnboardingStatus, OpenAIAdapter, OrderManager, type OrderResult, type PerpAction, type PerpConfig$1 as PerpConfig, PerpConfigSchema, type PerpFill, type PerpMarketData, PerpOnboarding, type PerpPosition, type PerpStrategyFunction, PerpTradeRecorder, type PerpTradeSignal, type PerpConfig as PerpTradingConfig, PositionManager, type PositionSummary, PositionTracker, type RecordPerpTradeParams, RelayClient, type RelayCommand, type RelayConfig$1 as RelayConfig, RelayConfigSchema, RiskManager, type RiskState, type RiskUniverse, RiskUniverseSchema, type RuntimeConfig, STRATEGY_TEMPLATES, type StrategyContext, type StrategyFunction, type StrategyStore, type StrategyTemplate, TogetherAdapter, type TrackedPosition, TradeExecutor, type TradeRecord, type TradeSignal, type TradingConfig, TradingConfigSchema, type VaultConfig, VaultConfigSchema, VaultManager, type VaultManagerConfig, type VaultPolicy, VaultPolicySchema, type VaultStatus, createLLMAdapter, createSampleConfig, decryptEnvFile, encryptEnvFile, fillHashToBytes32, fillOidToBytes32, getAllStrategyTemplates, getNextNonce, getStrategyTemplate, loadConfig, loadSecureEnv, loadStrategy, validateConfig, validateStrategy };
|
package/dist/index.js
CHANGED
|
@@ -93,77 +93,192 @@ var import_accounts5 = require("viem/accounts");
|
|
|
93
93
|
var import_viem = require("viem");
|
|
94
94
|
var NATIVE_ETH = "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE";
|
|
95
95
|
var TOKEN_DECIMALS = {
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
//
|
|
99
|
-
"0xd9aaec86b65d86f6a7b5b1b0c42ffa531710b6ca": 6,
|
|
100
|
-
// USDbC
|
|
96
|
+
[NATIVE_ETH.toLowerCase()]: 18,
|
|
97
|
+
// Native ETH
|
|
98
|
+
// Core (0)
|
|
101
99
|
"0x4200000000000000000000000000000000000006": 18,
|
|
102
100
|
// WETH
|
|
103
|
-
"
|
|
104
|
-
//
|
|
101
|
+
"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913": 6,
|
|
102
|
+
// USDC
|
|
105
103
|
"0x2ae3f1ec7f1f5012cfeab0185bfc7aa3cf0dec22": 18,
|
|
106
104
|
// cbETH
|
|
107
|
-
|
|
108
|
-
//
|
|
109
|
-
|
|
105
|
+
"0xcbb7c0000ab88b473b1f5afd9ef808440eed33bf": 8,
|
|
106
|
+
// cbBTC
|
|
107
|
+
"0xc1cba3fcea344f92d9239c08c0568f6f2f0ee452": 18,
|
|
108
|
+
// wstETH
|
|
109
|
+
"0x50c5725949a6f0c72e6c4a641f24049a917db0cb": 18,
|
|
110
|
+
// DAI
|
|
111
|
+
"0xfde4c96c8593536e31f229ea8f37b2ada2699bb2": 6,
|
|
112
|
+
// USDT
|
|
113
|
+
"0xd9aaec86b65d86f6a7b5b1b0c42ffa531710b6ca": 6,
|
|
114
|
+
// USDbC
|
|
115
|
+
"0x60a3e35cc302bfa44cb288bc5a4f316fdb1adb42": 6,
|
|
116
|
+
// EURC
|
|
117
|
+
"0xb6fe221fe9eef5aba221c348ba20a1bf5e73624c": 18,
|
|
118
|
+
// rETH
|
|
119
|
+
"0x0555e30da8f98308edb960aa94c0db47230d2b9c": 8,
|
|
120
|
+
// WBTC
|
|
121
|
+
// Established (1)
|
|
110
122
|
"0x940181a94a35a4569e4529a3cdfb74e38fd98631": 18,
|
|
111
|
-
// AERO
|
|
112
|
-
"
|
|
113
|
-
//
|
|
114
|
-
"
|
|
115
|
-
//
|
|
123
|
+
// AERO
|
|
124
|
+
"0x04c0599ae5a44757c0af6f9ec3b93da8976c150a": 18,
|
|
125
|
+
// weETH
|
|
126
|
+
"0x2416092f143378750bb29b79ed961ab195cceea5": 18,
|
|
127
|
+
// ezETH
|
|
128
|
+
"0xa88594d404727625a9437c3f886c7643872296ae": 18,
|
|
129
|
+
// WELL
|
|
130
|
+
"0xbaa5cc21fd487b8fcc2f632f3f4e8d37262a0842": 18,
|
|
131
|
+
// MORPHO
|
|
132
|
+
"0x88fb150bdc53a65fe94dea0c9ba0a6daf8c6e196": 18,
|
|
133
|
+
// LINK
|
|
134
|
+
"0xc3de830ea07524a0761646a6a4e4be0e114a3c83": 18,
|
|
135
|
+
// UNI
|
|
136
|
+
"0x63706e401c06ac8513145b7687a14804d17f814b": 18,
|
|
137
|
+
// AAVE
|
|
138
|
+
"0x9e1028f5f1d5ede59748ffcee5532509976840e0": 18,
|
|
139
|
+
// COMP
|
|
140
|
+
"0x4158734d47fc9692176b5085e0f52ee0da5d47f1": 18,
|
|
141
|
+
// BAL
|
|
142
|
+
"0x8ee73c484a26e0a5df2ee2a4960b789967dd0415": 18,
|
|
143
|
+
// CRV
|
|
144
|
+
"0x22e6966b799c4d5b13be962e1d117b56327fda66": 18,
|
|
145
|
+
// SNX
|
|
146
|
+
// Derivatives (2)
|
|
116
147
|
"0x0b3e328455c4059eeb9e3f84b5543f74e24e7e1b": 18,
|
|
117
148
|
// VIRTUAL
|
|
149
|
+
"0x4f9fd6be4a90f2620860d680c0d4d5fb53d1a825": 18,
|
|
150
|
+
// AIXBT
|
|
151
|
+
"0x4ed4e862860bed51a9570b96d89af5e1b0efefed": 18,
|
|
152
|
+
// DEGEN
|
|
153
|
+
"0x0578d8a44db98b23bf096a382e016e29a5ce0ffe": 18,
|
|
154
|
+
// HIGHER
|
|
155
|
+
"0x1bc0c42215582d5a085795f4badbaac3ff36d1bcb": 18,
|
|
156
|
+
// CLANKER
|
|
157
|
+
// Emerging (3)
|
|
158
|
+
"0x532f27101965dd16442e59d40670faf5ebb142e4": 18,
|
|
159
|
+
// BRETT
|
|
118
160
|
"0xac1bd2486aaf3b5c0fc3fd868558b082a531b2b4": 18,
|
|
119
161
|
// TOSHI
|
|
120
|
-
"
|
|
121
|
-
//
|
|
122
|
-
"
|
|
123
|
-
//
|
|
124
|
-
"
|
|
125
|
-
//
|
|
162
|
+
"0x6921b130d297cc43754afba22e5eac0fbf8db75b": 18,
|
|
163
|
+
// DOGINME
|
|
164
|
+
"0xb1a03eda10342529bbf8eb700a06c60441fef25d": 18,
|
|
165
|
+
// MIGGLES
|
|
166
|
+
"0x7f12d13b34f5f4f0a9449c16bcd42f0da47af200": 9,
|
|
167
|
+
// NORMIE
|
|
168
|
+
"0x27d2decb4bfc9c76f0309b8e88dec3a601fe25a8": 18,
|
|
169
|
+
// BALD
|
|
170
|
+
"0x768be13e1680b5ebe0024c42c896e3db59ec0149": 9
|
|
171
|
+
// SKI
|
|
126
172
|
};
|
|
173
|
+
var decimalsCache = {};
|
|
127
174
|
function getTokenDecimals(address) {
|
|
128
|
-
const
|
|
129
|
-
|
|
130
|
-
|
|
175
|
+
const key = address.toLowerCase();
|
|
176
|
+
const known = TOKEN_DECIMALS[key];
|
|
177
|
+
if (known !== void 0) return known;
|
|
178
|
+
const cached = decimalsCache[key];
|
|
179
|
+
if (cached !== void 0) return cached;
|
|
180
|
+
console.warn(`Unknown token decimals for ${address}, defaulting to 18. Call fetchTokenDecimals() first for accuracy.`);
|
|
181
|
+
return 18;
|
|
182
|
+
}
|
|
183
|
+
async function fetchTokenDecimals(client, address) {
|
|
184
|
+
const key = address.toLowerCase();
|
|
185
|
+
const known = TOKEN_DECIMALS[key];
|
|
186
|
+
if (known !== void 0) return known;
|
|
187
|
+
const cached = decimalsCache[key];
|
|
188
|
+
if (cached !== void 0) return cached;
|
|
189
|
+
try {
|
|
190
|
+
const decimals = await client.readContract({
|
|
191
|
+
address,
|
|
192
|
+
abi: import_viem.erc20Abi,
|
|
193
|
+
functionName: "decimals"
|
|
194
|
+
});
|
|
195
|
+
const result = Number(decimals);
|
|
196
|
+
decimalsCache[key] = result;
|
|
197
|
+
return result;
|
|
198
|
+
} catch {
|
|
199
|
+
console.warn(`Failed to fetch decimals for ${address} on-chain, defaulting to 18`);
|
|
200
|
+
decimalsCache[key] = 18;
|
|
131
201
|
return 18;
|
|
132
202
|
}
|
|
133
|
-
return decimals;
|
|
134
203
|
}
|
|
135
204
|
var TOKEN_TO_COINGECKO = {
|
|
136
|
-
|
|
205
|
+
[NATIVE_ETH.toLowerCase()]: "ethereum",
|
|
206
|
+
// Core (0)
|
|
137
207
|
"0x4200000000000000000000000000000000000006": "ethereum",
|
|
138
208
|
// WETH
|
|
139
|
-
[NATIVE_ETH.toLowerCase()]: "ethereum",
|
|
140
209
|
"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913": "usd-coin",
|
|
141
210
|
// USDC
|
|
142
|
-
"0xd9aaec86b65d86f6a7b5b1b0c42ffa531710b6ca": "usd-coin",
|
|
143
|
-
// USDbC
|
|
144
211
|
"0x2ae3f1ec7f1f5012cfeab0185bfc7aa3cf0dec22": "coinbase-wrapped-staked-eth",
|
|
145
212
|
// cbETH
|
|
213
|
+
"0xcbb7c0000ab88b473b1f5afd9ef808440eed33bf": "coinbase-wrapped-btc",
|
|
214
|
+
// cbBTC
|
|
215
|
+
"0xc1cba3fcea344f92d9239c08c0568f6f2f0ee452": "wrapped-steth",
|
|
216
|
+
// wstETH
|
|
146
217
|
"0x50c5725949a6f0c72e6c4a641f24049a917db0cb": "dai",
|
|
147
218
|
// DAI
|
|
148
|
-
|
|
219
|
+
"0xfde4c96c8593536e31f229ea8f37b2ada2699bb2": "tether",
|
|
220
|
+
// USDT
|
|
221
|
+
"0xd9aaec86b65d86f6a7b5b1b0c42ffa531710b6ca": "usd-coin",
|
|
222
|
+
// USDbC
|
|
223
|
+
"0x60a3e35cc302bfa44cb288bc5a4f316fdb1adb42": "euro-coin",
|
|
224
|
+
// EURC
|
|
225
|
+
"0xb6fe221fe9eef5aba221c348ba20a1bf5e73624c": "rocket-pool-eth",
|
|
226
|
+
// rETH
|
|
227
|
+
"0x0555e30da8f98308edb960aa94c0db47230d2b9c": "wrapped-bitcoin",
|
|
228
|
+
// WBTC
|
|
229
|
+
// Established (1)
|
|
149
230
|
"0x940181a94a35a4569e4529a3cdfb74e38fd98631": "aerodrome-finance",
|
|
150
231
|
// AERO
|
|
151
|
-
"
|
|
152
|
-
//
|
|
153
|
-
"
|
|
154
|
-
//
|
|
232
|
+
"0x04c0599ae5a44757c0af6f9ec3b93da8976c150a": "wrapped-eeth",
|
|
233
|
+
// weETH
|
|
234
|
+
"0x2416092f143378750bb29b79ed961ab195cceea5": "renzo-restaked-eth",
|
|
235
|
+
// ezETH
|
|
236
|
+
"0xa88594d404727625a9437c3f886c7643872296ae": "moonwell",
|
|
237
|
+
// WELL
|
|
238
|
+
"0xbaa5cc21fd487b8fcc2f632f3f4e8d37262a0842": "morpho",
|
|
239
|
+
// MORPHO
|
|
240
|
+
"0x88fb150bdc53a65fe94dea0c9ba0a6daf8c6e196": "chainlink",
|
|
241
|
+
// LINK
|
|
242
|
+
"0xc3de830ea07524a0761646a6a4e4be0e114a3c83": "uniswap",
|
|
243
|
+
// UNI
|
|
244
|
+
"0x63706e401c06ac8513145b7687a14804d17f814b": "aave",
|
|
245
|
+
// AAVE
|
|
246
|
+
"0x9e1028f5f1d5ede59748ffcee5532509976840e0": "compound-governance-token",
|
|
247
|
+
// COMP
|
|
248
|
+
"0x4158734d47fc9692176b5085e0f52ee0da5d47f1": "balancer",
|
|
249
|
+
// BAL
|
|
250
|
+
"0x8ee73c484a26e0a5df2ee2a4960b789967dd0415": "curve-dao-token",
|
|
251
|
+
// CRV
|
|
252
|
+
"0x22e6966b799c4d5b13be962e1d117b56327fda66": "havven",
|
|
253
|
+
// SNX
|
|
254
|
+
// Derivatives (2)
|
|
155
255
|
"0x0b3e328455c4059eeb9e3f84b5543f74e24e7e1b": "virtual-protocol",
|
|
156
256
|
// VIRTUAL
|
|
257
|
+
"0x4f9fd6be4a90f2620860d680c0d4d5fb53d1a825": "aixbt",
|
|
258
|
+
// AIXBT
|
|
259
|
+
"0x4ed4e862860bed51a9570b96d89af5e1b0efefed": "degen-base",
|
|
260
|
+
// DEGEN
|
|
261
|
+
"0x0578d8a44db98b23bf096a382e016e29a5ce0ffe": "higher",
|
|
262
|
+
// HIGHER
|
|
263
|
+
"0x1bc0c42215582d5a085795f4badbaac3ff36d1bcb": "clanker",
|
|
264
|
+
// CLANKER
|
|
265
|
+
// Emerging (3)
|
|
266
|
+
"0x532f27101965dd16442e59d40670faf5ebb142e4": "based-brett",
|
|
267
|
+
// BRETT
|
|
157
268
|
"0xac1bd2486aaf3b5c0fc3fd868558b082a531b2b4": "toshi",
|
|
158
269
|
// TOSHI
|
|
159
|
-
"
|
|
160
|
-
//
|
|
161
|
-
"
|
|
162
|
-
//
|
|
163
|
-
"
|
|
164
|
-
//
|
|
270
|
+
"0x6921b130d297cc43754afba22e5eac0fbf8db75b": "doginme",
|
|
271
|
+
// DOGINME
|
|
272
|
+
"0xb1a03eda10342529bbf8eb700a06c60441fef25d": "mister-miggles",
|
|
273
|
+
// MIGGLES
|
|
274
|
+
"0x7f12d13b34f5f4f0a9449c16bcd42f0da47af200": "normie-2",
|
|
275
|
+
// NORMIE
|
|
276
|
+
"0x27d2decb4bfc9c76f0309b8e88dec3a601fe25a8": "bald",
|
|
277
|
+
// BALD
|
|
278
|
+
"0x768be13e1680b5ebe0024c42c896e3db59ec0149": "ski-mask-dog"
|
|
279
|
+
// SKI
|
|
165
280
|
};
|
|
166
|
-
var STABLECOIN_IDS = /* @__PURE__ */ new Set(["usd-coin", "dai"]);
|
|
281
|
+
var STABLECOIN_IDS = /* @__PURE__ */ new Set(["usd-coin", "dai", "tether"]);
|
|
167
282
|
var PRICE_STALENESS_MS = 6e4;
|
|
168
283
|
var MarketDataService = class {
|
|
169
284
|
rpcUrl;
|
|
@@ -319,6 +434,12 @@ var MarketDataService = class {
|
|
|
319
434
|
const balances = {};
|
|
320
435
|
const wallet = walletAddress;
|
|
321
436
|
try {
|
|
437
|
+
const unknownTokens = tokenAddresses.filter(
|
|
438
|
+
(addr) => TOKEN_DECIMALS[addr.toLowerCase()] === void 0 && !decimalsCache[addr.toLowerCase()]
|
|
439
|
+
);
|
|
440
|
+
if (unknownTokens.length > 0) {
|
|
441
|
+
await Promise.all(unknownTokens.map((addr) => fetchTokenDecimals(this.client, addr)));
|
|
442
|
+
}
|
|
322
443
|
const nativeBalance = await this.client.getBalance({ address: wallet });
|
|
323
444
|
balances[NATIVE_ETH.toLowerCase()] = nativeBalance;
|
|
324
445
|
const erc20Promises = tokenAddresses.map(async (tokenAddress) => {
|
|
@@ -4198,6 +4319,13 @@ var AgentRuntime = class {
|
|
|
4198
4319
|
try {
|
|
4199
4320
|
this.riskUniverse = await this.client.registry.getRiskUniverse(agentId);
|
|
4200
4321
|
console.log(`Risk universe: ${RISK_UNIVERSE_NAMES[this.riskUniverse] || this.riskUniverse}`);
|
|
4322
|
+
if (this.riskUniverse === 4) {
|
|
4323
|
+
this.allowedTokens.clear();
|
|
4324
|
+
this.config.allowedTokens = void 0;
|
|
4325
|
+
console.log("Frontier risk universe: all tokens allowed (no restrictions)");
|
|
4326
|
+
console.log("Frontier risk universe: vault creation is disabled");
|
|
4327
|
+
return;
|
|
4328
|
+
}
|
|
4201
4329
|
const configTokens = this.config.allowedTokens || this.getDefaultTokens();
|
|
4202
4330
|
const verified = [];
|
|
4203
4331
|
for (const token of configTokens) {
|
|
@@ -4220,10 +4348,7 @@ var AgentRuntime = class {
|
|
|
4220
4348
|
}
|
|
4221
4349
|
}
|
|
4222
4350
|
this.config.allowedTokens = verified;
|
|
4223
|
-
console.log(`Allowed tokens loaded: ${verified.length}
|
|
4224
|
-
if (this.riskUniverse === 4) {
|
|
4225
|
-
console.warn("Frontier risk universe: vault creation is disabled");
|
|
4226
|
-
}
|
|
4351
|
+
console.log(`Allowed tokens loaded: ${verified.length} verified`);
|
|
4227
4352
|
} catch (error) {
|
|
4228
4353
|
console.warn(
|
|
4229
4354
|
"Could not load trading restrictions from registry (using defaults):",
|
|
@@ -5327,7 +5452,7 @@ function loadSecureEnv(basePath, passphrase) {
|
|
|
5327
5452
|
}
|
|
5328
5453
|
|
|
5329
5454
|
// src/index.ts
|
|
5330
|
-
var AGENT_VERSION = "0.1.
|
|
5455
|
+
var AGENT_VERSION = "0.1.27";
|
|
5331
5456
|
// Annotate the CommonJS export names for ESM import in node:
|
|
5332
5457
|
0 && (module.exports = {
|
|
5333
5458
|
AGENT_VERSION,
|
package/dist/index.mjs
CHANGED