@sherwoodagent/cli 0.65.1 → 0.72.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{abis-4HWN2E3H.js → abis-KP7M4IPM.js} +4 -2
- package/dist/addresses-HJDYFLWZ.js +45 -0
- package/dist/{agent-AETROOEW.js → agent-6OJKQVEG.js} +10 -10
- package/dist/{agent-AETROOEW.js.map → agent-6OJKQVEG.js.map} +1 -1
- package/dist/{chat-SL4O7Y3C.js → chat-2DKD3QPA.js} +37 -36
- package/dist/chat-2DKD3QPA.js.map +1 -0
- package/dist/{chunk-7INQASHO.js → chunk-3YUMQGJD.js} +109 -129
- package/dist/chunk-3YUMQGJD.js.map +1 -0
- package/dist/{chunk-W2ZUPR3W.js → chunk-5DWB5Y7G.js} +9 -9
- package/dist/chunk-5DWB5Y7G.js.map +1 -0
- package/dist/{chunk-D4AQBGF4.js → chunk-6SRIVGAV.js} +23 -18
- package/dist/chunk-6SRIVGAV.js.map +1 -0
- package/dist/{chunk-HE3NY4JJ.js → chunk-ASF2WTSW.js} +6 -6
- package/dist/chunk-ASF2WTSW.js.map +1 -0
- package/dist/{chunk-YZHZSBES.js → chunk-BQMOE4FJ.js} +144 -37
- package/dist/chunk-BQMOE4FJ.js.map +1 -0
- package/dist/{chunk-2W4KGGPU.js → chunk-GSC7PVEO.js} +27 -27
- package/dist/chunk-GSC7PVEO.js.map +1 -0
- package/dist/chunk-GT3KCKF6.js +124 -0
- package/dist/chunk-GT3KCKF6.js.map +1 -0
- package/dist/{chunk-RO26TXXE.js → chunk-ITZT5HD4.js} +2 -2
- package/dist/{chunk-UBAX22KA.js → chunk-OZLX666C.js} +4 -4
- package/dist/chunk-OZLX666C.js.map +1 -0
- package/dist/{chunk-OKGTNYYW.js → chunk-PDUGL4EY.js} +106 -128
- package/dist/chunk-PDUGL4EY.js.map +1 -0
- package/dist/chunk-RNASYOQT.js +111 -0
- package/dist/chunk-RNASYOQT.js.map +1 -0
- package/dist/{chunk-AQNHSYJ7.js → chunk-SVSJNZ5D.js} +6 -6
- package/dist/{chunk-YJSCIQUZ.js → chunk-UC5RMCB3.js} +6 -6
- package/dist/chunk-UC5RMCB3.js.map +1 -0
- package/dist/chunk-YLYANZMC.js +308 -0
- package/dist/chunk-YLYANZMC.js.map +1 -0
- package/dist/{chunk-2H6IGGKN.js → chunk-ZYXFKVYF.js} +26 -13
- package/dist/chunk-ZYXFKVYF.js.map +1 -0
- package/dist/{client-KBBFAMEI.js → client-K4JCNPVV.js} +4 -4
- package/dist/{config-REASKDIK.js → config-FAQO37S7.js} +10 -10
- package/dist/{cron-EOULYO3R.js → cron-QMLRWDJG.js} +19 -17
- package/dist/cron-QMLRWDJG.js.map +1 -0
- package/dist/{eas-5VIHTS3N.js → eas-ZXGUNYC5.js} +7 -7
- package/dist/{governor-UBUNIO3U.js → governor-CV5PITE3.js} +13 -13
- package/dist/index.js +1854 -1078
- package/dist/index.js.map +1 -1
- package/dist/{ipfs-IGXLLJCF.js → ipfs-VGWTUORE.js} +2 -2
- package/dist/{network-3ZU7UBDU.js → network-DHWEYXP2.js} +7 -7
- package/dist/{price-3BXZKK6B.js → price-GOX6P4NT.js} +6 -6
- package/dist/{research-OGMEJBX3.js → research-6D7NNJX4.js} +22 -22
- package/dist/research-6D7NNJX4.js.map +1 -0
- package/dist/research-EFNVHU7G.js +14 -0
- package/dist/{session-FPQGAMSS.js → session-LDLW66K3.js} +28 -28
- package/dist/session-LDLW66K3.js.map +1 -0
- package/dist/{session-XAW5UIXP.js → session-XBQY7SBJ.js} +2 -2
- package/dist/{trade-5KIGBEOP.js → trade-7NNZXP5B.js} +34 -34
- package/dist/trade-7NNZXP5B.js.map +1 -0
- package/dist/vault-SIL4QL5U.js +54 -0
- package/dist/vault-SIL4QL5U.js.map +1 -0
- package/dist/{xmtp-MR6OJ76L.js → xmtp-QNOVDLXX.js} +13 -12
- package/dist/xmtp-QNOVDLXX.js.map +1 -0
- package/package.json +4 -3
- package/dist/addresses-FXTJXDI7.js +0 -35
- package/dist/chat-SL4O7Y3C.js.map +0 -1
- package/dist/chunk-2H6IGGKN.js.map +0 -1
- package/dist/chunk-2LRC7I33.js +0 -186
- package/dist/chunk-2LRC7I33.js.map +0 -1
- package/dist/chunk-2W4KGGPU.js.map +0 -1
- package/dist/chunk-7INQASHO.js.map +0 -1
- package/dist/chunk-D4AQBGF4.js.map +0 -1
- package/dist/chunk-HE3NY4JJ.js.map +0 -1
- package/dist/chunk-OKGTNYYW.js.map +0 -1
- package/dist/chunk-UBAX22KA.js.map +0 -1
- package/dist/chunk-VAOCUQMY.js +0 -489
- package/dist/chunk-VAOCUQMY.js.map +0 -1
- package/dist/chunk-W2ZUPR3W.js.map +0 -1
- package/dist/chunk-YJSCIQUZ.js.map +0 -1
- package/dist/chunk-YZHZSBES.js.map +0 -1
- package/dist/cron-EOULYO3R.js.map +0 -1
- package/dist/research-OGMEJBX3.js.map +0 -1
- package/dist/research-XEXTHDT3.js +0 -14
- package/dist/session-FPQGAMSS.js.map +0 -1
- package/dist/trade-5KIGBEOP.js.map +0 -1
- package/dist/xmtp-MR6OJ76L.js.map +0 -1
- /package/dist/{abis-4HWN2E3H.js.map → abis-KP7M4IPM.js.map} +0 -0
- /package/dist/{addresses-FXTJXDI7.js.map → addresses-HJDYFLWZ.js.map} +0 -0
- /package/dist/{chunk-RO26TXXE.js.map → chunk-ITZT5HD4.js.map} +0 -0
- /package/dist/{chunk-AQNHSYJ7.js.map → chunk-SVSJNZ5D.js.map} +0 -0
- /package/dist/{client-KBBFAMEI.js.map → client-K4JCNPVV.js.map} +0 -0
- /package/dist/{config-REASKDIK.js.map → config-FAQO37S7.js.map} +0 -0
- /package/dist/{eas-5VIHTS3N.js.map → eas-ZXGUNYC5.js.map} +0 -0
- /package/dist/{governor-UBUNIO3U.js.map → governor-CV5PITE3.js.map} +0 -0
- /package/dist/{ipfs-IGXLLJCF.js.map → ipfs-VGWTUORE.js.map} +0 -0
- /package/dist/{network-3ZU7UBDU.js.map → network-DHWEYXP2.js.map} +0 -0
- /package/dist/{price-3BXZKK6B.js.map → price-GOX6P4NT.js.map} +0 -0
- /package/dist/{research-XEXTHDT3.js.map → research-EFNVHU7G.js.map} +0 -0
- /package/dist/{session-XAW5UIXP.js.map → session-XBQY7SBJ.js.map} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/lib/venice.ts"],"sourcesContent":["/**\n * Venice AI API integration — web3 key generation, validation, and inference.\n *\n * Key provisioning flow:\n * 1. GET /api_keys/generate_web3_key → validation token\n * 2. Sign token with agent wallet (EIP-191)\n * 3. POST /api_keys/generate_web3_key → API key\n *\n * Inference:\n * POST /chat/completions with Bearer auth → chat completion response\n *\n * The API key is stored in ~/.sherwood/config.json.\n * Venice requires the signing wallet to hold staked VVV (sVVV).\n */\n\nimport chalk from \"chalk\";\nimport { getAccount } from \"./client.js\";\nimport { setVeniceApiKey, getVeniceApiKey } from \"./config.js\";\n\nconst VENICE_API_BASE = \"https://api.venice.ai/api/v1\";\n\n// ── Retry policy for chatCompletion ──\n\nconst RETRY_MAX_ATTEMPTS = 3;\nconst RETRY_BASE_DELAYS_MS = [1000, 2000, 4000]; // 1s, 2s, 4s\nconst RETRY_JITTER_PCT = 0.2; // ±20%\nconst RETRYABLE_STATUS = new Set([429, 500, 502, 503, 504]);\n\n/**\n * Transient HTTP error raised by `chatCompletion` before retry logic kicks in.\n * Carries the response status so `shouldRetry` can inspect it.\n */\nclass VeniceHttpError extends Error {\n readonly status: number;\n readonly body: string;\n constructor(status: number, body: string) {\n super(`Venice inference failed: ${status} ${body}`);\n this.name = \"VeniceHttpError\";\n this.status = status;\n this.body = body;\n }\n}\n\n/**\n * Decide whether a failed `chatCompletion` HTTP attempt is worth retrying.\n * Retries: 429, 5xx, and network-class errors (fetch TypeError / ECONNRESET).\n * Never retries: AbortError (user/timeout), 4xx client errors, parse errors.\n */\nfunction shouldRetry(err: unknown): boolean {\n if (!(err instanceof Error)) return false;\n // User/caller abort or outer timeout — never retry\n if (err.name === \"AbortError\") return false;\n if (err instanceof VeniceHttpError) {\n return RETRYABLE_STATUS.has(err.status);\n }\n // Network-class: Node's fetch surfaces these as TypeError with a cause,\n // or occasionally the cause Error carries codes like ECONNRESET/ETIMEDOUT.\n if (err instanceof TypeError) return true;\n const cause = (err as { cause?: unknown }).cause;\n if (cause && typeof cause === \"object\") {\n const code = (cause as { code?: unknown }).code;\n if (typeof code === \"string\" &&\n [\"ECONNRESET\", \"ECONNREFUSED\", \"ETIMEDOUT\", \"EAI_AGAIN\", \"ENOTFOUND\", \"EPIPE\", \"UND_ERR_SOCKET\"].includes(code)) {\n return true;\n }\n }\n return false;\n}\n\nfunction jitter(delayMs: number): number {\n const spread = delayMs * RETRY_JITTER_PCT;\n return Math.max(0, Math.round(delayMs + (Math.random() * 2 - 1) * spread));\n}\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\n/**\n * Provision a Venice API key via web3 wallet signature.\n * The wallet must hold sVVV for this to succeed.\n */\nexport async function provisionApiKey(): Promise<string> {\n const account = getAccount();\n\n // 1. Get validation token (unauthenticated per Venice swagger spec)\n const tokenRes = await fetch(`${VENICE_API_BASE}/api_keys/generate_web3_key`, {\n signal: AbortSignal.timeout(15_000),\n });\n if (!tokenRes.ok) {\n throw new Error(`Failed to get validation token: ${tokenRes.status} ${tokenRes.statusText}`);\n }\n const tokenData = await tokenRes.json();\n const token = tokenData?.data?.token;\n if (!token) {\n throw new Error(\"Venice API returned no validation token\");\n }\n\n // 2. Sign token with wallet (EIP-191)\n const signature = await account.signMessage({ message: token });\n\n // 3. Generate API key\n const keyRes = await fetch(`${VENICE_API_BASE}/api_keys/generate_web3_key`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n signal: AbortSignal.timeout(15_000),\n body: JSON.stringify({\n address: account.address,\n signature,\n token,\n apiKeyType: \"INFERENCE\",\n description: \"Sherwood syndicate agent\",\n }),\n });\n\n if (!keyRes.ok) {\n const body = await keyRes.text();\n throw new Error(`Failed to generate API key: ${keyRes.status} ${body}`);\n }\n\n const keyData = await keyRes.json();\n const apiKey = keyData?.data?.apiKey;\n if (!apiKey) {\n throw new Error(\"Venice API returned no API key\");\n }\n\n // Store in config\n setVeniceApiKey(apiKey);\n\n return apiKey;\n}\n\n/**\n * Check if the stored Venice API key is still valid.\n */\nexport async function checkApiKeyValid(): Promise<boolean> {\n const apiKey = getVeniceApiKey();\n if (!apiKey) return false;\n\n try {\n const res = await fetch(`${VENICE_API_BASE}/models`, {\n headers: { Authorization: `Bearer ${apiKey}` },\n signal: AbortSignal.timeout(15_000),\n });\n return res.ok;\n } catch {\n return false;\n }\n}\n\n// ── Inference ──\n\nexport interface ChatCompletionMessage {\n role: \"system\" | \"user\" | \"assistant\";\n content: string;\n}\n\nexport interface ChatCompletionOptions {\n model: string;\n messages: ChatCompletionMessage[];\n temperature?: number;\n maxTokens?: number;\n enableWebSearch?: boolean;\n disableThinking?: boolean;\n}\n\nexport interface ChatCompletionResult {\n content: string;\n model: string;\n usage: {\n promptTokens: number;\n completionTokens: number;\n totalTokens: number;\n };\n}\n\n/**\n * Call Venice chat completions API for private inference.\n * Requires a provisioned API key (run `sherwood venice provision` first).\n */\nexport async function chatCompletion(opts: ChatCompletionOptions): Promise<ChatCompletionResult> {\n const apiKey = getVeniceApiKey();\n if (!apiKey) {\n throw new Error(\"No Venice API key configured. Run 'sherwood venice provision' first.\");\n }\n\n const body: Record<string, unknown> = {\n model: opts.model,\n messages: opts.messages,\n };\n if (opts.temperature !== undefined) body.temperature = opts.temperature;\n if (opts.maxTokens !== undefined) body.max_tokens = opts.maxTokens;\n\n const veniceParams: Record<string, unknown> = {};\n if (opts.enableWebSearch) veniceParams.enable_web_search = \"on\";\n if (opts.disableThinking) veniceParams.disable_thinking = true;\n if (Object.keys(veniceParams).length > 0) body.venice_parameters = veniceParams;\n\n // Retry loop: exponential backoff with jitter on 429/5xx and network errors.\n // Caller-provided timeouts (e.g. Promise.race in the judge) still win — if\n // the outer timeout fires before retries exhaust, the promise rejects normally.\n let lastErr: unknown;\n let res: Response | undefined;\n for (let attempt = 1; attempt <= RETRY_MAX_ATTEMPTS; attempt++) {\n try {\n res = await fetch(`${VENICE_API_BASE}/chat/completions`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${apiKey}`,\n },\n signal: AbortSignal.timeout(120_000), // inference can be slow\n body: JSON.stringify(body),\n });\n if (!res.ok) {\n const errBody = await res.text();\n throw new VeniceHttpError(res.status, errBody);\n }\n lastErr = undefined;\n break; // success\n } catch (err) {\n lastErr = err;\n if (attempt >= RETRY_MAX_ATTEMPTS || !shouldRetry(err)) {\n throw err;\n }\n const baseDelay = RETRY_BASE_DELAYS_MS[attempt - 1] ?? RETRY_BASE_DELAYS_MS[RETRY_BASE_DELAYS_MS.length - 1];\n const delayMs = jitter(baseDelay);\n const reason = err instanceof VeniceHttpError ? `HTTP ${err.status}` : (err as Error).message || \"network\";\n console.error(chalk.dim(` [venice] retry ${attempt}/${RETRY_MAX_ATTEMPTS} after ${delayMs}ms — ${reason}`));\n await sleep(delayMs);\n }\n }\n\n if (!res || lastErr) {\n // Defensive — the loop either breaks on success or throws on final failure.\n throw lastErr ?? new Error(\"Venice inference failed: no response\");\n }\n\n const data = await res.json();\n const choice = data.choices?.[0];\n if (!choice) {\n throw new Error(\"Venice returned no choices\");\n }\n\n return {\n content: choice.message?.content ?? \"\",\n model: data.model ?? opts.model,\n usage: {\n promptTokens: data.usage?.prompt_tokens ?? 0,\n completionTokens: data.usage?.completion_tokens ?? 0,\n totalTokens: data.usage?.total_tokens ?? 0,\n },\n };\n}\n\n/**\n * List available Venice models.\n * Requires a provisioned API key.\n */\nexport async function listModels(): Promise<string[]> {\n const apiKey = getVeniceApiKey();\n if (!apiKey) {\n throw new Error(\"No Venice API key configured. Run 'sherwood venice provision' first.\");\n }\n\n const res = await fetch(`${VENICE_API_BASE}/models`, {\n headers: { Authorization: `Bearer ${apiKey}` },\n signal: AbortSignal.timeout(15_000),\n });\n\n if (!res.ok) {\n throw new Error(`Failed to list Venice models: ${res.status} ${res.statusText}`);\n }\n\n const data = await res.json();\n return (data.data ?? []).map((m: { id: string }) => m.id);\n}\n"],"mappings":"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","names":[]}
|
package/dist/chunk-VAOCUQMY.js
DELETED
|
@@ -1,489 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
getNetwork
|
|
3
|
-
} from "./chunk-2LRC7I33.js";
|
|
4
|
-
|
|
5
|
-
// src/lib/addresses.ts
|
|
6
|
-
var ZERO = "0x0000000000000000000000000000000000000000";
|
|
7
|
-
var ZERO_BYTES32 = "0x0000000000000000000000000000000000000000000000000000000000000000";
|
|
8
|
-
var BASE_TOKENS = {
|
|
9
|
-
USDC: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
|
|
10
|
-
WETH: "0x4200000000000000000000000000000000000006",
|
|
11
|
-
cbETH: "0x2Ae3F1Ec7F1F5012CFEab0185bfc7aa3cf0DEc22",
|
|
12
|
-
wstETH: "0xc1CBa3fCea344f92D9239c08C0568f6F2F0ee452",
|
|
13
|
-
cbBTC: "0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf",
|
|
14
|
-
DAI: "0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb",
|
|
15
|
-
AERO: "0x940181a94A35A4569E4529A3CDfB74e38FD98631"
|
|
16
|
-
};
|
|
17
|
-
var BASE_MOONWELL = {
|
|
18
|
-
COMPTROLLER: "0xfBb21d0380beE3312B33c4353c8936a0F13EF26C",
|
|
19
|
-
mUSDC: "0xEdc817A28E8B93B03976FBd4a3dDBc9f7D176c22",
|
|
20
|
-
mWETH: "0x628ff693426583D9a7FB391E54366292F509D457",
|
|
21
|
-
mCbETH: "0x3bf93770f2d4a794c3d9EBEfBAeBAE2a8f09A5E5",
|
|
22
|
-
mWstETH: "0x627Fe393Bc6EdDA28e99AE648fD6fF362514304b",
|
|
23
|
-
mCbBTC: "0xF877ACaFA28c19b96727966690b2f44d35aD5976",
|
|
24
|
-
mDAI: "0x73b06D8d18De422E269645eaCe15400DE7462417",
|
|
25
|
-
mAERO: "0x73902f619CEB9B31FD8EFecf435CbDf89E369Ba6"
|
|
26
|
-
};
|
|
27
|
-
var BASE_UNISWAP = {
|
|
28
|
-
SWAP_ROUTER: "0x2626664c2603336E57B271c5C0b26F421741e481",
|
|
29
|
-
QUOTER_V2: "0x3d4e44Eb1374240CE5F1B871ab261CD16335B76a",
|
|
30
|
-
// Redeployed adapter with the QuoterV2 struct-ABI fix. The prior
|
|
31
|
-
// 0x679400a781A66d801C20DfD9E0020704e21e9d54 calls QuoterV1's
|
|
32
|
-
// positional signature against the deployed QuoterV2, which reverts
|
|
33
|
-
// on every quote — strategies built against it execute-fail with
|
|
34
|
-
// QuoteUnavailable. New clones (post this CLI version) point at the
|
|
35
|
-
// fixed adapter; pre-existing clones (e.g. the broken proposals
|
|
36
|
-
// 4 / 5 on the original Base test vault) stay bound to the old one
|
|
37
|
-
// via their stored InitParams and remain unrecoverable — cancel
|
|
38
|
-
// those and re-propose.
|
|
39
|
-
SWAP_ADAPTER: "0x2e8aB422Db9127F1a70d8C38A15903f22B51DA97"
|
|
40
|
-
};
|
|
41
|
-
var BASE_INFRA = {
|
|
42
|
-
MULTICALL3: "0xcA11bde05977b3631167028862bE2a173976CA11"
|
|
43
|
-
};
|
|
44
|
-
var BASE_SEPOLIA_TOKENS = {
|
|
45
|
-
USDC: "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
|
|
46
|
-
// Circle test USDC
|
|
47
|
-
WETH: "0x4200000000000000000000000000000000000006",
|
|
48
|
-
// Canonical bridged WETH
|
|
49
|
-
cbETH: ZERO,
|
|
50
|
-
wstETH: ZERO,
|
|
51
|
-
cbBTC: ZERO,
|
|
52
|
-
DAI: ZERO,
|
|
53
|
-
AERO: ZERO
|
|
54
|
-
};
|
|
55
|
-
var BASE_SEPOLIA_MOONWELL = {
|
|
56
|
-
COMPTROLLER: ZERO,
|
|
57
|
-
mUSDC: ZERO,
|
|
58
|
-
mWETH: ZERO,
|
|
59
|
-
mCbETH: ZERO,
|
|
60
|
-
mWstETH: ZERO,
|
|
61
|
-
mCbBTC: ZERO,
|
|
62
|
-
mDAI: ZERO,
|
|
63
|
-
mAERO: ZERO
|
|
64
|
-
};
|
|
65
|
-
var BASE_SEPOLIA_UNISWAP = {
|
|
66
|
-
SWAP_ROUTER: "0x94cC0AaC535CCDB3C01d6787D6413C739ae12bc4",
|
|
67
|
-
// Uniswap V3 SwapRouter02
|
|
68
|
-
QUOTER_V2: "0xC5290058841028F1614F3A6F0F5816cAd0df5E27",
|
|
69
|
-
// Uniswap V3 QuoterV2
|
|
70
|
-
SWAP_ADAPTER: ZERO
|
|
71
|
-
};
|
|
72
|
-
var BASE_SEPOLIA_INFRA = {
|
|
73
|
-
MULTICALL3: "0xcA11bde05977b3631167028862bE2a173976CA11"
|
|
74
|
-
// Deterministic, same everywhere
|
|
75
|
-
};
|
|
76
|
-
var ROBINHOOD_TESTNET_TOKENS = {
|
|
77
|
-
USDC: ZERO,
|
|
78
|
-
WETH: "0x7943e237c7F95DA44E0301572D358911207852Fa",
|
|
79
|
-
cbETH: ZERO,
|
|
80
|
-
wstETH: ZERO,
|
|
81
|
-
cbBTC: ZERO,
|
|
82
|
-
DAI: ZERO,
|
|
83
|
-
AERO: ZERO,
|
|
84
|
-
TSLA: "0xC9f9c86933092BbbfFF3CCb4b105A4A94bf3Bd4E",
|
|
85
|
-
AMZN: "0x5884aD2f920c162CFBbACc88C9C51AA75eC09E02",
|
|
86
|
-
PLTR: "0x1FBE1a0e43594b3455993B5dE5Fd0A7A266298d0",
|
|
87
|
-
NFLX: "0x3b8262A63d25f0477c4DDE23F83cfe22Cb768C93",
|
|
88
|
-
AMD: "0x71178BAc73cBeb415514eB542a8995b82669778d"
|
|
89
|
-
};
|
|
90
|
-
var ROBINHOOD_TESTNET_MOONWELL = {
|
|
91
|
-
COMPTROLLER: ZERO,
|
|
92
|
-
mUSDC: ZERO,
|
|
93
|
-
mWETH: ZERO,
|
|
94
|
-
mCbETH: ZERO,
|
|
95
|
-
mWstETH: ZERO,
|
|
96
|
-
mCbBTC: ZERO,
|
|
97
|
-
mDAI: ZERO,
|
|
98
|
-
mAERO: ZERO
|
|
99
|
-
};
|
|
100
|
-
var ROBINHOOD_TESTNET_UNISWAP = {
|
|
101
|
-
SWAP_ROUTER: ZERO,
|
|
102
|
-
QUOTER_V2: ZERO,
|
|
103
|
-
SWAP_ADAPTER: ZERO
|
|
104
|
-
};
|
|
105
|
-
var BASE_SYNTHRA = { ROUTER: ZERO, QUOTER: ZERO, FACTORY: ZERO };
|
|
106
|
-
var BASE_SEPOLIA_SYNTHRA = { ROUTER: ZERO, QUOTER: ZERO, FACTORY: ZERO };
|
|
107
|
-
var ROBINHOOD_TESTNET_SYNTHRA = {
|
|
108
|
-
ROUTER: "0x3Ce954107b1A675826B33bF23060Dd655e3758fE",
|
|
109
|
-
QUOTER: "0x231606c321A99DE81e28fE48B07a93F1ba49e713",
|
|
110
|
-
FACTORY: "0x911b4000D3422F482F4062a913885f7b035382Df"
|
|
111
|
-
};
|
|
112
|
-
var BASE_CHAINLINK = {
|
|
113
|
-
VERIFIER_PROXY: "0xDE1A28D87Afd0f546505B28AB50410A5c3a7387a",
|
|
114
|
-
// WSTETH/ETH AggregatorV3 feed on Base (heartbeat 24h, 18 decimals).
|
|
115
|
-
// Used by WstETHMoonwellStrategy._positionValue for live NAV.
|
|
116
|
-
WSTETH_ETH_FEED: "0x43a5C292A453A3bF3606fa856197f09D7B74251a"
|
|
117
|
-
};
|
|
118
|
-
var BASE_SEPOLIA_CHAINLINK = { VERIFIER_PROXY: ZERO, WSTETH_ETH_FEED: ZERO };
|
|
119
|
-
var ROBINHOOD_TESTNET_CHAINLINK = {
|
|
120
|
-
VERIFIER_PROXY: "0x72790f9eB82db492a7DDb6d2af22A270Dcc3Db64",
|
|
121
|
-
WSTETH_ETH_FEED: ZERO
|
|
122
|
-
};
|
|
123
|
-
var ROBINHOOD_TESTNET_INFRA = {
|
|
124
|
-
MULTICALL3: "0xcA11bde05977b3631167028862bE2a173976CA11"
|
|
125
|
-
// Deterministic, same everywhere
|
|
126
|
-
};
|
|
127
|
-
var HYPEREVM_TOKENS = {
|
|
128
|
-
USDC: "0xb88339CB7199b77E23DB6E890353E22632Ba630f",
|
|
129
|
-
WETH: ZERO,
|
|
130
|
-
cbETH: ZERO,
|
|
131
|
-
wstETH: ZERO,
|
|
132
|
-
cbBTC: ZERO,
|
|
133
|
-
DAI: ZERO,
|
|
134
|
-
AERO: ZERO
|
|
135
|
-
};
|
|
136
|
-
var HYPEREVM_TESTNET_TOKENS = {
|
|
137
|
-
USDC: ZERO,
|
|
138
|
-
WETH: ZERO,
|
|
139
|
-
cbETH: ZERO,
|
|
140
|
-
wstETH: ZERO,
|
|
141
|
-
cbBTC: ZERO,
|
|
142
|
-
DAI: ZERO,
|
|
143
|
-
AERO: ZERO
|
|
144
|
-
};
|
|
145
|
-
var HYPEREVM_MOONWELL = {
|
|
146
|
-
COMPTROLLER: ZERO,
|
|
147
|
-
mUSDC: ZERO,
|
|
148
|
-
mWETH: ZERO,
|
|
149
|
-
mCbETH: ZERO,
|
|
150
|
-
mWstETH: ZERO,
|
|
151
|
-
mCbBTC: ZERO,
|
|
152
|
-
mDAI: ZERO,
|
|
153
|
-
mAERO: ZERO
|
|
154
|
-
};
|
|
155
|
-
var HYPEREVM_UNISWAP = { SWAP_ROUTER: ZERO, QUOTER_V2: ZERO, SWAP_ADAPTER: ZERO };
|
|
156
|
-
var HYPEREVM_INFRA = {
|
|
157
|
-
MULTICALL3: "0xcA11bde05977b3631167028862bE2a173976CA11"
|
|
158
|
-
};
|
|
159
|
-
var BASE_ENS = {
|
|
160
|
-
L2_REGISTRAR: "0x866996c808E6244216a3d0df15464FCF5d495394",
|
|
161
|
-
L2_REGISTRY: "0x7a019ce699e27b0ad1e5b51344a58116b9f3b9b1"
|
|
162
|
-
};
|
|
163
|
-
var BASE_SEPOLIA_ENS = {
|
|
164
|
-
L2_REGISTRAR: "0x1fCbe9dFC25e3fa3F7C55b26c7992684A4758b47",
|
|
165
|
-
L2_REGISTRY: "0x06eb7b85b59bc3e50fe4837be776cdd26de602cf"
|
|
166
|
-
};
|
|
167
|
-
var ROBINHOOD_TESTNET_ENS = {
|
|
168
|
-
L2_REGISTRAR: ZERO,
|
|
169
|
-
L2_REGISTRY: ZERO
|
|
170
|
-
};
|
|
171
|
-
var HYPEREVM_ENS = { L2_REGISTRAR: ZERO, L2_REGISTRY: ZERO };
|
|
172
|
-
var BASE_AGENT_REGISTRY = {
|
|
173
|
-
IDENTITY_REGISTRY: "0x8004A169FB4a3325136EB29fA0ceB6D2e539a432",
|
|
174
|
-
REPUTATION_REGISTRY: "0x8004BAa17C55a88189AE136b182e5fdA19dE9b63"
|
|
175
|
-
};
|
|
176
|
-
var BASE_SEPOLIA_AGENT_REGISTRY = {
|
|
177
|
-
IDENTITY_REGISTRY: "0x8004A818BFB912233c491871b3d84c89A494BD9e",
|
|
178
|
-
REPUTATION_REGISTRY: "0x8004B663056A597Dffe9eCcC1965A193B7388713"
|
|
179
|
-
};
|
|
180
|
-
var ROBINHOOD_TESTNET_AGENT_REGISTRY = {
|
|
181
|
-
IDENTITY_REGISTRY: ZERO,
|
|
182
|
-
REPUTATION_REGISTRY: ZERO
|
|
183
|
-
};
|
|
184
|
-
var HYPEREVM_AGENT_REGISTRY = { IDENTITY_REGISTRY: ZERO, REPUTATION_REGISTRY: ZERO };
|
|
185
|
-
var BASE_SHERWOOD = {
|
|
186
|
-
FACTORY: "0xAC74EC56858d7F1f7618c8e77F65Fc26aDf33c82",
|
|
187
|
-
GOVERNOR: "0x9Fd3c87B34F254e3c5652A0394B9780c2F05d367",
|
|
188
|
-
GUARDIAN_REGISTRY: "0x49E4163b5e4b23F8f3d469Cf6fa197FB6b06A26E",
|
|
189
|
-
WOOD_TOKEN: ZERO,
|
|
190
|
-
// Merkl mainnet distributor — Angle Labs:
|
|
191
|
-
// https://docs.merkl.xyz/merkl-for-providers/merkl-technical-documentation/addresses
|
|
192
|
-
MERKL_DISTRIBUTOR: "0x3Ef3D8bA38EBe18DB133cEc108f4D14CE00Dd9Ae"
|
|
193
|
-
};
|
|
194
|
-
var BASE_SEPOLIA_SHERWOOD = {
|
|
195
|
-
FACTORY: "0x121AaC2B96Ec365e457fcCc1C2ED5a6142064069",
|
|
196
|
-
GOVERNOR: "0xE5ecf2B06E3f3e298B632C0cf6575f9d9422F55E",
|
|
197
|
-
GUARDIAN_REGISTRY: ZERO,
|
|
198
|
-
WOOD_TOKEN: ZERO,
|
|
199
|
-
MERKL_DISTRIBUTOR: ZERO
|
|
200
|
-
};
|
|
201
|
-
var ROBINHOOD_TESTNET_SHERWOOD = {
|
|
202
|
-
FACTORY: "0x6d026e2f5Ff0C34A01690EC46Cb601B8fF391985",
|
|
203
|
-
GOVERNOR: "0xd882056ba6b0aEd8908c541884B327121E2f2C9C",
|
|
204
|
-
GUARDIAN_REGISTRY: ZERO,
|
|
205
|
-
WOOD_TOKEN: ZERO,
|
|
206
|
-
MERKL_DISTRIBUTOR: ZERO
|
|
207
|
-
};
|
|
208
|
-
var HYPEREVM_SHERWOOD = {
|
|
209
|
-
FACTORY: "0xd05Ae0E8bcf13075C29817c805d6Cc14F214393a",
|
|
210
|
-
GOVERNOR: "0x67AD3D5F3d127Ef923Fd6f67b178633c408D3fd3",
|
|
211
|
-
GUARDIAN_REGISTRY: "0x8b5710EB4e2fA639F364Dcc3F3B30c8f12F460b9",
|
|
212
|
-
WOOD_TOKEN: ZERO,
|
|
213
|
-
MERKL_DISTRIBUTOR: ZERO
|
|
214
|
-
};
|
|
215
|
-
var BASE_VENICE = {
|
|
216
|
-
VVV: "0xacfe6019ed1a7dc6f7b508c02d1b04ec88cc21bf",
|
|
217
|
-
STAKING: "0x321b7ff75154472b18edb199033ff4d116f340ff",
|
|
218
|
-
// also the sVVV ERC-20
|
|
219
|
-
DIEM: "0xF4d97F2da56e8c3098f3a8D538DB630A2606a024"
|
|
220
|
-
};
|
|
221
|
-
var BASE_SEPOLIA_VENICE = {
|
|
222
|
-
VVV: ZERO,
|
|
223
|
-
STAKING: ZERO,
|
|
224
|
-
DIEM: ZERO
|
|
225
|
-
};
|
|
226
|
-
var ROBINHOOD_TESTNET_VENICE = {
|
|
227
|
-
VVV: ZERO,
|
|
228
|
-
STAKING: ZERO,
|
|
229
|
-
DIEM: ZERO
|
|
230
|
-
};
|
|
231
|
-
var HYPEREVM_VENICE = { VVV: ZERO, STAKING: ZERO, DIEM: ZERO };
|
|
232
|
-
var BASE_AERODROME = {
|
|
233
|
-
ROUTER: "0xcF77a3Ba9A5CA399B7c97c74d54e5b1Beb874E43",
|
|
234
|
-
FACTORY: "0x420DD381b31aEf6683db6B902084cB0FFECe40Da"
|
|
235
|
-
};
|
|
236
|
-
var BASE_SEPOLIA_AERODROME = {
|
|
237
|
-
ROUTER: ZERO,
|
|
238
|
-
FACTORY: ZERO
|
|
239
|
-
};
|
|
240
|
-
var ROBINHOOD_TESTNET_AERODROME = {
|
|
241
|
-
ROUTER: ZERO,
|
|
242
|
-
FACTORY: ZERO
|
|
243
|
-
};
|
|
244
|
-
var HYPEREVM_AERODROME = { ROUTER: ZERO, FACTORY: ZERO };
|
|
245
|
-
var BASE_STRATEGY_TEMPLATES = {
|
|
246
|
-
MOONWELL_SUPPLY: "0xb9Cd6d6720fc224508A07f0e43254A3cD65770E0",
|
|
247
|
-
AERODROME_LP: "0x6fba9a6D3F40AA1848Ad196564B27a430D29FdB0",
|
|
248
|
-
VENICE_INFERENCE: "0x0dDFf301F8AeB9B95627277f70bb6824CEFf5dF3",
|
|
249
|
-
WSTETH_MOONWELL: "0x23d145Bd100599C7418164FEae235bcE391Ae032",
|
|
250
|
-
MAMO_YIELD: "0x73b9cdC8cAf8853AfE299E144A40e3D51E399463",
|
|
251
|
-
HYPERLIQUID_PERP: ZERO,
|
|
252
|
-
HYPERLIQUID_GRID: ZERO,
|
|
253
|
-
PORTFOLIO: "0x42069e51c415f4BF4442D80F1532Bd38140Bd135"
|
|
254
|
-
};
|
|
255
|
-
var BASE_SEPOLIA_STRATEGY_TEMPLATES = {
|
|
256
|
-
MOONWELL_SUPPLY: "0xf67107afd786b6CB8829e55634b1686B8Bb7937a",
|
|
257
|
-
AERODROME_LP: "0xDf45018C64f5d6fd254B5d5437e96A27D5F01D09",
|
|
258
|
-
VENICE_INFERENCE: "0xB3E20A505D6e086eaEE02a58C264D41cb746E76E",
|
|
259
|
-
WSTETH_MOONWELL: "0x8F75B609519cEC5a9B9DF3cb74BcF095be5Ee2fD",
|
|
260
|
-
MAMO_YIELD: "0x49ea76685D79ff41bF7F60e22d9D367d0981bD58",
|
|
261
|
-
HYPERLIQUID_PERP: ZERO,
|
|
262
|
-
HYPERLIQUID_GRID: ZERO,
|
|
263
|
-
PORTFOLIO: ZERO
|
|
264
|
-
};
|
|
265
|
-
var ROBINHOOD_TESTNET_STRATEGY_TEMPLATES = {
|
|
266
|
-
MOONWELL_SUPPLY: ZERO,
|
|
267
|
-
AERODROME_LP: ZERO,
|
|
268
|
-
VENICE_INFERENCE: ZERO,
|
|
269
|
-
WSTETH_MOONWELL: ZERO,
|
|
270
|
-
MAMO_YIELD: ZERO,
|
|
271
|
-
HYPERLIQUID_PERP: ZERO,
|
|
272
|
-
HYPERLIQUID_GRID: ZERO,
|
|
273
|
-
PORTFOLIO: "0xAe981882923E0C76A7F10E7cAa3782023c0abd9B"
|
|
274
|
-
};
|
|
275
|
-
var HYPEREVM_STRATEGY_TEMPLATES = {
|
|
276
|
-
MOONWELL_SUPPLY: ZERO,
|
|
277
|
-
AERODROME_LP: ZERO,
|
|
278
|
-
VENICE_INFERENCE: ZERO,
|
|
279
|
-
WSTETH_MOONWELL: ZERO,
|
|
280
|
-
MAMO_YIELD: ZERO,
|
|
281
|
-
HYPERLIQUID_PERP: "0x7Cc36bcc6a1f0F2607BacC8692fe2aD52eB14fd7",
|
|
282
|
-
HYPERLIQUID_GRID: "0x36C45dC52FbC267d8536E8456ADe5255eC83A5ab",
|
|
283
|
-
PORTFOLIO: ZERO
|
|
284
|
-
};
|
|
285
|
-
var BASE_EAS = {
|
|
286
|
-
EAS: "0x4200000000000000000000000000000000000021",
|
|
287
|
-
SCHEMA_REGISTRY: "0x4200000000000000000000000000000000000020"
|
|
288
|
-
};
|
|
289
|
-
var BASE_SEPOLIA_EAS = {
|
|
290
|
-
EAS: "0x4200000000000000000000000000000000000021",
|
|
291
|
-
SCHEMA_REGISTRY: "0x4200000000000000000000000000000000000020"
|
|
292
|
-
};
|
|
293
|
-
var ROBINHOOD_TESTNET_EAS = {
|
|
294
|
-
EAS: ZERO,
|
|
295
|
-
SCHEMA_REGISTRY: ZERO
|
|
296
|
-
};
|
|
297
|
-
var HYPEREVM_EAS = { EAS: ZERO, SCHEMA_REGISTRY: ZERO };
|
|
298
|
-
var BASE_EAS_SCHEMAS = {
|
|
299
|
-
SYNDICATE_JOIN_REQUEST: "0x1e7ce17b16233977ba913b156033e98f52029f4bee273a4abefe6c15ce11d5ef",
|
|
300
|
-
AGENT_APPROVED: "0x1013f7b38f433b2a93fc5ac162482813081c64edd67cea9b5a90698531ddb607",
|
|
301
|
-
X402_RESEARCH: "0x86c67f0a59acb3093ecbeb6c4d1d4352e4a48143672e92ef9dd2fdfc8a9ca708",
|
|
302
|
-
VENICE_PROVISION: "0x76d4d6baa72307826cd2fd4ce069bb42ee54cdda6ed6ab208c8d233c893fb7f1",
|
|
303
|
-
VENICE_INFERENCE: "0xf9b4e530f3016c19439b67372a1c213c9339857627fb817032614b97433a2a14",
|
|
304
|
-
TRADE_EXECUTED: "0x06bb488363a468f7f857ddc8cfffe918d048b8746a0d59eca9cd7f58dbdb4af6"
|
|
305
|
-
};
|
|
306
|
-
var BASE_SEPOLIA_EAS_SCHEMAS = {
|
|
307
|
-
SYNDICATE_JOIN_REQUEST: "0x1e7ce17b16233977ba913b156033e98f52029f4bee273a4abefe6c15ce11d5ef",
|
|
308
|
-
AGENT_APPROVED: "0x1013f7b38f433b2a93fc5ac162482813081c64edd67cea9b5a90698531ddb607",
|
|
309
|
-
X402_RESEARCH: "0x86c67f0a59acb3093ecbeb6c4d1d4352e4a48143672e92ef9dd2fdfc8a9ca708",
|
|
310
|
-
VENICE_PROVISION: "0x76d4d6baa72307826cd2fd4ce069bb42ee54cdda6ed6ab208c8d233c893fb7f1",
|
|
311
|
-
VENICE_INFERENCE: "0xf9b4e530f3016c19439b67372a1c213c9339857627fb817032614b97433a2a14",
|
|
312
|
-
TRADE_EXECUTED: "0x06bb488363a468f7f857ddc8cfffe918d048b8746a0d59eca9cd7f58dbdb4af6"
|
|
313
|
-
};
|
|
314
|
-
var ROBINHOOD_TESTNET_EAS_SCHEMAS = {
|
|
315
|
-
SYNDICATE_JOIN_REQUEST: ZERO_BYTES32,
|
|
316
|
-
AGENT_APPROVED: ZERO_BYTES32,
|
|
317
|
-
X402_RESEARCH: ZERO_BYTES32,
|
|
318
|
-
VENICE_PROVISION: ZERO_BYTES32,
|
|
319
|
-
VENICE_INFERENCE: ZERO_BYTES32,
|
|
320
|
-
TRADE_EXECUTED: ZERO_BYTES32
|
|
321
|
-
};
|
|
322
|
-
var HYPEREVM_EAS_SCHEMAS = {
|
|
323
|
-
SYNDICATE_JOIN_REQUEST: ZERO_BYTES32,
|
|
324
|
-
AGENT_APPROVED: ZERO_BYTES32,
|
|
325
|
-
X402_RESEARCH: ZERO_BYTES32,
|
|
326
|
-
VENICE_PROVISION: ZERO_BYTES32,
|
|
327
|
-
VENICE_INFERENCE: ZERO_BYTES32,
|
|
328
|
-
TRADE_EXECUTED: ZERO_BYTES32
|
|
329
|
-
};
|
|
330
|
-
var TOKEN_REGISTRY = {
|
|
331
|
-
base: BASE_TOKENS,
|
|
332
|
-
"base-sepolia": BASE_SEPOLIA_TOKENS,
|
|
333
|
-
"robinhood-testnet": ROBINHOOD_TESTNET_TOKENS,
|
|
334
|
-
hyperevm: HYPEREVM_TOKENS,
|
|
335
|
-
"hyperevm-testnet": HYPEREVM_TESTNET_TOKENS
|
|
336
|
-
};
|
|
337
|
-
var MOONWELL_REGISTRY = {
|
|
338
|
-
base: BASE_MOONWELL,
|
|
339
|
-
"base-sepolia": BASE_SEPOLIA_MOONWELL,
|
|
340
|
-
"robinhood-testnet": ROBINHOOD_TESTNET_MOONWELL,
|
|
341
|
-
hyperevm: HYPEREVM_MOONWELL,
|
|
342
|
-
"hyperevm-testnet": HYPEREVM_MOONWELL
|
|
343
|
-
};
|
|
344
|
-
var UNISWAP_REGISTRY = {
|
|
345
|
-
base: BASE_UNISWAP,
|
|
346
|
-
"base-sepolia": BASE_SEPOLIA_UNISWAP,
|
|
347
|
-
"robinhood-testnet": ROBINHOOD_TESTNET_UNISWAP,
|
|
348
|
-
hyperevm: HYPEREVM_UNISWAP,
|
|
349
|
-
"hyperevm-testnet": HYPEREVM_UNISWAP
|
|
350
|
-
};
|
|
351
|
-
var INFRA_REGISTRY = {
|
|
352
|
-
base: BASE_INFRA,
|
|
353
|
-
"base-sepolia": BASE_SEPOLIA_INFRA,
|
|
354
|
-
"robinhood-testnet": ROBINHOOD_TESTNET_INFRA,
|
|
355
|
-
hyperevm: HYPEREVM_INFRA,
|
|
356
|
-
"hyperevm-testnet": HYPEREVM_INFRA
|
|
357
|
-
};
|
|
358
|
-
var ENS_REGISTRY = {
|
|
359
|
-
base: BASE_ENS,
|
|
360
|
-
"base-sepolia": BASE_SEPOLIA_ENS,
|
|
361
|
-
"robinhood-testnet": ROBINHOOD_TESTNET_ENS,
|
|
362
|
-
hyperevm: HYPEREVM_ENS,
|
|
363
|
-
"hyperevm-testnet": HYPEREVM_ENS
|
|
364
|
-
};
|
|
365
|
-
var AGENT_REGISTRY_MAP = {
|
|
366
|
-
base: BASE_AGENT_REGISTRY,
|
|
367
|
-
"base-sepolia": BASE_SEPOLIA_AGENT_REGISTRY,
|
|
368
|
-
"robinhood-testnet": ROBINHOOD_TESTNET_AGENT_REGISTRY,
|
|
369
|
-
hyperevm: HYPEREVM_AGENT_REGISTRY,
|
|
370
|
-
"hyperevm-testnet": HYPEREVM_AGENT_REGISTRY
|
|
371
|
-
};
|
|
372
|
-
var SHERWOOD_REGISTRY = {
|
|
373
|
-
base: BASE_SHERWOOD,
|
|
374
|
-
"base-sepolia": BASE_SEPOLIA_SHERWOOD,
|
|
375
|
-
"robinhood-testnet": ROBINHOOD_TESTNET_SHERWOOD,
|
|
376
|
-
hyperevm: HYPEREVM_SHERWOOD,
|
|
377
|
-
"hyperevm-testnet": HYPEREVM_SHERWOOD
|
|
378
|
-
};
|
|
379
|
-
var VENICE_REGISTRY = {
|
|
380
|
-
base: BASE_VENICE,
|
|
381
|
-
"base-sepolia": BASE_SEPOLIA_VENICE,
|
|
382
|
-
"robinhood-testnet": ROBINHOOD_TESTNET_VENICE,
|
|
383
|
-
hyperevm: HYPEREVM_VENICE,
|
|
384
|
-
"hyperevm-testnet": HYPEREVM_VENICE
|
|
385
|
-
};
|
|
386
|
-
var AERODROME_REGISTRY = {
|
|
387
|
-
base: BASE_AERODROME,
|
|
388
|
-
"base-sepolia": BASE_SEPOLIA_AERODROME,
|
|
389
|
-
"robinhood-testnet": ROBINHOOD_TESTNET_AERODROME,
|
|
390
|
-
hyperevm: HYPEREVM_AERODROME,
|
|
391
|
-
"hyperevm-testnet": HYPEREVM_AERODROME
|
|
392
|
-
};
|
|
393
|
-
var STRATEGY_TEMPLATE_REGISTRY = {
|
|
394
|
-
base: BASE_STRATEGY_TEMPLATES,
|
|
395
|
-
"base-sepolia": BASE_SEPOLIA_STRATEGY_TEMPLATES,
|
|
396
|
-
"robinhood-testnet": ROBINHOOD_TESTNET_STRATEGY_TEMPLATES,
|
|
397
|
-
hyperevm: HYPEREVM_STRATEGY_TEMPLATES,
|
|
398
|
-
"hyperevm-testnet": HYPEREVM_STRATEGY_TEMPLATES
|
|
399
|
-
};
|
|
400
|
-
var HYPEREVM_SYNTHRA = { ROUTER: ZERO, QUOTER: ZERO, FACTORY: ZERO };
|
|
401
|
-
var HYPEREVM_CHAINLINK = { VERIFIER_PROXY: ZERO, WSTETH_ETH_FEED: ZERO };
|
|
402
|
-
var SYNTHRA_REGISTRY = {
|
|
403
|
-
base: BASE_SYNTHRA,
|
|
404
|
-
"base-sepolia": BASE_SEPOLIA_SYNTHRA,
|
|
405
|
-
"robinhood-testnet": ROBINHOOD_TESTNET_SYNTHRA,
|
|
406
|
-
hyperevm: HYPEREVM_SYNTHRA,
|
|
407
|
-
"hyperevm-testnet": HYPEREVM_SYNTHRA
|
|
408
|
-
};
|
|
409
|
-
var CHAINLINK_REGISTRY = {
|
|
410
|
-
base: BASE_CHAINLINK,
|
|
411
|
-
"base-sepolia": BASE_SEPOLIA_CHAINLINK,
|
|
412
|
-
"robinhood-testnet": ROBINHOOD_TESTNET_CHAINLINK,
|
|
413
|
-
hyperevm: HYPEREVM_CHAINLINK,
|
|
414
|
-
"hyperevm-testnet": HYPEREVM_CHAINLINK
|
|
415
|
-
};
|
|
416
|
-
var EAS_CONTRACT_REGISTRY = {
|
|
417
|
-
base: BASE_EAS,
|
|
418
|
-
"base-sepolia": BASE_SEPOLIA_EAS,
|
|
419
|
-
"robinhood-testnet": ROBINHOOD_TESTNET_EAS,
|
|
420
|
-
hyperevm: HYPEREVM_EAS,
|
|
421
|
-
"hyperevm-testnet": HYPEREVM_EAS
|
|
422
|
-
};
|
|
423
|
-
var EAS_SCHEMA_REGISTRY = {
|
|
424
|
-
base: BASE_EAS_SCHEMAS,
|
|
425
|
-
"base-sepolia": BASE_SEPOLIA_EAS_SCHEMAS,
|
|
426
|
-
"robinhood-testnet": ROBINHOOD_TESTNET_EAS_SCHEMAS,
|
|
427
|
-
hyperevm: HYPEREVM_EAS_SCHEMAS,
|
|
428
|
-
"hyperevm-testnet": HYPEREVM_EAS_SCHEMAS
|
|
429
|
-
};
|
|
430
|
-
function TOKENS() {
|
|
431
|
-
return TOKEN_REGISTRY[getNetwork()];
|
|
432
|
-
}
|
|
433
|
-
function MOONWELL() {
|
|
434
|
-
return MOONWELL_REGISTRY[getNetwork()];
|
|
435
|
-
}
|
|
436
|
-
function UNISWAP() {
|
|
437
|
-
return UNISWAP_REGISTRY[getNetwork()];
|
|
438
|
-
}
|
|
439
|
-
function INFRA() {
|
|
440
|
-
return INFRA_REGISTRY[getNetwork()];
|
|
441
|
-
}
|
|
442
|
-
function ENS() {
|
|
443
|
-
return ENS_REGISTRY[getNetwork()];
|
|
444
|
-
}
|
|
445
|
-
function AGENT_REGISTRY() {
|
|
446
|
-
return AGENT_REGISTRY_MAP[getNetwork()];
|
|
447
|
-
}
|
|
448
|
-
function VENICE() {
|
|
449
|
-
return VENICE_REGISTRY[getNetwork()];
|
|
450
|
-
}
|
|
451
|
-
function SHERWOOD() {
|
|
452
|
-
return SHERWOOD_REGISTRY[getNetwork()];
|
|
453
|
-
}
|
|
454
|
-
function AERODROME() {
|
|
455
|
-
return AERODROME_REGISTRY[getNetwork()];
|
|
456
|
-
}
|
|
457
|
-
function STRATEGY_TEMPLATES() {
|
|
458
|
-
return STRATEGY_TEMPLATE_REGISTRY[getNetwork()];
|
|
459
|
-
}
|
|
460
|
-
function EAS_CONTRACTS() {
|
|
461
|
-
return EAS_CONTRACT_REGISTRY[getNetwork()];
|
|
462
|
-
}
|
|
463
|
-
function EAS_SCHEMAS() {
|
|
464
|
-
return EAS_SCHEMA_REGISTRY[getNetwork()];
|
|
465
|
-
}
|
|
466
|
-
function SYNTHRA() {
|
|
467
|
-
return SYNTHRA_REGISTRY[getNetwork()];
|
|
468
|
-
}
|
|
469
|
-
function CHAINLINK() {
|
|
470
|
-
return CHAINLINK_REGISTRY[getNetwork()];
|
|
471
|
-
}
|
|
472
|
-
|
|
473
|
-
export {
|
|
474
|
-
TOKENS,
|
|
475
|
-
MOONWELL,
|
|
476
|
-
UNISWAP,
|
|
477
|
-
INFRA,
|
|
478
|
-
ENS,
|
|
479
|
-
AGENT_REGISTRY,
|
|
480
|
-
VENICE,
|
|
481
|
-
SHERWOOD,
|
|
482
|
-
AERODROME,
|
|
483
|
-
STRATEGY_TEMPLATES,
|
|
484
|
-
EAS_CONTRACTS,
|
|
485
|
-
EAS_SCHEMAS,
|
|
486
|
-
SYNTHRA,
|
|
487
|
-
CHAINLINK
|
|
488
|
-
};
|
|
489
|
-
//# sourceMappingURL=chunk-VAOCUQMY.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/lib/addresses.ts"],"sourcesContent":["/**\n * Contract addresses by network.\n *\n * All exports are functions — they resolve at call time based on the\n * current network set via setNetwork(). This ensures --chain works\n * even when modules are imported before the flag is parsed.\n *\n * Zero addresses = protocol not deployed on that chain. Strategies that\n * need them will fail at execution time with a clear allowlist error.\n */\n\nimport type { Address } from \"viem\";\nimport { type Network, getNetwork } from \"./network.js\";\n\nconst ZERO: Address = \"0x0000000000000000000000000000000000000000\";\nconst ZERO_BYTES32 =\n \"0x0000000000000000000000000000000000000000000000000000000000000000\" as `0x${string}`;\n\n// ── Base Mainnet ──\n\nconst BASE_TOKENS = {\n USDC: \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\" as Address,\n WETH: \"0x4200000000000000000000000000000000000006\" as Address,\n cbETH: \"0x2Ae3F1Ec7F1F5012CFEab0185bfc7aa3cf0DEc22\" as Address,\n wstETH: \"0xc1CBa3fCea344f92D9239c08C0568f6F2F0ee452\" as Address,\n cbBTC: \"0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf\" as Address,\n DAI: \"0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb\" as Address,\n AERO: \"0x940181a94A35A4569E4529A3CDfB74e38FD98631\" as Address,\n} as const;\n\nconst BASE_MOONWELL = {\n COMPTROLLER: \"0xfBb21d0380beE3312B33c4353c8936a0F13EF26C\" as Address,\n mUSDC: \"0xEdc817A28E8B93B03976FBd4a3dDBc9f7D176c22\" as Address,\n mWETH: \"0x628ff693426583D9a7FB391E54366292F509D457\" as Address,\n mCbETH: \"0x3bf93770f2d4a794c3d9EBEfBAeBAE2a8f09A5E5\" as Address,\n mWstETH: \"0x627Fe393Bc6EdDA28e99AE648fD6fF362514304b\" as Address,\n mCbBTC: \"0xF877ACaFA28c19b96727966690b2f44d35aD5976\" as Address,\n mDAI: \"0x73b06D8d18De422E269645eaCe15400DE7462417\" as Address,\n mAERO: \"0x73902f619CEB9B31FD8EFecf435CbDf89E369Ba6\" as Address,\n} as const;\n\nconst BASE_UNISWAP = {\n SWAP_ROUTER: \"0x2626664c2603336E57B271c5C0b26F421741e481\" as Address,\n QUOTER_V2: \"0x3d4e44Eb1374240CE5F1B871ab261CD16335B76a\" as Address,\n // Redeployed adapter with the QuoterV2 struct-ABI fix. The prior\n // 0x679400a781A66d801C20DfD9E0020704e21e9d54 calls QuoterV1's\n // positional signature against the deployed QuoterV2, which reverts\n // on every quote — strategies built against it execute-fail with\n // QuoteUnavailable. New clones (post this CLI version) point at the\n // fixed adapter; pre-existing clones (e.g. the broken proposals\n // 4 / 5 on the original Base test vault) stay bound to the old one\n // via their stored InitParams and remain unrecoverable — cancel\n // those and re-propose.\n SWAP_ADAPTER: \"0x2e8aB422Db9127F1a70d8C38A15903f22B51DA97\" as Address,\n} as const;\n\nconst BASE_INFRA = {\n MULTICALL3: \"0xcA11bde05977b3631167028862bE2a173976CA11\" as Address,\n} as const;\n\n// ── Base Sepolia ──\n\nconst BASE_SEPOLIA_TOKENS = {\n USDC: \"0x036CbD53842c5426634e7929541eC2318f3dCF7e\" as Address, // Circle test USDC\n WETH: \"0x4200000000000000000000000000000000000006\" as Address, // Canonical bridged WETH\n cbETH: ZERO,\n wstETH: ZERO,\n cbBTC: ZERO,\n DAI: ZERO,\n AERO: ZERO,\n} as const;\n\nconst BASE_SEPOLIA_MOONWELL = {\n COMPTROLLER: ZERO,\n mUSDC: ZERO,\n mWETH: ZERO,\n mCbETH: ZERO,\n mWstETH: ZERO,\n mCbBTC: ZERO,\n mDAI: ZERO,\n mAERO: ZERO,\n} as const;\n\nconst BASE_SEPOLIA_UNISWAP = {\n SWAP_ROUTER: \"0x94cC0AaC535CCDB3C01d6787D6413C739ae12bc4\" as Address, // Uniswap V3 SwapRouter02\n QUOTER_V2: \"0xC5290058841028F1614F3A6F0F5816cAd0df5E27\" as Address, // Uniswap V3 QuoterV2\n SWAP_ADAPTER: ZERO as Address,\n} as const;\n\nconst BASE_SEPOLIA_INFRA = {\n MULTICALL3: \"0xcA11bde05977b3631167028862bE2a173976CA11\" as Address, // Deterministic, same everywhere\n} as const;\n\n// ── Robinhood L2 Testnet (Arbitrum Orbit, chain 46630) ──\n// Synthra DEX for swaps. Stock tokens available.\n\nconst ROBINHOOD_TESTNET_TOKENS = {\n USDC: ZERO,\n WETH: \"0x7943e237c7F95DA44E0301572D358911207852Fa\" as Address,\n cbETH: ZERO,\n wstETH: ZERO,\n cbBTC: ZERO,\n DAI: ZERO,\n AERO: ZERO,\n TSLA: \"0xC9f9c86933092BbbfFF3CCb4b105A4A94bf3Bd4E\" as Address,\n AMZN: \"0x5884aD2f920c162CFBbACc88C9C51AA75eC09E02\" as Address,\n PLTR: \"0x1FBE1a0e43594b3455993B5dE5Fd0A7A266298d0\" as Address,\n NFLX: \"0x3b8262A63d25f0477c4DDE23F83cfe22Cb768C93\" as Address,\n AMD: \"0x71178BAc73cBeb415514eB542a8995b82669778d\" as Address,\n} as const;\n\nconst ROBINHOOD_TESTNET_MOONWELL = {\n COMPTROLLER: ZERO,\n mUSDC: ZERO,\n mWETH: ZERO,\n mCbETH: ZERO,\n mWstETH: ZERO,\n mCbBTC: ZERO,\n mDAI: ZERO,\n mAERO: ZERO,\n} as const;\n\nconst ROBINHOOD_TESTNET_UNISWAP = {\n SWAP_ROUTER: ZERO,\n QUOTER_V2: ZERO,\n SWAP_ADAPTER: ZERO as Address,\n} as const;\n\n// ── Synthra DEX (Robinhood L2 — Uniswap V3-compatible concentrated liquidity) ──\n\nconst BASE_SYNTHRA = { ROUTER: ZERO, QUOTER: ZERO, FACTORY: ZERO } as const;\nconst BASE_SEPOLIA_SYNTHRA = { ROUTER: ZERO, QUOTER: ZERO, FACTORY: ZERO } as const;\nconst ROBINHOOD_TESTNET_SYNTHRA = {\n ROUTER: \"0x3Ce954107b1A675826B33bF23060Dd655e3758fE\" as Address,\n QUOTER: \"0x231606c321A99DE81e28fE48B07a93F1ba49e713\" as Address,\n FACTORY: \"0x911b4000D3422F482F4062a913885f7b035382Df\" as Address,\n} as const;\n\n// ── Chainlink (Data Streams verifier proxy + AggregatorV3 feeds) ──\n\nconst BASE_CHAINLINK = {\n VERIFIER_PROXY: \"0xDE1A28D87Afd0f546505B28AB50410A5c3a7387a\" as Address,\n // WSTETH/ETH AggregatorV3 feed on Base (heartbeat 24h, 18 decimals).\n // Used by WstETHMoonwellStrategy._positionValue for live NAV.\n WSTETH_ETH_FEED: \"0x43a5C292A453A3bF3606fa856197f09D7B74251a\" as Address,\n} as const;\nconst BASE_SEPOLIA_CHAINLINK = { VERIFIER_PROXY: ZERO, WSTETH_ETH_FEED: ZERO } as const;\nconst ROBINHOOD_TESTNET_CHAINLINK = {\n VERIFIER_PROXY: \"0x72790f9eB82db492a7DDb6d2af22A270Dcc3Db64\" as Address,\n WSTETH_ETH_FEED: ZERO,\n} as const;\n\nconst ROBINHOOD_TESTNET_INFRA = {\n MULTICALL3: \"0xcA11bde05977b3631167028862bE2a173976CA11\" as Address, // Deterministic, same everywhere\n} as const;\n\n// ── HyperEVM (chain 999) ──\n// No Moonwell, no Uniswap, no Venice, no ENS/Durin, no ERC-8004, no EAS.\n// USDC: native USDC on HyperEVM.\n\nconst HYPEREVM_TOKENS = {\n USDC: \"0xb88339CB7199b77E23DB6E890353E22632Ba630f\" as Address,\n WETH: ZERO,\n cbETH: ZERO,\n wstETH: ZERO,\n cbBTC: ZERO,\n DAI: ZERO,\n AERO: ZERO,\n} as const;\n\nconst HYPEREVM_TESTNET_TOKENS = {\n USDC: ZERO,\n WETH: ZERO,\n cbETH: ZERO,\n wstETH: ZERO,\n cbBTC: ZERO,\n DAI: ZERO,\n AERO: ZERO,\n} as const;\n\nconst HYPEREVM_MOONWELL = {\n COMPTROLLER: ZERO, mUSDC: ZERO, mWETH: ZERO, mCbETH: ZERO,\n mWstETH: ZERO, mCbBTC: ZERO, mDAI: ZERO, mAERO: ZERO,\n} as const;\n\nconst HYPEREVM_UNISWAP = { SWAP_ROUTER: ZERO, QUOTER_V2: ZERO, SWAP_ADAPTER: ZERO as Address } as const;\n\nconst HYPEREVM_INFRA = {\n MULTICALL3: \"0xcA11bde05977b3631167028862bE2a173976CA11\" as Address,\n} as const;\n\n// ── ENS / Durin ──\n\nconst BASE_ENS = {\n L2_REGISTRAR: \"0x866996c808E6244216a3d0df15464FCF5d495394\" as Address,\n L2_REGISTRY: \"0x7a019ce699e27b0ad1e5b51344a58116b9f3b9b1\" as Address,\n} as const;\n\nconst BASE_SEPOLIA_ENS = {\n L2_REGISTRAR: \"0x1fCbe9dFC25e3fa3F7C55b26c7992684A4758b47\" as Address,\n L2_REGISTRY: \"0x06eb7b85b59bc3e50fe4837be776cdd26de602cf\" as Address,\n} as const;\n\nconst ROBINHOOD_TESTNET_ENS = {\n L2_REGISTRAR: ZERO,\n L2_REGISTRY: ZERO,\n} as const;\n\nconst HYPEREVM_ENS = { L2_REGISTRAR: ZERO, L2_REGISTRY: ZERO } as const;\n\n// ── ERC-8004 Agent Identity ──\n\nconst BASE_AGENT_REGISTRY = {\n IDENTITY_REGISTRY: \"0x8004A169FB4a3325136EB29fA0ceB6D2e539a432\" as Address,\n REPUTATION_REGISTRY:\n \"0x8004BAa17C55a88189AE136b182e5fdA19dE9b63\" as Address,\n} as const;\n\nconst BASE_SEPOLIA_AGENT_REGISTRY = {\n IDENTITY_REGISTRY: \"0x8004A818BFB912233c491871b3d84c89A494BD9e\" as Address,\n REPUTATION_REGISTRY:\n \"0x8004B663056A597Dffe9eCcC1965A193B7388713\" as Address,\n} as const;\n\nconst ROBINHOOD_TESTNET_AGENT_REGISTRY = {\n IDENTITY_REGISTRY: ZERO,\n REPUTATION_REGISTRY: ZERO,\n} as const;\n\nconst HYPEREVM_AGENT_REGISTRY = { IDENTITY_REGISTRY: ZERO, REPUTATION_REGISTRY: ZERO } as const;\n\n// ── Sherwood Protocol (our deployed contracts) ──\n\n// V1.5: per-network Sherwood entries now include GUARDIAN_REGISTRY + WOOD_TOKEN +\n// MERKL_DISTRIBUTOR. ZERO == not-yet-deployed on that network.\n// V1.5 Base redeploy: fresh factory/governor/registry/vault-impl/executor.\n// Old proxies (factory 0x4a76…6C29, governor 0x2F7C…186a, vault impl\n// 0x2523…cFE, executor 0x4DB1…664a) remain on-chain for historical /\n// settle-out access until ops decommission them.\nconst BASE_SHERWOOD = {\n FACTORY: \"0xAC74EC56858d7F1f7618c8e77F65Fc26aDf33c82\" as Address,\n GOVERNOR: \"0x9Fd3c87B34F254e3c5652A0394B9780c2F05d367\" as Address,\n GUARDIAN_REGISTRY: \"0x49E4163b5e4b23F8f3d469Cf6fa197FB6b06A26E\" as Address,\n WOOD_TOKEN: ZERO,\n // Merkl mainnet distributor — Angle Labs:\n // https://docs.merkl.xyz/merkl-for-providers/merkl-technical-documentation/addresses\n MERKL_DISTRIBUTOR: \"0x3Ef3D8bA38EBe18DB133cEc108f4D14CE00Dd9Ae\" as Address,\n} as const;\n\nconst BASE_SEPOLIA_SHERWOOD = {\n FACTORY: \"0x121AaC2B96Ec365e457fcCc1C2ED5a6142064069\" as Address,\n GOVERNOR: \"0xE5ecf2B06E3f3e298B632C0cf6575f9d9422F55E\" as Address,\n GUARDIAN_REGISTRY: ZERO,\n WOOD_TOKEN: ZERO,\n MERKL_DISTRIBUTOR: ZERO,\n} as const;\n\nconst ROBINHOOD_TESTNET_SHERWOOD = {\n FACTORY: \"0x6d026e2f5Ff0C34A01690EC46Cb601B8fF391985\" as Address,\n GOVERNOR: \"0xd882056ba6b0aEd8908c541884B327121E2f2C9C\" as Address,\n GUARDIAN_REGISTRY: ZERO,\n WOOD_TOKEN: ZERO,\n MERKL_DISTRIBUTOR: ZERO,\n} as const;\n\n// V1.5 beta redeploy on HyperEVM (PR #282 / chore/redeploy-beta-v1.5):\n// CREATE3 salts bumped .2/.1 → .3/.2 to deploy fresh V1.5 contracts at\n// new addresses. Old proxies (factory 0x7e7F…48d3, governor 0x915F…7C21,\n// vault impl 0xB454…ECba, registry 0x121A…4069) remain on-chain for\n// historical access until ops decommission them.\nconst HYPEREVM_SHERWOOD = {\n FACTORY: \"0xd05Ae0E8bcf13075C29817c805d6Cc14F214393a\" as Address,\n GOVERNOR: \"0x67AD3D5F3d127Ef923Fd6f67b178633c408D3fd3\" as Address,\n GUARDIAN_REGISTRY: \"0x8b5710EB4e2fA639F364Dcc3F3B30c8f12F460b9\" as Address,\n WOOD_TOKEN: ZERO,\n MERKL_DISTRIBUTOR: ZERO,\n} as const;\n\n// ── Venice (VVV governance + sVVV staking + DIEM compute) ──\n\nconst BASE_VENICE = {\n VVV: \"0xacfe6019ed1a7dc6f7b508c02d1b04ec88cc21bf\" as Address,\n STAKING: \"0x321b7ff75154472b18edb199033ff4d116f340ff\" as Address, // also the sVVV ERC-20\n DIEM: \"0xF4d97F2da56e8c3098f3a8D538DB630A2606a024\" as Address,\n} as const;\n\nconst BASE_SEPOLIA_VENICE = {\n VVV: ZERO,\n STAKING: ZERO,\n DIEM: ZERO,\n} as const;\n\nconst ROBINHOOD_TESTNET_VENICE = {\n VVV: ZERO,\n STAKING: ZERO,\n DIEM: ZERO,\n} as const;\n\nconst HYPEREVM_VENICE = { VVV: ZERO, STAKING: ZERO, DIEM: ZERO } as const;\n\n// ── Aerodrome (Base ve(3,3) DEX) ──\n\nconst BASE_AERODROME = {\n ROUTER: \"0xcF77a3Ba9A5CA399B7c97c74d54e5b1Beb874E43\" as Address,\n FACTORY: \"0x420DD381b31aEf6683db6B902084cB0FFECe40Da\" as Address,\n} as const;\n\nconst BASE_SEPOLIA_AERODROME = {\n ROUTER: ZERO,\n FACTORY: ZERO,\n} as const;\n\nconst ROBINHOOD_TESTNET_AERODROME = {\n ROUTER: ZERO,\n FACTORY: ZERO,\n} as const;\n\nconst HYPEREVM_AERODROME = { ROUTER: ZERO, FACTORY: ZERO } as const;\n\n// ── Strategy Templates (ERC-1167 clonable singletons) ──\n// Populated after running script/DeployTemplates.s.sol\n\n// V1.5 Base redeploy: the new factory at 0xAC74…3c82 only accepts strategies\n// V1.5 templates implement IStrategy.onLiveDeposit + _positionValue. These\n// addresses replace the V1 templates that were dropped during the V1.5\n// redeploy because they were tied to the old factory.\n//\n// Old V1 addresses (kept on-chain for in-flight settle-out only):\n// MOONWELL_SUPPLY 0x649f8d24096a5eb17b8C73ee5113825AcA259F00\n// AERODROME_LP 0x6ccdD48C6A83cCdD6712DEB02E85FbEA8CF426CE\n// VENICE_INFERENCE 0x49BFDae8353ba15954924274573D427211CCe41b\n// WSTETH_MOONWELL 0xA31851Ab35F9992b0411749ec02Df053e904D1e6\n// MAMO_YIELD 0x9ca8A9B75a46261F107B610b634ecE69D7E6DF42\n// PORTFOLIO 0x7865eEA4063c22d0F55FdD412D345495c7b73f64\nconst BASE_STRATEGY_TEMPLATES = {\n MOONWELL_SUPPLY: \"0xb9Cd6d6720fc224508A07f0e43254A3cD65770E0\" as Address,\n AERODROME_LP: \"0x6fba9a6D3F40AA1848Ad196564B27a430D29FdB0\" as Address,\n VENICE_INFERENCE: \"0x0dDFf301F8AeB9B95627277f70bb6824CEFf5dF3\" as Address,\n WSTETH_MOONWELL: \"0x23d145Bd100599C7418164FEae235bcE391Ae032\" as Address,\n MAMO_YIELD: \"0x73b9cdC8cAf8853AfE299E144A40e3D51E399463\" as Address,\n HYPERLIQUID_PERP: ZERO as Address,\n HYPERLIQUID_GRID: ZERO as Address,\n PORTFOLIO: \"0x42069e51c415f4BF4442D80F1532Bd38140Bd135\" as Address,\n} as const;\n\nconst BASE_SEPOLIA_STRATEGY_TEMPLATES = {\n MOONWELL_SUPPLY: \"0xf67107afd786b6CB8829e55634b1686B8Bb7937a\" as Address,\n AERODROME_LP: \"0xDf45018C64f5d6fd254B5d5437e96A27D5F01D09\" as Address,\n VENICE_INFERENCE: \"0xB3E20A505D6e086eaEE02a58C264D41cb746E76E\" as Address,\n WSTETH_MOONWELL: \"0x8F75B609519cEC5a9B9DF3cb74BcF095be5Ee2fD\" as Address,\n MAMO_YIELD: \"0x49ea76685D79ff41bF7F60e22d9D367d0981bD58\" as Address,\n HYPERLIQUID_PERP: ZERO as Address,\n HYPERLIQUID_GRID: ZERO as Address,\n PORTFOLIO: ZERO as Address,\n} as const;\n\nconst ROBINHOOD_TESTNET_STRATEGY_TEMPLATES = {\n MOONWELL_SUPPLY: ZERO as Address,\n AERODROME_LP: ZERO as Address,\n VENICE_INFERENCE: ZERO as Address,\n WSTETH_MOONWELL: ZERO as Address,\n MAMO_YIELD: ZERO as Address,\n HYPERLIQUID_PERP: ZERO as Address,\n HYPERLIQUID_GRID: ZERO as Address,\n PORTFOLIO: \"0xAe981882923E0C76A7F10E7cAa3782023c0abd9B\" as Address,\n} as const;\n\nconst HYPEREVM_STRATEGY_TEMPLATES = {\n MOONWELL_SUPPLY: ZERO as Address,\n AERODROME_LP: ZERO as Address,\n VENICE_INFERENCE: ZERO as Address,\n WSTETH_MOONWELL: ZERO as Address,\n MAMO_YIELD: ZERO as Address,\n HYPERLIQUID_PERP: \"0x7Cc36bcc6a1f0F2607BacC8692fe2aD52eB14fd7\" as Address,\n HYPERLIQUID_GRID: \"0x36C45dC52FbC267d8536E8456ADe5255eC83A5ab\" as Address,\n PORTFOLIO: ZERO as Address,\n} as const;\n\n// ── EAS (Ethereum Attestation Service) — Base predeploys ──\n\nconst BASE_EAS = {\n EAS: \"0x4200000000000000000000000000000000000021\" as Address,\n SCHEMA_REGISTRY: \"0x4200000000000000000000000000000000000020\" as Address,\n} as const;\n\nconst BASE_SEPOLIA_EAS = {\n EAS: \"0x4200000000000000000000000000000000000021\" as Address,\n SCHEMA_REGISTRY: \"0x4200000000000000000000000000000000000020\" as Address,\n} as const;\n\nconst ROBINHOOD_TESTNET_EAS = {\n EAS: ZERO,\n SCHEMA_REGISTRY: ZERO,\n} as const;\n\nconst HYPEREVM_EAS = { EAS: ZERO, SCHEMA_REGISTRY: ZERO } as const;\n\n// ── EAS Schema UIDs (populated after running scripts/register-eas-schemas.ts) ──\n\nconst BASE_EAS_SCHEMAS = {\n SYNDICATE_JOIN_REQUEST:\n \"0x1e7ce17b16233977ba913b156033e98f52029f4bee273a4abefe6c15ce11d5ef\" as `0x${string}`,\n AGENT_APPROVED:\n \"0x1013f7b38f433b2a93fc5ac162482813081c64edd67cea9b5a90698531ddb607\" as `0x${string}`,\n X402_RESEARCH:\n \"0x86c67f0a59acb3093ecbeb6c4d1d4352e4a48143672e92ef9dd2fdfc8a9ca708\" as `0x${string}`,\n VENICE_PROVISION:\n \"0x76d4d6baa72307826cd2fd4ce069bb42ee54cdda6ed6ab208c8d233c893fb7f1\" as `0x${string}`,\n VENICE_INFERENCE:\n \"0xf9b4e530f3016c19439b67372a1c213c9339857627fb817032614b97433a2a14\" as `0x${string}`,\n TRADE_EXECUTED:\n \"0x06bb488363a468f7f857ddc8cfffe918d048b8746a0d59eca9cd7f58dbdb4af6\" as `0x${string}`,\n} as const;\n\nconst BASE_SEPOLIA_EAS_SCHEMAS = {\n SYNDICATE_JOIN_REQUEST:\n \"0x1e7ce17b16233977ba913b156033e98f52029f4bee273a4abefe6c15ce11d5ef\" as `0x${string}`,\n AGENT_APPROVED:\n \"0x1013f7b38f433b2a93fc5ac162482813081c64edd67cea9b5a90698531ddb607\" as `0x${string}`,\n X402_RESEARCH:\n \"0x86c67f0a59acb3093ecbeb6c4d1d4352e4a48143672e92ef9dd2fdfc8a9ca708\" as `0x${string}`,\n VENICE_PROVISION:\n \"0x76d4d6baa72307826cd2fd4ce069bb42ee54cdda6ed6ab208c8d233c893fb7f1\" as `0x${string}`,\n VENICE_INFERENCE:\n \"0xf9b4e530f3016c19439b67372a1c213c9339857627fb817032614b97433a2a14\" as `0x${string}`,\n TRADE_EXECUTED:\n \"0x06bb488363a468f7f857ddc8cfffe918d048b8746a0d59eca9cd7f58dbdb4af6\" as `0x${string}`,\n} as const;\n\nconst ROBINHOOD_TESTNET_EAS_SCHEMAS = {\n SYNDICATE_JOIN_REQUEST: ZERO_BYTES32,\n AGENT_APPROVED: ZERO_BYTES32,\n X402_RESEARCH: ZERO_BYTES32,\n VENICE_PROVISION: ZERO_BYTES32,\n VENICE_INFERENCE: ZERO_BYTES32,\n TRADE_EXECUTED: ZERO_BYTES32,\n} as const;\n\nconst HYPEREVM_EAS_SCHEMAS = {\n SYNDICATE_JOIN_REQUEST: ZERO_BYTES32, AGENT_APPROVED: ZERO_BYTES32,\n X402_RESEARCH: ZERO_BYTES32, VENICE_PROVISION: ZERO_BYTES32,\n VENICE_INFERENCE: ZERO_BYTES32, TRADE_EXECUTED: ZERO_BYTES32,\n} as const;\n\n// ── Registries (map-based lookup) ──\n\nconst TOKEN_REGISTRY: Record<Network, typeof BASE_TOKENS> = {\n base: BASE_TOKENS,\n \"base-sepolia\": BASE_SEPOLIA_TOKENS,\n \"robinhood-testnet\": ROBINHOOD_TESTNET_TOKENS,\n hyperevm: HYPEREVM_TOKENS,\n \"hyperevm-testnet\": HYPEREVM_TESTNET_TOKENS,\n};\n\nconst MOONWELL_REGISTRY: Record<Network, typeof BASE_MOONWELL> = {\n base: BASE_MOONWELL,\n \"base-sepolia\": BASE_SEPOLIA_MOONWELL,\n \"robinhood-testnet\": ROBINHOOD_TESTNET_MOONWELL,\n hyperevm: HYPEREVM_MOONWELL,\n \"hyperevm-testnet\": HYPEREVM_MOONWELL,\n};\n\nconst UNISWAP_REGISTRY: Record<Network, typeof BASE_UNISWAP> = {\n base: BASE_UNISWAP,\n \"base-sepolia\": BASE_SEPOLIA_UNISWAP,\n \"robinhood-testnet\": ROBINHOOD_TESTNET_UNISWAP,\n hyperevm: HYPEREVM_UNISWAP,\n \"hyperevm-testnet\": HYPEREVM_UNISWAP,\n};\n\nconst INFRA_REGISTRY: Record<Network, typeof BASE_INFRA> = {\n base: BASE_INFRA,\n \"base-sepolia\": BASE_SEPOLIA_INFRA,\n \"robinhood-testnet\": ROBINHOOD_TESTNET_INFRA,\n hyperevm: HYPEREVM_INFRA,\n \"hyperevm-testnet\": HYPEREVM_INFRA,\n};\n\nconst ENS_REGISTRY: Record<Network, typeof BASE_ENS> = {\n base: BASE_ENS,\n \"base-sepolia\": BASE_SEPOLIA_ENS,\n \"robinhood-testnet\": ROBINHOOD_TESTNET_ENS,\n hyperevm: HYPEREVM_ENS,\n \"hyperevm-testnet\": HYPEREVM_ENS,\n};\n\nconst AGENT_REGISTRY_MAP: Record<Network, typeof BASE_AGENT_REGISTRY> = {\n base: BASE_AGENT_REGISTRY,\n \"base-sepolia\": BASE_SEPOLIA_AGENT_REGISTRY,\n \"robinhood-testnet\": ROBINHOOD_TESTNET_AGENT_REGISTRY,\n hyperevm: HYPEREVM_AGENT_REGISTRY,\n \"hyperevm-testnet\": HYPEREVM_AGENT_REGISTRY,\n};\n\nconst SHERWOOD_REGISTRY: Record<Network, typeof BASE_SHERWOOD> = {\n base: BASE_SHERWOOD,\n \"base-sepolia\": BASE_SEPOLIA_SHERWOOD,\n \"robinhood-testnet\": ROBINHOOD_TESTNET_SHERWOOD,\n hyperevm: HYPEREVM_SHERWOOD,\n \"hyperevm-testnet\": HYPEREVM_SHERWOOD,\n};\n\nconst VENICE_REGISTRY: Record<Network, typeof BASE_VENICE> = {\n base: BASE_VENICE,\n \"base-sepolia\": BASE_SEPOLIA_VENICE,\n \"robinhood-testnet\": ROBINHOOD_TESTNET_VENICE,\n hyperevm: HYPEREVM_VENICE,\n \"hyperevm-testnet\": HYPEREVM_VENICE,\n};\n\nconst AERODROME_REGISTRY: Record<Network, typeof BASE_AERODROME> = {\n base: BASE_AERODROME,\n \"base-sepolia\": BASE_SEPOLIA_AERODROME,\n \"robinhood-testnet\": ROBINHOOD_TESTNET_AERODROME,\n hyperevm: HYPEREVM_AERODROME,\n \"hyperevm-testnet\": HYPEREVM_AERODROME,\n};\n\nconst STRATEGY_TEMPLATE_REGISTRY: Record<Network, typeof BASE_STRATEGY_TEMPLATES> = {\n base: BASE_STRATEGY_TEMPLATES,\n \"base-sepolia\": BASE_SEPOLIA_STRATEGY_TEMPLATES,\n \"robinhood-testnet\": ROBINHOOD_TESTNET_STRATEGY_TEMPLATES,\n hyperevm: HYPEREVM_STRATEGY_TEMPLATES,\n \"hyperevm-testnet\": HYPEREVM_STRATEGY_TEMPLATES,\n};\n\nconst HYPEREVM_SYNTHRA = { ROUTER: ZERO, QUOTER: ZERO, FACTORY: ZERO } as const;\nconst HYPEREVM_CHAINLINK = { VERIFIER_PROXY: ZERO, WSTETH_ETH_FEED: ZERO } as const;\n\nconst SYNTHRA_REGISTRY: Record<Network, typeof BASE_SYNTHRA> = {\n base: BASE_SYNTHRA,\n \"base-sepolia\": BASE_SEPOLIA_SYNTHRA,\n \"robinhood-testnet\": ROBINHOOD_TESTNET_SYNTHRA,\n hyperevm: HYPEREVM_SYNTHRA,\n \"hyperevm-testnet\": HYPEREVM_SYNTHRA,\n};\n\nconst CHAINLINK_REGISTRY: Record<Network, typeof BASE_CHAINLINK> = {\n base: BASE_CHAINLINK,\n \"base-sepolia\": BASE_SEPOLIA_CHAINLINK,\n \"robinhood-testnet\": ROBINHOOD_TESTNET_CHAINLINK,\n hyperevm: HYPEREVM_CHAINLINK,\n \"hyperevm-testnet\": HYPEREVM_CHAINLINK,\n};\n\nconst EAS_CONTRACT_REGISTRY: Record<Network, typeof BASE_EAS> = {\n base: BASE_EAS,\n \"base-sepolia\": BASE_SEPOLIA_EAS,\n \"robinhood-testnet\": ROBINHOOD_TESTNET_EAS,\n hyperevm: HYPEREVM_EAS,\n \"hyperevm-testnet\": HYPEREVM_EAS,\n};\n\nconst EAS_SCHEMA_REGISTRY: Record<Network, typeof BASE_EAS_SCHEMAS> = {\n base: BASE_EAS_SCHEMAS,\n \"base-sepolia\": BASE_SEPOLIA_EAS_SCHEMAS,\n \"robinhood-testnet\": ROBINHOOD_TESTNET_EAS_SCHEMAS,\n hyperevm: HYPEREVM_EAS_SCHEMAS,\n \"hyperevm-testnet\": HYPEREVM_EAS_SCHEMAS,\n};\n\n// ── Exports (functions, resolved at call time) ──\n\nexport function TOKENS() {\n return TOKEN_REGISTRY[getNetwork()];\n}\n\nexport function MOONWELL() {\n return MOONWELL_REGISTRY[getNetwork()];\n}\n\nexport function UNISWAP() {\n return UNISWAP_REGISTRY[getNetwork()];\n}\n\nexport function INFRA() {\n return INFRA_REGISTRY[getNetwork()];\n}\n\nexport function ENS() {\n return ENS_REGISTRY[getNetwork()];\n}\n\nexport function AGENT_REGISTRY() {\n return AGENT_REGISTRY_MAP[getNetwork()];\n}\n\nexport function VENICE() {\n return VENICE_REGISTRY[getNetwork()];\n}\n\nexport function SHERWOOD() {\n return SHERWOOD_REGISTRY[getNetwork()];\n}\n\nexport function AERODROME() {\n return AERODROME_REGISTRY[getNetwork()];\n}\n\nexport function STRATEGY_TEMPLATES() {\n return STRATEGY_TEMPLATE_REGISTRY[getNetwork()];\n}\n\nexport function EAS_CONTRACTS() {\n return EAS_CONTRACT_REGISTRY[getNetwork()];\n}\n\nexport function EAS_SCHEMAS() {\n return EAS_SCHEMA_REGISTRY[getNetwork()];\n}\n\nexport function SYNTHRA() {\n return SYNTHRA_REGISTRY[getNetwork()];\n}\n\nexport function CHAINLINK() {\n return CHAINLINK_REGISTRY[getNetwork()];\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/lib/session.ts"],"sourcesContent":["/**\n * Session state management — ~/.sherwood/session.json\n *\n * Tracks per-syndicate cursors for XMTP messages and on-chain events.\n * Enables agents to catch up on what they missed between sessions.\n */\n\nimport fs from \"node:fs\";\nimport os from \"node:os\";\nimport path from \"node:path\";\n\nconst SESSION_DIR = path.join(os.homedir(), \".sherwood\");\nconst SESSION_PATH = path.join(SESSION_DIR, \"session.json\");\n\nexport interface SyndicateSession {\n subdomain: string;\n vault: string; // vault address for event filtering\n governor: string; // governor address for proposal events\n // XMTP cursors\n lastMessageId: string;\n lastMessageTimestamp: number; // unix seconds\n // On-chain cursors\n lastBlockNumber: number;\n // Session metadata\n lastCheckAt: number; // unix seconds\n totalMessagesProcessed: number;\n totalEventsProcessed: number;\n}\n\ninterface SessionState {\n version: 1;\n syndicates: Record<string, SyndicateSession>;\n}\n\nexport function loadSessionState(): SessionState {\n try {\n if (fs.existsSync(SESSION_PATH)) {\n return JSON.parse(fs.readFileSync(SESSION_PATH, \"utf-8\"));\n }\n } catch {\n // Corrupted file — start fresh\n }\n return { version: 1, syndicates: {} };\n}\n\nexport function saveSessionState(state: SessionState): void {\n fs.mkdirSync(SESSION_DIR, { recursive: true });\n fs.writeFileSync(SESSION_PATH, JSON.stringify(state, null, 2));\n}\n\nexport function getSession(subdomain: string): SyndicateSession | undefined {\n const state = loadSessionState();\n return state.syndicates[subdomain];\n}\n\nexport function updateSession(\n subdomain: string,\n update: Partial<SyndicateSession>,\n): void {\n const state = loadSessionState();\n const existing = state.syndicates[subdomain] || {\n subdomain,\n vault: \"\",\n governor: \"\",\n lastMessageId: \"\",\n lastMessageTimestamp: 0,\n lastBlockNumber: 0,\n lastCheckAt: 0,\n totalMessagesProcessed: 0,\n totalEventsProcessed: 0,\n };\n state.syndicates[subdomain] = { ...existing, ...update };\n saveSessionState(state);\n}\n\nexport function resetSession(\n subdomain: string,\n sinceBlock?: number,\n): void {\n const state = loadSessionState();\n if (sinceBlock !== undefined) {\n // Partial reset — just move the block cursor\n if (state.syndicates[subdomain]) {\n state.syndicates[subdomain].lastBlockNumber = sinceBlock;\n saveSessionState(state);\n }\n } else {\n // Full reset\n delete state.syndicates[subdomain];\n saveSessionState(state);\n }\n}\n\nexport function getAllSessions(): Record<string, SyndicateSession> {\n return loadSessionState().syndicates;\n}\n"],"mappings":";AAOA,OAAO,QAAQ;AACf,OAAO,QAAQ;AACf,OAAO,UAAU;AAEjB,IAAM,cAAc,KAAK,KAAK,GAAG,QAAQ,GAAG,WAAW;AACvD,IAAM,eAAe,KAAK,KAAK,aAAa,cAAc;AAsBnD,SAAS,mBAAiC;AAC/C,MAAI;AACF,QAAI,GAAG,WAAW,YAAY,GAAG;AAC/B,aAAO,KAAK,MAAM,GAAG,aAAa,cAAc,OAAO,CAAC;AAAA,IAC1D;AAAA,EACF,QAAQ;AAAA,EAER;AACA,SAAO,EAAE,SAAS,GAAG,YAAY,CAAC,EAAE;AACtC;AAEO,SAAS,iBAAiB,OAA2B;AAC1D,KAAG,UAAU,aAAa,EAAE,WAAW,KAAK,CAAC;AAC7C,KAAG,cAAc,cAAc,KAAK,UAAU,OAAO,MAAM,CAAC,CAAC;AAC/D;AAEO,SAAS,WAAW,WAAiD;AAC1E,QAAM,QAAQ,iBAAiB;AAC/B,SAAO,MAAM,WAAW,SAAS;AACnC;AAEO,SAAS,cACd,WACA,QACM;AACN,QAAM,QAAQ,iBAAiB;AAC/B,QAAM,WAAW,MAAM,WAAW,SAAS,KAAK;AAAA,IAC9C;AAAA,IACA,OAAO;AAAA,IACP,UAAU;AAAA,IACV,eAAe;AAAA,IACf,sBAAsB;AAAA,IACtB,iBAAiB;AAAA,IACjB,aAAa;AAAA,IACb,wBAAwB;AAAA,IACxB,sBAAsB;AAAA,EACxB;AACA,QAAM,WAAW,SAAS,IAAI,EAAE,GAAG,UAAU,GAAG,OAAO;AACvD,mBAAiB,KAAK;AACxB;AAEO,SAAS,aACd,WACA,YACM;AACN,QAAM,QAAQ,iBAAiB;AAC/B,MAAI,eAAe,QAAW;AAE5B,QAAI,MAAM,WAAW,SAAS,GAAG;AAC/B,YAAM,WAAW,SAAS,EAAE,kBAAkB;AAC9C,uBAAiB,KAAK;AAAA,IACxB;AAAA,EACF,OAAO;AAEL,WAAO,MAAM,WAAW,SAAS;AACjC,qBAAiB,KAAK;AAAA,EACxB;AACF;AAEO,SAAS,iBAAmD;AACjE,SAAO,iBAAiB,EAAE;AAC5B;","names":[]}
|