@sherwoodagent/cli 0.38.3 → 0.38.5

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 (34) hide show
  1. package/dist/{addresses-6GJP2WAY.js → addresses-5BITNIGX.js} +2 -2
  2. package/dist/{chat-36TB53HK.js → chat-CLBWW7PV.js} +5 -5
  3. package/dist/{chunk-4EG4TSRE.js → chunk-IQNYBIFE.js} +2 -2
  4. package/dist/{chunk-PNUBECG2.js → chunk-JQBGEYAK.js} +2 -2
  5. package/dist/{chunk-SP2SI63D.js → chunk-OPEVMNEY.js} +2 -2
  6. package/dist/{chunk-XKDB5D4E.js → chunk-PHU6MI3J.js} +2 -2
  7. package/dist/{chunk-6SKMCZ7I.js → chunk-QZSKBYZ2.js} +2 -2
  8. package/dist/{chunk-OPKMVIYJ.js → chunk-RFTJBEZI.js} +11 -11
  9. package/dist/chunk-RFTJBEZI.js.map +1 -0
  10. package/dist/{eas-XNLD5PTV.js → eas-LVJEPWBY.js} +3 -3
  11. package/dist/{governor-ZOIXGEVS.js → governor-HU3CPXMU.js} +3 -3
  12. package/dist/index.js +56 -22
  13. package/dist/index.js.map +1 -1
  14. package/dist/{price-WGV6NYK3.js → price-OZRLJH3X.js} +2 -2
  15. package/dist/{research-AYT6QDJP.js → research-5WEM4WZC.js} +3 -3
  16. package/dist/{session-46SXKEKP.js → session-XRTKPC4Q.js} +5 -5
  17. package/dist/{trade-LIRSGOV7.js → trade-HN4BXDVU.js} +6 -6
  18. package/dist/{xmtp-XQGWSO72.js → xmtp-25RHTLIA.js} +3 -3
  19. package/package.json +1 -1
  20. package/dist/chunk-OPKMVIYJ.js.map +0 -1
  21. /package/dist/{addresses-6GJP2WAY.js.map → addresses-5BITNIGX.js.map} +0 -0
  22. /package/dist/{chat-36TB53HK.js.map → chat-CLBWW7PV.js.map} +0 -0
  23. /package/dist/{chunk-4EG4TSRE.js.map → chunk-IQNYBIFE.js.map} +0 -0
  24. /package/dist/{chunk-PNUBECG2.js.map → chunk-JQBGEYAK.js.map} +0 -0
  25. /package/dist/{chunk-SP2SI63D.js.map → chunk-OPEVMNEY.js.map} +0 -0
  26. /package/dist/{chunk-XKDB5D4E.js.map → chunk-PHU6MI3J.js.map} +0 -0
  27. /package/dist/{chunk-6SKMCZ7I.js.map → chunk-QZSKBYZ2.js.map} +0 -0
  28. /package/dist/{eas-XNLD5PTV.js.map → eas-LVJEPWBY.js.map} +0 -0
  29. /package/dist/{governor-ZOIXGEVS.js.map → governor-HU3CPXMU.js.map} +0 -0
  30. /package/dist/{price-WGV6NYK3.js.map → price-OZRLJH3X.js.map} +0 -0
  31. /package/dist/{research-AYT6QDJP.js.map → research-5WEM4WZC.js.map} +0 -0
  32. /package/dist/{session-46SXKEKP.js.map → session-XRTKPC4Q.js.map} +0 -0
  33. /package/dist/{trade-LIRSGOV7.js.map → trade-HN4BXDVU.js.map} +0 -0
  34. /package/dist/{xmtp-XQGWSO72.js.map → xmtp-25RHTLIA.js.map} +0 -0
@@ -13,7 +13,7 @@ import {
13
13
  TOKENS,
14
14
  UNISWAP,
15
15
  VENICE
16
- } from "./chunk-OPKMVIYJ.js";
16
+ } from "./chunk-RFTJBEZI.js";
17
17
  import "./chunk-IJG4CTOI.js";
18
18
  import "./chunk-WCBG44IQ.js";
19
19
  export {
@@ -32,4 +32,4 @@ export {
32
32
  UNISWAP,
33
33
  VENICE
34
34
  };
35
- //# sourceMappingURL=addresses-6GJP2WAY.js.map
35
+ //# sourceMappingURL=addresses-5BITNIGX.js.map
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  getSyndicate,
3
3
  updateMetadata
4
- } from "./chunk-SP2SI63D.js";
4
+ } from "./chunk-OPEVMNEY.js";
5
5
  import {
6
6
  getTextRecord,
7
7
  resolveSyndicate,
8
8
  setTextRecord
9
- } from "./chunk-4EG4TSRE.js";
9
+ } from "./chunk-IQNYBIFE.js";
10
10
  import {
11
11
  fetchMetadata,
12
12
  uploadMetadata
@@ -14,7 +14,7 @@ import {
14
14
  import "./chunk-OQUGUIYM.js";
15
15
  import {
16
16
  ENS
17
- } from "./chunk-OPKMVIYJ.js";
17
+ } from "./chunk-RFTJBEZI.js";
18
18
  import {
19
19
  formatContractError,
20
20
  getAccount
@@ -29,7 +29,7 @@ import {
29
29
  import chalk from "chalk";
30
30
  import ora from "ora";
31
31
  async function loadXmtp() {
32
- return import("./xmtp-XQGWSO72.js");
32
+ return import("./xmtp-25RHTLIA.js");
33
33
  }
34
34
  function formatTimestamp(date) {
35
35
  return `${date.getHours().toString().padStart(2, "0")}:${date.getMinutes().toString().padStart(2, "0")}`;
@@ -411,4 +411,4 @@ function registerChatCommands(program) {
411
411
  export {
412
412
  registerChatCommands
413
413
  };
414
- //# sourceMappingURL=chat-36TB53HK.js.map
414
+ //# sourceMappingURL=chat-CLBWW7PV.js.map
@@ -8,7 +8,7 @@ import {
8
8
  ENS,
9
9
  SHERWOOD,
10
10
  TOKENS
11
- } from "./chunk-OPKMVIYJ.js";
11
+ } from "./chunk-RFTJBEZI.js";
12
12
  import {
13
13
  getAccount,
14
14
  getPublicClient,
@@ -524,4 +524,4 @@ export {
524
524
  setTextRecord,
525
525
  getTextRecord
526
526
  };
527
- //# sourceMappingURL=chunk-4EG4TSRE.js.map
527
+ //# sourceMappingURL=chunk-IQNYBIFE.js.map
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  EAS_CONTRACTS,
6
6
  EAS_SCHEMAS
7
- } from "./chunk-OPKMVIYJ.js";
7
+ } from "./chunk-RFTJBEZI.js";
8
8
  import {
9
9
  getAccount,
10
10
  getPublicClient,
@@ -411,4 +411,4 @@ export {
411
411
  queryApprovals,
412
412
  queryJoinRequests
413
413
  };
414
- //# sourceMappingURL=chunk-PNUBECG2.js.map
414
+ //# sourceMappingURL=chunk-JQBGEYAK.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-OQUGUIYM.js";
4
4
  import {
5
5
  SHERWOOD
6
- } from "./chunk-OPKMVIYJ.js";
6
+ } from "./chunk-RFTJBEZI.js";
7
7
  import {
8
8
  getAccount,
9
9
  getPublicClient,
@@ -139,4 +139,4 @@ export {
139
139
  getActiveSyndicates,
140
140
  updateMetadata
141
141
  };
142
- //# sourceMappingURL=chunk-SP2SI63D.js.map
142
+ //# sourceMappingURL=chunk-OPEVMNEY.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-OQUGUIYM.js";
4
4
  import {
5
5
  SHERWOOD
6
- } from "./chunk-OPKMVIYJ.js";
6
+ } from "./chunk-RFTJBEZI.js";
7
7
  import {
8
8
  getAccount,
9
9
  getPublicClient,
@@ -429,4 +429,4 @@ export {
429
429
  vetoProposal,
430
430
  setProtocolFeeBps
431
431
  };
432
- //# sourceMappingURL=chunk-XKDB5D4E.js.map
432
+ //# sourceMappingURL=chunk-PHU6MI3J.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-OQUGUIYM.js";
4
4
  import {
5
5
  UNISWAP
6
- } from "./chunk-OPKMVIYJ.js";
6
+ } from "./chunk-RFTJBEZI.js";
7
7
  import {
8
8
  getAccount,
9
9
  getPublicClient,
@@ -451,4 +451,4 @@ export {
451
451
  encodeSwapPath,
452
452
  getMultiHopQuote
453
453
  };
454
- //# sourceMappingURL=chunk-6SKMCZ7I.js.map
454
+ //# sourceMappingURL=chunk-QZSKBYZ2.js.map
@@ -214,20 +214,20 @@ var ROBINHOOD_TESTNET_AERODROME = {
214
214
  };
215
215
  var HYPEREVM_AERODROME = { ROUTER: ZERO, FACTORY: ZERO };
216
216
  var BASE_STRATEGY_TEMPLATES = {
217
- MOONWELL_SUPPLY: "0x72216571Ac847b29E1a5e3378e6ebCca3C2882da",
218
- AERODROME_LP: "0x1c61c740702690B86b874ab929A6F04A4Ec56C1c",
219
- VENICE_INFERENCE: "0xd882056ba6b0aEd8908c541884B327121E2f2C9C",
220
- WSTETH_MOONWELL: "0xdae81cDCfcB14c56fCeB788A147Fcd6CbEdfEeca",
221
- MAMO_YIELD: "0x5c98808Ce5e51767ba2d969F75312eEFF0b14a6A",
217
+ MOONWELL_SUPPLY: "0x649f8d24096a5eb17b8C73ee5113825AcA259F00",
218
+ AERODROME_LP: "0x6ccdD48C6A83cCdD6712DEB02E85FbEA8CF426CE",
219
+ VENICE_INFERENCE: "0x49BFDae8353ba15954924274573D427211CCe41b",
220
+ WSTETH_MOONWELL: "0xA31851Ab35F9992b0411749ec02Df053e904D1e6",
221
+ MAMO_YIELD: "0x9ca8A9B75a46261F107B610b634ecE69D7E6DF42",
222
222
  HYPERLIQUID_PERP: ZERO,
223
223
  PORTFOLIO: "0x7865eEA4063c22d0F55FdD412D345495c7b73f64"
224
224
  };
225
225
  var BASE_SEPOLIA_STRATEGY_TEMPLATES = {
226
- MOONWELL_SUPPLY: ZERO,
227
- AERODROME_LP: ZERO,
228
- VENICE_INFERENCE: ZERO,
229
- WSTETH_MOONWELL: ZERO,
230
- MAMO_YIELD: ZERO,
226
+ MOONWELL_SUPPLY: "0xf67107afd786b6CB8829e55634b1686B8Bb7937a",
227
+ AERODROME_LP: "0xDf45018C64f5d6fd254B5d5437e96A27D5F01D09",
228
+ VENICE_INFERENCE: "0xB3E20A505D6e086eaEE02a58C264D41cb746E76E",
229
+ WSTETH_MOONWELL: "0x8F75B609519cEC5a9B9DF3cb74BcF095be5Ee2fD",
230
+ MAMO_YIELD: "0x49ea76685D79ff41bF7F60e22d9D367d0981bD58",
231
231
  HYPERLIQUID_PERP: ZERO,
232
232
  PORTFOLIO: ZERO
233
233
  };
@@ -453,4 +453,4 @@ export {
453
453
  SYNTHRA,
454
454
  CHAINLINK
455
455
  };
456
- //# sourceMappingURL=chunk-OPKMVIYJ.js.map
456
+ //# sourceMappingURL=chunk-RFTJBEZI.js.map
@@ -0,0 +1 @@
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 SWAP_ADAPTER: \"0x121AaC2B96Ec365e457fcCc1C2ED5a6142064069\" 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) ──\n\nconst BASE_CHAINLINK = { VERIFIER_PROXY: \"0xDE1A28D87Afd0f546505B28AB50410A5c3a7387a\" as Address } as const;\nconst BASE_SEPOLIA_CHAINLINK = { VERIFIER_PROXY: ZERO } as const;\nconst ROBINHOOD_TESTNET_CHAINLINK = {\n VERIFIER_PROXY: \"0x72790f9eB82db492a7DDb6d2af22A270Dcc3Db64\" as Address,\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\nconst BASE_SHERWOOD = {\n FACTORY: \"0xd5C4eE2E4c5B606b9401E69A3B3FeE169037C284\" as Address,\n GOVERNOR: \"0x358AD8B492BcC710BE0D7c902D8702164c35DC34\" as Address,\n} as const;\n\nconst BASE_SEPOLIA_SHERWOOD = {\n FACTORY: \"0x121AaC2B96Ec365e457fcCc1C2ED5a6142064069\" as Address,\n GOVERNOR: \"0xE5ecf2B06E3f3e298B632C0cf6575f9d9422F55E\" as Address,\n} as const;\n\nconst ROBINHOOD_TESTNET_SHERWOOD = {\n FACTORY: \"0x6d026e2f5Ff0C34A01690EC46Cb601B8fF391985\" as Address,\n GOVERNOR: \"0xd882056ba6b0aEd8908c541884B327121E2f2C9C\" as Address,\n} as const;\n\nconst HYPEREVM_SHERWOOD = {\n FACTORY: \"0x4085EEa1E6d3D20E84D8Ae14964FAb8b899DA40a\" as Address,\n GOVERNOR: \"0x7B4a2f3480FE101f88b2e3547A1bCf3eaaDE46bc\" as Address,\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\nconst BASE_STRATEGY_TEMPLATES = {\n MOONWELL_SUPPLY: \"0x649f8d24096a5eb17b8C73ee5113825AcA259F00\" as Address,\n AERODROME_LP: \"0x6ccdD48C6A83cCdD6712DEB02E85FbEA8CF426CE\" as Address,\n VENICE_INFERENCE: \"0x49BFDae8353ba15954924274573D427211CCe41b\" as Address,\n WSTETH_MOONWELL: \"0xA31851Ab35F9992b0411749ec02Df053e904D1e6\" as Address,\n MAMO_YIELD: \"0x9ca8A9B75a46261F107B610b634ecE69D7E6DF42\" as Address,\n HYPERLIQUID_PERP: ZERO as Address,\n PORTFOLIO: \"0x7865eEA4063c22d0F55FdD412D345495c7b73f64\" 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 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 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: \"0x2efD194ADb3Db40E0e6faAe06c4e602c7a3D9199\" 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 } 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":[]}
@@ -12,9 +12,9 @@ import {
12
12
  queryJoinRequests,
13
13
  revokeAttestation,
14
14
  stripReferrerPrefix
15
- } from "./chunk-PNUBECG2.js";
15
+ } from "./chunk-JQBGEYAK.js";
16
16
  import "./chunk-OQUGUIYM.js";
17
- import "./chunk-OPKMVIYJ.js";
17
+ import "./chunk-RFTJBEZI.js";
18
18
  import "./chunk-OFR3LCYE.js";
19
19
  import "./chunk-IJG4CTOI.js";
20
20
  import "./chunk-WCBG44IQ.js";
@@ -33,4 +33,4 @@ export {
33
33
  revokeAttestation,
34
34
  stripReferrerPrefix
35
35
  };
36
- //# sourceMappingURL=eas-XNLD5PTV.js.map
36
+ //# sourceMappingURL=eas-LVJEPWBY.js.map
@@ -34,9 +34,9 @@ import {
34
34
  settleProposal,
35
35
  vetoProposal,
36
36
  vote
37
- } from "./chunk-XKDB5D4E.js";
37
+ } from "./chunk-PHU6MI3J.js";
38
38
  import "./chunk-OQUGUIYM.js";
39
- import "./chunk-OPKMVIYJ.js";
39
+ import "./chunk-RFTJBEZI.js";
40
40
  import "./chunk-OFR3LCYE.js";
41
41
  import "./chunk-IJG4CTOI.js";
42
42
  import "./chunk-WCBG44IQ.js";
@@ -77,4 +77,4 @@ export {
77
77
  vetoProposal,
78
78
  vote
79
79
  };
80
- //# sourceMappingURL=governor-ZOIXGEVS.js.map
80
+ //# sourceMappingURL=governor-HU3CPXMU.js.map
package/dist/index.js CHANGED
@@ -9,7 +9,7 @@ import {
9
9
  getQuote,
10
10
  listModels,
11
11
  provisionApiKey
12
- } from "./chunk-6SKMCZ7I.js";
12
+ } from "./chunk-QZSKBYZ2.js";
13
13
  import {
14
14
  createApproval,
15
15
  createJoinRequest,
@@ -19,14 +19,14 @@ import {
19
19
  queryJoinRequests,
20
20
  revokeAttestation,
21
21
  stripReferrerPrefix
22
- } from "./chunk-PNUBECG2.js";
22
+ } from "./chunk-JQBGEYAK.js";
23
23
  import {
24
24
  createSyndicate,
25
25
  getActiveSyndicates,
26
26
  getSyndicate,
27
27
  subdomainExists,
28
28
  updateMetadata
29
- } from "./chunk-SP2SI63D.js";
29
+ } from "./chunk-OPEVMNEY.js";
30
30
  import {
31
31
  approveDepositor,
32
32
  deposit,
@@ -49,7 +49,7 @@ import {
49
49
  resolveVaultSyndicate,
50
50
  setTextRecord,
51
51
  setVaultAddress
52
- } from "./chunk-4EG4TSRE.js";
52
+ } from "./chunk-IQNYBIFE.js";
53
53
  import {
54
54
  PROPOSAL_STATE,
55
55
  PROPOSAL_STATES,
@@ -81,7 +81,7 @@ import {
81
81
  setVotingPeriod,
82
82
  settleProposal,
83
83
  vote
84
- } from "./chunk-XKDB5D4E.js";
84
+ } from "./chunk-PHU6MI3J.js";
85
85
  import {
86
86
  fetchMetadata,
87
87
  uploadMetadata
@@ -107,7 +107,7 @@ import {
107
107
  TOKENS,
108
108
  UNISWAP,
109
109
  VENICE
110
- } from "./chunk-OPKMVIYJ.js";
110
+ } from "./chunk-RFTJBEZI.js";
111
111
  import {
112
112
  formatContractError,
113
113
  getAccount,
@@ -1325,6 +1325,42 @@ function registerStrategyTemplateCommands(strategy2) {
1325
1325
  process.exit(1);
1326
1326
  }
1327
1327
  const { def, address: templateAddr } = resolveTemplate(templateKey);
1328
+ const account = getAccount();
1329
+ const preflightSpinner = ora("Preflight checks...").start();
1330
+ try {
1331
+ const publicClient = getPublicClient();
1332
+ const isRegistered = await publicClient.readContract({
1333
+ address: vault,
1334
+ abi: SYNDICATE_VAULT_ABI,
1335
+ functionName: "isAgent",
1336
+ args: [account.address]
1337
+ });
1338
+ if (!isRegistered) {
1339
+ preflightSpinner.fail("Preflight failed");
1340
+ console.error(
1341
+ chalk.red(
1342
+ ` Signer ${account.address} is not a registered agent on ${vault}.
1343
+ Register first via: sherwood syndicate approve --wallet ${account.address}`
1344
+ )
1345
+ );
1346
+ process.exit(1);
1347
+ }
1348
+ const paused = await publicClient.readContract({
1349
+ address: vault,
1350
+ abi: SYNDICATE_VAULT_ABI,
1351
+ functionName: "paused"
1352
+ });
1353
+ if (paused) {
1354
+ preflightSpinner.fail("Preflight failed");
1355
+ console.error(chalk.red(` Vault ${vault} is paused. Cannot propose.`));
1356
+ process.exit(1);
1357
+ }
1358
+ preflightSpinner.succeed("Preflight OK");
1359
+ } catch (err) {
1360
+ preflightSpinner.fail("Preflight failed");
1361
+ console.error(chalk.red(formatContractError(err)));
1362
+ process.exit(1);
1363
+ }
1328
1364
  const cloneSpinner = ora(`Cloning ${def.name} template...`).start();
1329
1365
  let clone;
1330
1366
  try {
@@ -1346,14 +1382,13 @@ function registerStrategyTemplateCommands(strategy2) {
1346
1382
  asset = built.asset;
1347
1383
  assetAmount = built.assetAmount;
1348
1384
  extraApprovals = built.extraApprovals;
1349
- const account2 = getAccount();
1350
1385
  const initHash = await writeContractWithRetry({
1351
- account: account2,
1386
+ account,
1352
1387
  chain: getChain(),
1353
1388
  address: clone,
1354
1389
  abi: BASE_STRATEGY_ABI,
1355
1390
  functionName: "initialize",
1356
- args: [vault, account2.address, built.initData]
1391
+ args: [vault, account.address, built.initData]
1357
1392
  });
1358
1393
  const initReceipt = await waitForReceipt(initHash);
1359
1394
  if (initReceipt.status === "reverted") {
@@ -1409,16 +1444,15 @@ function registerStrategyTemplateCommands(strategy2) {
1409
1444
  console.error(chalk.red("Missing --name, --performance-fee, or --duration. Use --write-calls to skip proposal submission."));
1410
1445
  process.exit(1);
1411
1446
  }
1412
- const { propose: propose2 } = await import("./governor-ZOIXGEVS.js");
1447
+ const { propose: propose2 } = await import("./governor-HU3CPXMU.js");
1413
1448
  const { pinJSON } = await import("./ipfs-IGXLLJCF.js");
1414
- const { parseDuration: parseDuration2 } = await import("./governor-ZOIXGEVS.js");
1449
+ const { parseDuration: parseDuration2 } = await import("./governor-HU3CPXMU.js");
1415
1450
  const performanceFeeBps = BigInt(opts.performanceFee);
1416
1451
  if (performanceFeeBps < 0n || performanceFeeBps > 10000n) {
1417
1452
  console.error(chalk.red("--performance-fee must be 0-10000 (basis points)"));
1418
1453
  process.exit(1);
1419
1454
  }
1420
1455
  const strategyDuration = parseDuration2(opts.duration);
1421
- const account = getAccount();
1422
1456
  const metaSpinner = ora("Pinning metadata to IPFS...").start();
1423
1457
  let metadataURI;
1424
1458
  try {
@@ -1519,7 +1553,7 @@ function registerStrategyTemplateCommands(strategy2) {
1519
1553
  let prices = [];
1520
1554
  let priceSource = null;
1521
1555
  try {
1522
- const { getTokenPricesInAsset } = await import("./price-WGV6NYK3.js");
1556
+ const { getTokenPricesInAsset } = await import("./price-OZRLJH3X.js");
1523
1557
  prices = await getTokenPricesInAsset({
1524
1558
  tokens: allocations.map((a, i) => ({
1525
1559
  token: a.token,
@@ -1948,7 +1982,7 @@ function registerVeniceCommands(program2) {
1948
1982
  console.log(chalk2.dim(` Key: ${apiKey.slice(0, 8)}...${apiKey.slice(-4)}`));
1949
1983
  console.log(chalk2.dim(" Saved to ~/.sherwood/config.json"));
1950
1984
  try {
1951
- const { createVeniceProvisionAttestation, getEasScanUrl: getEasScanUrl2 } = await import("./eas-XNLD5PTV.js");
1985
+ const { createVeniceProvisionAttestation, getEasScanUrl: getEasScanUrl2 } = await import("./eas-LVJEPWBY.js");
1952
1986
  const { uid } = await createVeniceProvisionAttestation(account.address);
1953
1987
  if (uid !== "0x0000000000000000000000000000000000000000000000000000000000000000") {
1954
1988
  console.log(chalk2.dim(` Attested: ${getEasScanUrl2(uid)}`));
@@ -2099,7 +2133,7 @@ ${opts.prompt}`;
2099
2133
  console.log(chalk2.dim(`Model: ${result.model} | Tokens: ${result.usage.promptTokens} in, ${result.usage.completionTokens} out, ${result.usage.totalTokens} total`));
2100
2134
  }
2101
2135
  try {
2102
- const { createVeniceInferenceAttestation, getEasScanUrl: getEasScanUrl2 } = await import("./eas-XNLD5PTV.js");
2136
+ const { createVeniceInferenceAttestation, getEasScanUrl: getEasScanUrl2 } = await import("./eas-LVJEPWBY.js");
2103
2137
  const { keccak256, toHex, isAddress: isAddr } = await import("viem");
2104
2138
  const { getChainContracts: getChainContracts2 } = await import("./config-LS7FKZL5.js");
2105
2139
  const { getChain: getActiveChain } = await import("./network-KSMKPKNL.js");
@@ -3231,7 +3265,7 @@ function printSimulationResult(result, callType) {
3231
3265
  }
3232
3266
  async function sendSimulationAlert(subdomain, proposalId, vault, execResult, settleResult) {
3233
3267
  try {
3234
- const xmtp = await import("./xmtp-XQGWSO72.js");
3268
+ const xmtp = await import("./xmtp-25RHTLIA.js");
3235
3269
  const { getAccount: getAccount2 } = await import("./client-HKAG55PQ.js");
3236
3270
  const group = await xmtp.getGroup("", subdomain);
3237
3271
  const allRisks = [...execResult.risks, ...settleResult?.risks ?? []];
@@ -4048,7 +4082,7 @@ try {
4048
4082
  var require2 = createRequire(import.meta.url);
4049
4083
  var { version: CLI_VERSION } = require2("../package.json");
4050
4084
  async function loadXmtp() {
4051
- return import("./xmtp-XQGWSO72.js");
4085
+ return import("./xmtp-25RHTLIA.js");
4052
4086
  }
4053
4087
  async function loadCron() {
4054
4088
  return import("./cron-EOULYO3R.js");
@@ -4516,7 +4550,7 @@ syndicate.command("add").description("Register an agent on a syndicate vault (cr
4516
4550
  if (opts.agentId) {
4517
4551
  agentId = BigInt(opts.agentId);
4518
4552
  } else {
4519
- const { AGENT_REGISTRY: AGENT_REGISTRY2 } = await import("./addresses-6GJP2WAY.js");
4553
+ const { AGENT_REGISTRY: AGENT_REGISTRY2 } = await import("./addresses-5BITNIGX.js");
4520
4554
  const registry = AGENT_REGISTRY2().IDENTITY_REGISTRY;
4521
4555
  if (registry === "0x0000000000000000000000000000000000000000") {
4522
4556
  agentId = 0n;
@@ -5126,7 +5160,7 @@ ${info.name} (${info.type})`);
5126
5160
  }
5127
5161
  });
5128
5162
  try {
5129
- const { registerChatCommands } = await import("./chat-36TB53HK.js");
5163
+ const { registerChatCommands } = await import("./chat-CLBWW7PV.js");
5130
5164
  registerChatCommands(program);
5131
5165
  } catch {
5132
5166
  program.command("chat <name> [action] [actionArgs...]").description("Syndicate chat (XMTP) \u2014 requires @xmtp/cli").action(() => {
@@ -5136,18 +5170,18 @@ try {
5136
5170
  process.exit(1);
5137
5171
  });
5138
5172
  }
5139
- var { registerSessionCommands } = await import("./session-46SXKEKP.js");
5173
+ var { registerSessionCommands } = await import("./session-XRTKPC4Q.js");
5140
5174
  registerSessionCommands(program);
5141
5175
  registerVeniceCommands(program);
5142
5176
  registerAllowanceCommands(program);
5143
5177
  registerIdentityCommands(program);
5144
5178
  registerProposalCommands(program);
5145
5179
  registerGovernorCommands(program);
5146
- var { registerResearchCommands } = await import("./research-AYT6QDJP.js");
5180
+ var { registerResearchCommands } = await import("./research-5WEM4WZC.js");
5147
5181
  registerResearchCommands(program);
5148
5182
  var { registerAgentCommands } = await import("./agent-TB7VNLFH.js");
5149
5183
  registerAgentCommands(program);
5150
- var { registerTradeCommands } = await import("./trade-LIRSGOV7.js");
5184
+ var { registerTradeCommands } = await import("./trade-HN4BXDVU.js");
5151
5185
  registerTradeCommands(program);
5152
5186
  var configCmd = program.command("config");
5153
5187
  configCmd.command("set").description("Save settings to ~/.sherwood/config.json (persists across sessions)").option("--private-key <key>", "Wallet private key (0x-prefixed)").option("--vault <address>", "Default SyndicateVault address").option("--rpc <url>", "Custom RPC URL for the active --chain network").option("--notify-to <id>", "Destination for cron summaries (Telegram chat ID, phone, etc.)").option("--uniswap-api-key <key>", "Uniswap Trading API key (from developers.uniswap.org)").option("--venice-api-key <key>", "Venice AI inference API key").option("--xmtp-group <subdomain:groupId>", "Cache an XMTP group ID for a syndicate (e.g. my-fund:abc123)").action((opts) => {