@sherwoodagent/cli 0.51.0 → 0.51.1

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 (35) hide show
  1. package/dist/{abis-RGCO5GHC.js → abis-Z6M6SRPX.js} +2 -2
  2. package/dist/{agent-ZPAZTJG3.js → agent-E5GHURKJ.js} +2 -2
  3. package/dist/{chat-MRTPUZ3X.js → chat-TD6V5LFD.js} +5 -5
  4. package/dist/{chunk-WMZEOR5W.js → chunk-2HNUJ7XH.js} +2 -2
  5. package/dist/{chunk-R7X33D2S.js → chunk-4OF4IZ6M.js} +2 -2
  6. package/dist/{chunk-D77JGXIV.js → chunk-J2FOCXF2.js} +1 -8
  7. package/dist/{chunk-D77JGXIV.js.map → chunk-J2FOCXF2.js.map} +1 -1
  8. package/dist/{chunk-E6LH2FJ6.js → chunk-ME6MUKGZ.js} +2 -2
  9. package/dist/{chunk-KJ35EF7N.js → chunk-T464VNRC.js} +2 -2
  10. package/dist/{chunk-IS2CLLUT.js → chunk-UYL6Q7BS.js} +2 -2
  11. package/dist/{eas-PEEWGSAO.js → eas-LHJF2UCG.js} +3 -3
  12. package/dist/{governor-MG5VVSU4.js → governor-JD4KZXDA.js} +3 -3
  13. package/dist/index.js +24 -32
  14. package/dist/index.js.map +1 -1
  15. package/dist/{price-WCCXWPDM.js → price-2PNKWY4D.js} +2 -2
  16. package/dist/{research-QBKISW2M.js → research-WBZU4QNU.js} +3 -3
  17. package/dist/{session-FPCPCVQX.js → session-IYT3N7MG.js} +5 -5
  18. package/dist/{trade-NO6CNWCA.js → trade-PTYLNJBU.js} +6 -6
  19. package/dist/{xmtp-ACB2W573.js → xmtp-ZACWHUI5.js} +3 -3
  20. package/package.json +1 -1
  21. /package/dist/{abis-RGCO5GHC.js.map → abis-Z6M6SRPX.js.map} +0 -0
  22. /package/dist/{agent-ZPAZTJG3.js.map → agent-E5GHURKJ.js.map} +0 -0
  23. /package/dist/{chat-MRTPUZ3X.js.map → chat-TD6V5LFD.js.map} +0 -0
  24. /package/dist/{chunk-WMZEOR5W.js.map → chunk-2HNUJ7XH.js.map} +0 -0
  25. /package/dist/{chunk-R7X33D2S.js.map → chunk-4OF4IZ6M.js.map} +0 -0
  26. /package/dist/{chunk-E6LH2FJ6.js.map → chunk-ME6MUKGZ.js.map} +0 -0
  27. /package/dist/{chunk-KJ35EF7N.js.map → chunk-T464VNRC.js.map} +0 -0
  28. /package/dist/{chunk-IS2CLLUT.js.map → chunk-UYL6Q7BS.js.map} +0 -0
  29. /package/dist/{eas-PEEWGSAO.js.map → eas-LHJF2UCG.js.map} +0 -0
  30. /package/dist/{governor-MG5VVSU4.js.map → governor-JD4KZXDA.js.map} +0 -0
  31. /package/dist/{price-WCCXWPDM.js.map → price-2PNKWY4D.js.map} +0 -0
  32. /package/dist/{research-QBKISW2M.js.map → research-WBZU4QNU.js.map} +0 -0
  33. /package/dist/{session-FPCPCVQX.js.map → session-IYT3N7MG.js.map} +0 -0
  34. /package/dist/{trade-NO6CNWCA.js.map → trade-PTYLNJBU.js.map} +0 -0
  35. /package/dist/{xmtp-ACB2W573.js.map → xmtp-ZACWHUI5.js.map} +0 -0
package/dist/index.js CHANGED
@@ -13,7 +13,7 @@ import {
13
13
  encodeSwapPath,
14
14
  getMultiHopQuote,
15
15
  getQuote
16
- } from "./chunk-WMZEOR5W.js";
16
+ } from "./chunk-2HNUJ7XH.js";
17
17
  import {
18
18
  chatCompletion,
19
19
  checkApiKeyValid,
@@ -30,14 +30,14 @@ import {
30
30
  queryJoinRequests,
31
31
  revokeJoinRequest,
32
32
  stripReferrerPrefix
33
- } from "./chunk-E6LH2FJ6.js";
33
+ } from "./chunk-ME6MUKGZ.js";
34
34
  import {
35
35
  createSyndicate,
36
36
  getActiveSyndicates,
37
37
  getSyndicate,
38
38
  subdomainExists,
39
39
  updateMetadata
40
- } from "./chunk-IS2CLLUT.js";
40
+ } from "./chunk-UYL6Q7BS.js";
41
41
  import {
42
42
  approveDepositor,
43
43
  deposit,
@@ -61,7 +61,7 @@ import {
61
61
  searchSyndicateAcrossChains,
62
62
  setTextRecord,
63
63
  setVaultAddress
64
- } from "./chunk-R7X33D2S.js";
64
+ } from "./chunk-4OF4IZ6M.js";
65
65
  import {
66
66
  PROPOSAL_STATE,
67
67
  PROPOSAL_STATES,
@@ -93,7 +93,7 @@ import {
93
93
  setVotingPeriod,
94
94
  settleProposal,
95
95
  vote
96
- } from "./chunk-KJ35EF7N.js";
96
+ } from "./chunk-T464VNRC.js";
97
97
  import {
98
98
  AERODROME,
99
99
  AGENT_REGISTRY,
@@ -158,7 +158,7 @@ import {
158
158
  SWAP_ROUTER_EXACT_INPUT_SINGLE_ABI,
159
159
  SYNDICATE_VAULT_ABI,
160
160
  VENICE_STAKING_ABI
161
- } from "./chunk-D77JGXIV.js";
161
+ } from "./chunk-J2FOCXF2.js";
162
162
  import {
163
163
  fetchMetadata,
164
164
  uploadMetadata
@@ -593,18 +593,17 @@ function buildSettleCalls6(clone) {
593
593
 
594
594
  // src/strategies/hyperliquid-perp-template.ts
595
595
  import { encodeAbiParameters as encodeAbiParameters7, encodeFunctionData as encodeFunctionData7, maxUint256 as maxUint2562 } from "viem";
596
- function buildInitData7(asset, depositAmount, minReturnAmount, perpAssetIndex, leverage, maxPositionSize, maxTradesPerDay) {
596
+ function buildInitData7(asset, depositAmount, perpAssetIndex, leverage, maxPositionSize, maxTradesPerDay) {
597
597
  return encodeAbiParameters7(
598
598
  [
599
599
  { type: "address" },
600
600
  { type: "uint256" },
601
- { type: "uint256" },
602
601
  { type: "uint32" },
603
602
  { type: "uint32" },
604
603
  { type: "uint256" },
605
604
  { type: "uint32" }
606
605
  ],
607
- [asset, depositAmount, minReturnAmount, perpAssetIndex, leverage, maxPositionSize, maxTradesPerDay]
606
+ [asset, depositAmount, perpAssetIndex, leverage, maxPositionSize, maxTradesPerDay]
608
607
  );
609
608
  }
610
609
  function buildExecuteCalls7(clone, asset, amount) {
@@ -1070,19 +1069,12 @@ async function buildInitDataForTemplate(templateKey, opts, vault) {
1070
1069
  const asset = resolveToken(token);
1071
1070
  const decimals = token.toUpperCase() === "USDC" ? 6 : 18;
1072
1071
  const depositAmount = opts.amount ? parseUnits(opts.amount, decimals) : 0n;
1073
- if (depositAmount === 0n && !opts.minReturn) {
1074
- console.error(chalk.red(
1075
- "--min-return is required when --amount is omitted (dynamic-all mode).\n The settlement floor can't be derived without a reference deposit \u2014 set it explicitly to the minimum USDC you'll accept back from HyperCore."
1076
- ));
1077
- process.exit(1);
1078
- }
1079
- const minReturn = opts.minReturn ? parseUnits(opts.minReturn, decimals) : opts.amount ? parseUnits(opts.amount, decimals) : 0n;
1080
1072
  const leverage = Number(opts.leverage || "10");
1081
1073
  const assetIndex = Number(opts.assetIndex || "0");
1082
1074
  const maxPosition = parseUnits(opts.maxPosition || "100000", decimals);
1083
1075
  const maxTradesDay = Number(opts.maxTradesPerDay || "50");
1084
1076
  return {
1085
- initData: buildInitData7(asset, depositAmount, minReturn, assetIndex, leverage, maxPosition, maxTradesDay),
1077
+ initData: buildInitData7(asset, depositAmount, assetIndex, leverage, maxPosition, maxTradesDay),
1086
1078
  asset,
1087
1079
  assetAmount: depositAmount
1088
1080
  };
@@ -1228,7 +1220,7 @@ function registerStrategyTemplateCommands(strategy2) {
1228
1220
  console.log(chalk.dim("Full proposal: sherwood strategy propose <template> --vault <addr> ..."));
1229
1221
  console.log();
1230
1222
  });
1231
- strategy2.command("clone").description("Clone a strategy template and initialize it").argument("<template>", "Template: moonwell-supply, aerodrome-lp, venice-inference, wsteth-moonwell, mamo-yield, portfolio, hyperliquid-perp").requiredOption("--vault <address>", "Vault address").option("--amount <n>", "Asset amount to deploy").option("--min-redeem <n>", "Min asset on settlement (Moonwell)").option("--token <symbol>", "Asset token symbol (default: USDC)").option("--asset <symbol>", "Asset token (USDC, VVV, or address)").option("--agent <address>", "Agent wallet (Venice, default: your wallet)").option("--min-vvv <n>", "Min VVV from swap (Venice)").option("--single-hop", "Single-hop Aerodrome swap (Venice)").option("--token-a <address>", "Token A (Aerodrome)").option("--token-b <address>", "Token B (Aerodrome)").option("--amount-a <n>", "Token A amount (Aerodrome)").option("--amount-b <n>", "Token B amount (Aerodrome)").option("--stable", "Stable pool (Aerodrome)").option("--gauge <address>", "Gauge address (Aerodrome)").option("--lp-token <address>", "LP token address (Aerodrome)").option("--min-a-out <n>", "Min token A on settle (Aerodrome)").option("--min-b-out <n>", "Min token B on settle (Aerodrome)").option("--slippage <bps>", "Slippage tolerance in bps (wstETH, default: 500 = 5%)").option("--mamo-factory <address>", "Mamo StrategyFactory address (Mamo)").option("--tokens <list>", "Comma-separated token addresses or symbols (Portfolio)").option("--weights <list>", "Comma-separated weights in bps, must sum to 10000 (Portfolio)").option("--max-slippage <bps>", "Max slippage bps (Portfolio, default: 500)").option("--fee-tier <n>", "Pool fee tier (Portfolio, default: 3000)").option("--swap-adapter <address>", "Swap adapter address (Portfolio)").option("--leverage <number>", "Leverage multiplier (Hyperliquid Perp, default: 10)").option("--asset-index <number>", "Perp asset index (Hyperliquid Perp, default: 0 for BTC)").option("--min-return <n>", "Min return amount on settlement (Hyperliquid Perp)").option("--max-position <amount>", "Max position size in USD (Hyperliquid Perp, default: 100000)").option("--max-trades-per-day <n>", "Max trades per day (Hyperliquid Perp, default: 50)").action(async (templateKey, opts) => {
1223
+ strategy2.command("clone").description("Clone a strategy template and initialize it").argument("<template>", "Template: moonwell-supply, aerodrome-lp, venice-inference, wsteth-moonwell, mamo-yield, portfolio, hyperliquid-perp").requiredOption("--vault <address>", "Vault address").option("--amount <n>", "Asset amount to deploy").option("--min-redeem <n>", "Min asset on settlement (Moonwell)").option("--token <symbol>", "Asset token symbol (default: USDC)").option("--asset <symbol>", "Asset token (USDC, VVV, or address)").option("--agent <address>", "Agent wallet (Venice, default: your wallet)").option("--min-vvv <n>", "Min VVV from swap (Venice)").option("--single-hop", "Single-hop Aerodrome swap (Venice)").option("--token-a <address>", "Token A (Aerodrome)").option("--token-b <address>", "Token B (Aerodrome)").option("--amount-a <n>", "Token A amount (Aerodrome)").option("--amount-b <n>", "Token B amount (Aerodrome)").option("--stable", "Stable pool (Aerodrome)").option("--gauge <address>", "Gauge address (Aerodrome)").option("--lp-token <address>", "LP token address (Aerodrome)").option("--min-a-out <n>", "Min token A on settle (Aerodrome)").option("--min-b-out <n>", "Min token B on settle (Aerodrome)").option("--slippage <bps>", "Slippage tolerance in bps (wstETH, default: 500 = 5%)").option("--mamo-factory <address>", "Mamo StrategyFactory address (Mamo)").option("--tokens <list>", "Comma-separated token addresses or symbols (Portfolio)").option("--weights <list>", "Comma-separated weights in bps, must sum to 10000 (Portfolio)").option("--max-slippage <bps>", "Max slippage bps (Portfolio, default: 500)").option("--fee-tier <n>", "Pool fee tier (Portfolio, default: 3000)").option("--swap-adapter <address>", "Swap adapter address (Portfolio)").option("--leverage <number>", "Leverage multiplier (Hyperliquid Perp, default: 10)").option("--asset-index <number>", "Perp asset index (Hyperliquid Perp, default: 0 for BTC)").option("--max-position <amount>", "Max position size in USD (Hyperliquid Perp, default: 100000)").option("--max-trades-per-day <n>", "Max trades per day (Hyperliquid Perp, default: 50)").action(async (templateKey, opts) => {
1232
1224
  const vault = opts.vault;
1233
1225
  if (!isAddress(vault)) {
1234
1226
  console.error(chalk.red("Invalid vault address"));
@@ -1276,7 +1268,7 @@ function registerStrategyTemplateCommands(strategy2) {
1276
1268
  console.log(chalk.dim("Use this address in your proposal batch calls."));
1277
1269
  console.log();
1278
1270
  });
1279
- strategy2.command("init").description("Initialize an already-deployed but uninitialized strategy clone").argument("<template>", "Template: moonwell-supply, aerodrome-lp, venice-inference, wsteth-moonwell, mamo-yield, portfolio, hyperliquid-perp").requiredOption("--clone <address>", "Clone address to initialize").requiredOption("--vault <address>", "Vault address").option("--amount <n>", "Asset amount to deploy").option("--min-redeem <n>", "Min asset on settlement (Moonwell)").option("--token <symbol>", "Asset token symbol (default: USDC)").option("--asset <symbol>", "Asset token (USDC, VVV, or address)").option("--agent <address>", "Agent wallet (Venice, default: your wallet)").option("--min-vvv <n>", "Min VVV from swap (Venice)").option("--single-hop", "Single-hop Aerodrome swap (Venice)").option("--token-a <address>", "Token A (Aerodrome)").option("--token-b <address>", "Token B (Aerodrome)").option("--amount-a <n>", "Token A amount (Aerodrome)").option("--amount-b <n>", "Token B amount (Aerodrome)").option("--stable", "Stable pool (Aerodrome)").option("--gauge <address>", "Gauge address (Aerodrome)").option("--lp-token <address>", "LP token address (Aerodrome)").option("--min-a-out <n>", "Min token A on settle (Aerodrome)").option("--min-b-out <n>", "Min token B on settle (Aerodrome)").option("--slippage <bps>", "Slippage tolerance in bps (wstETH, default: 500 = 5%)").option("--mamo-factory <address>", "Mamo StrategyFactory address (Mamo)").option("--tokens <list>", "Comma-separated token addresses or symbols (Portfolio)").option("--weights <list>", "Comma-separated weights in bps, must sum to 10000 (Portfolio)").option("--max-slippage <bps>", "Max slippage bps (Portfolio, default: 500)").option("--fee-tier <n>", "Pool fee tier (Portfolio, default: 3000)").option("--swap-adapter <address>", "Swap adapter address (Portfolio)").option("--leverage <number>", "Leverage multiplier (Hyperliquid Perp, default: 10)").option("--asset-index <number>", "Perp asset index (Hyperliquid Perp, default: 0 for BTC)").option("--min-return <n>", "Min return amount on settlement (Hyperliquid Perp)").option("--max-position <amount>", "Max position size in USD (Hyperliquid Perp, default: 100000)").option("--max-trades-per-day <n>", "Max trades per day (Hyperliquid Perp, default: 50)").action(async (templateKey, opts) => {
1271
+ strategy2.command("init").description("Initialize an already-deployed but uninitialized strategy clone").argument("<template>", "Template: moonwell-supply, aerodrome-lp, venice-inference, wsteth-moonwell, mamo-yield, portfolio, hyperliquid-perp").requiredOption("--clone <address>", "Clone address to initialize").requiredOption("--vault <address>", "Vault address").option("--amount <n>", "Asset amount to deploy").option("--min-redeem <n>", "Min asset on settlement (Moonwell)").option("--token <symbol>", "Asset token symbol (default: USDC)").option("--asset <symbol>", "Asset token (USDC, VVV, or address)").option("--agent <address>", "Agent wallet (Venice, default: your wallet)").option("--min-vvv <n>", "Min VVV from swap (Venice)").option("--single-hop", "Single-hop Aerodrome swap (Venice)").option("--token-a <address>", "Token A (Aerodrome)").option("--token-b <address>", "Token B (Aerodrome)").option("--amount-a <n>", "Token A amount (Aerodrome)").option("--amount-b <n>", "Token B amount (Aerodrome)").option("--stable", "Stable pool (Aerodrome)").option("--gauge <address>", "Gauge address (Aerodrome)").option("--lp-token <address>", "LP token address (Aerodrome)").option("--min-a-out <n>", "Min token A on settle (Aerodrome)").option("--min-b-out <n>", "Min token B on settle (Aerodrome)").option("--slippage <bps>", "Slippage tolerance in bps (wstETH, default: 500 = 5%)").option("--mamo-factory <address>", "Mamo StrategyFactory address (Mamo)").option("--tokens <list>", "Comma-separated token addresses or symbols (Portfolio)").option("--weights <list>", "Comma-separated weights in bps, must sum to 10000 (Portfolio)").option("--max-slippage <bps>", "Max slippage bps (Portfolio, default: 500)").option("--fee-tier <n>", "Pool fee tier (Portfolio, default: 3000)").option("--swap-adapter <address>", "Swap adapter address (Portfolio)").option("--leverage <number>", "Leverage multiplier (Hyperliquid Perp, default: 10)").option("--asset-index <number>", "Perp asset index (Hyperliquid Perp, default: 0 for BTC)").option("--max-position <amount>", "Max position size in USD (Hyperliquid Perp, default: 100000)").option("--max-trades-per-day <n>", "Max trades per day (Hyperliquid Perp, default: 50)").action(async (templateKey, opts) => {
1280
1272
  const clone = opts.clone;
1281
1273
  const vault = opts.vault;
1282
1274
  if (!isAddress(clone)) {
@@ -1332,7 +1324,7 @@ function registerStrategyTemplateCommands(strategy2) {
1332
1324
  console.log(` Proposer: ${chalk.green(getAccount().address)}`);
1333
1325
  console.log();
1334
1326
  });
1335
- strategy2.command("propose").description("Clone + init + build calls + submit governance proposal (all-in-one)").argument("<template>", "Template: moonwell-supply, aerodrome-lp, venice-inference, wsteth-moonwell, mamo-yield, portfolio, hyperliquid-perp").requiredOption("--vault <address>", "Vault address").option("--write-calls <dir>", "Write execute/settle JSON to directory (skip proposal submission)").option("--name <name>", "Proposal name").option("--description <text>", "Proposal description").option("--performance-fee <bps>", "Agent fee in bps").option("--duration <duration>", "Strategy duration (7d, 24h, etc.)").option("--amount <n>", "Asset amount to deploy").option("--min-redeem <n>", "Min asset on settlement (Moonwell)").option("--token <symbol>", "Asset token symbol (default: USDC)").option("--asset <symbol>", "Asset token (USDC, VVV, or address)").option("--agent <address>", "Agent wallet (Venice, default: your wallet)").option("--min-vvv <n>", "Min VVV from swap (Venice)").option("--single-hop", "Single-hop Aerodrome swap (Venice)").option("--token-a <address>", "Token A (Aerodrome)").option("--token-b <address>", "Token B (Aerodrome)").option("--amount-a <n>", "Token A amount (Aerodrome)").option("--amount-b <n>", "Token B amount (Aerodrome)").option("--stable", "Stable pool (Aerodrome)").option("--gauge <address>", "Gauge address (Aerodrome)").option("--lp-token <address>", "LP token address (Aerodrome)").option("--min-a-out <n>", "Min token A on settle (Aerodrome)").option("--min-b-out <n>", "Min token B on settle (Aerodrome)").option("--slippage <bps>", "Slippage tolerance in bps (wstETH, default: 500 = 5%)").option("--mamo-factory <address>", "Mamo StrategyFactory address (Mamo)").option("--tokens <list>", "Comma-separated token addresses or symbols (Portfolio)").option("--weights <list>", "Comma-separated weights in bps, must sum to 10000 (Portfolio)").option("--max-slippage <bps>", "Max slippage bps (Portfolio, default: 500)").option("--fee-tier <n>", "Pool fee tier (Portfolio, default: 3000)").option("--swap-adapter <address>", "Swap adapter address (Portfolio)").option("--leverage <number>", "Leverage multiplier (Hyperliquid Perp, default: 10)").option("--asset-index <number>", "Perp asset index (Hyperliquid Perp, default: 0 for BTC)").option("--min-return <n>", "Min return amount on settlement (Hyperliquid Perp)").option("--max-position <amount>", "Max position size in USD (Hyperliquid Perp, default: 100000)").option("--max-trades-per-day <n>", "Max trades per day (Hyperliquid Perp, default: 50)").action(async (templateKey, opts) => {
1327
+ strategy2.command("propose").description("Clone + init + build calls + submit governance proposal (all-in-one)").argument("<template>", "Template: moonwell-supply, aerodrome-lp, venice-inference, wsteth-moonwell, mamo-yield, portfolio, hyperliquid-perp").requiredOption("--vault <address>", "Vault address").option("--write-calls <dir>", "Write execute/settle JSON to directory (skip proposal submission)").option("--name <name>", "Proposal name").option("--description <text>", "Proposal description").option("--performance-fee <bps>", "Agent fee in bps").option("--duration <duration>", "Strategy duration (7d, 24h, etc.)").option("--amount <n>", "Asset amount to deploy").option("--min-redeem <n>", "Min asset on settlement (Moonwell)").option("--token <symbol>", "Asset token symbol (default: USDC)").option("--asset <symbol>", "Asset token (USDC, VVV, or address)").option("--agent <address>", "Agent wallet (Venice, default: your wallet)").option("--min-vvv <n>", "Min VVV from swap (Venice)").option("--single-hop", "Single-hop Aerodrome swap (Venice)").option("--token-a <address>", "Token A (Aerodrome)").option("--token-b <address>", "Token B (Aerodrome)").option("--amount-a <n>", "Token A amount (Aerodrome)").option("--amount-b <n>", "Token B amount (Aerodrome)").option("--stable", "Stable pool (Aerodrome)").option("--gauge <address>", "Gauge address (Aerodrome)").option("--lp-token <address>", "LP token address (Aerodrome)").option("--min-a-out <n>", "Min token A on settle (Aerodrome)").option("--min-b-out <n>", "Min token B on settle (Aerodrome)").option("--slippage <bps>", "Slippage tolerance in bps (wstETH, default: 500 = 5%)").option("--mamo-factory <address>", "Mamo StrategyFactory address (Mamo)").option("--tokens <list>", "Comma-separated token addresses or symbols (Portfolio)").option("--weights <list>", "Comma-separated weights in bps, must sum to 10000 (Portfolio)").option("--max-slippage <bps>", "Max slippage bps (Portfolio, default: 500)").option("--fee-tier <n>", "Pool fee tier (Portfolio, default: 3000)").option("--swap-adapter <address>", "Swap adapter address (Portfolio)").option("--leverage <number>", "Leverage multiplier (Hyperliquid Perp, default: 10)").option("--asset-index <number>", "Perp asset index (Hyperliquid Perp, default: 0 for BTC)").option("--max-position <amount>", "Max position size in USD (Hyperliquid Perp, default: 100000)").option("--max-trades-per-day <n>", "Max trades per day (Hyperliquid Perp, default: 50)").action(async (templateKey, opts) => {
1336
1328
  const vault = opts.vault;
1337
1329
  if (!isAddress(vault)) {
1338
1330
  console.error(chalk.red("Invalid vault address"));
@@ -1458,9 +1450,9 @@ function registerStrategyTemplateCommands(strategy2) {
1458
1450
  console.error(chalk.red("Missing --name, --performance-fee, or --duration. Use --write-calls to skip proposal submission."));
1459
1451
  process.exit(1);
1460
1452
  }
1461
- const { propose: propose2 } = await import("./governor-MG5VVSU4.js");
1453
+ const { propose: propose2 } = await import("./governor-JD4KZXDA.js");
1462
1454
  const { pinJSON } = await import("./ipfs-IGXLLJCF.js");
1463
- const { parseDuration: parseDuration2 } = await import("./governor-MG5VVSU4.js");
1455
+ const { parseDuration: parseDuration2 } = await import("./governor-JD4KZXDA.js");
1464
1456
  const performanceFeeBps = BigInt(opts.performanceFee);
1465
1457
  if (performanceFeeBps < 0n || performanceFeeBps > 10000n) {
1466
1458
  console.error(chalk.red("--performance-fee must be 0-10000 (basis points)"));
@@ -1567,7 +1559,7 @@ function registerStrategyTemplateCommands(strategy2) {
1567
1559
  let prices = [];
1568
1560
  let priceSource = null;
1569
1561
  try {
1570
- const { getTokenPricesInAsset } = await import("./price-WCCXWPDM.js");
1562
+ const { getTokenPricesInAsset } = await import("./price-2PNKWY4D.js");
1571
1563
  prices = await getTokenPricesInAsset({
1572
1564
  tokens: allocations.map((a, i) => ({
1573
1565
  token: a.token,
@@ -1997,7 +1989,7 @@ function registerVeniceCommands(program2) {
1997
1989
  console.log(chalk2.dim(` Key: ${apiKey.slice(0, 8)}...${apiKey.slice(-4)}`));
1998
1990
  console.log(chalk2.dim(" Saved to ~/.sherwood/config.json"));
1999
1991
  try {
2000
- const { createVeniceProvisionAttestation, getEasScanUrl: getEasScanUrl2 } = await import("./eas-PEEWGSAO.js");
1992
+ const { createVeniceProvisionAttestation, getEasScanUrl: getEasScanUrl2 } = await import("./eas-LHJF2UCG.js");
2001
1993
  const { uid } = await createVeniceProvisionAttestation(account.address);
2002
1994
  if (uid !== "0x0000000000000000000000000000000000000000000000000000000000000000") {
2003
1995
  console.log(chalk2.dim(` Attested: ${getEasScanUrl2(uid)}`));
@@ -2353,7 +2345,7 @@ ${opts.prompt}`;
2353
2345
  console.log(chalk2.dim(`Model: ${result.model} | Tokens: ${result.usage.promptTokens} in, ${result.usage.completionTokens} out, ${result.usage.totalTokens} total`));
2354
2346
  }
2355
2347
  try {
2356
- const { createVeniceInferenceAttestation, getEasScanUrl: getEasScanUrl2 } = await import("./eas-PEEWGSAO.js");
2348
+ const { createVeniceInferenceAttestation, getEasScanUrl: getEasScanUrl2 } = await import("./eas-LHJF2UCG.js");
2357
2349
  const { keccak256: keccak2562, toHex, isAddress: isAddr } = await import("viem");
2358
2350
  const { getChainContracts: getChainContracts2 } = await import("./config-REASKDIK.js");
2359
2351
  const { getChain: getActiveChain } = await import("./network-3ZU7UBDU.js");
@@ -3529,7 +3521,7 @@ function printSimulationResult(result, callType) {
3529
3521
  }
3530
3522
  async function sendSimulationAlert(subdomain, proposalId, vault, execResult, settleResult) {
3531
3523
  try {
3532
- const xmtp = await import("./xmtp-ACB2W573.js");
3524
+ const xmtp = await import("./xmtp-ZACWHUI5.js");
3533
3525
  const { getAccount: getAccount2 } = await import("./client-UHHCB6EZ.js");
3534
3526
  const group = await xmtp.getGroup("", subdomain);
3535
3527
  const allRisks = [...execResult.risks, ...settleResult?.risks ?? []];
@@ -5766,7 +5758,7 @@ try {
5766
5758
  var require2 = createRequire(import.meta.url);
5767
5759
  var { version: CLI_VERSION } = require2("../package.json");
5768
5760
  async function loadXmtp() {
5769
- return import("./xmtp-ACB2W573.js");
5761
+ return import("./xmtp-ZACWHUI5.js");
5770
5762
  }
5771
5763
  async function loadCron() {
5772
5764
  return import("./cron-EOULYO3R.js");
@@ -6916,7 +6908,7 @@ ${info.name} (${info.type})`);
6916
6908
  }
6917
6909
  });
6918
6910
  try {
6919
- const { registerChatCommands } = await import("./chat-MRTPUZ3X.js");
6911
+ const { registerChatCommands } = await import("./chat-TD6V5LFD.js");
6920
6912
  registerChatCommands(program);
6921
6913
  } catch {
6922
6914
  program.command("chat <name> [action] [actionArgs...]").description("Syndicate chat (XMTP) \u2014 requires @xmtp/cli").action(() => {
@@ -6926,7 +6918,7 @@ try {
6926
6918
  process.exit(1);
6927
6919
  });
6928
6920
  }
6929
- var { registerSessionCommands } = await import("./session-FPCPCVQX.js");
6921
+ var { registerSessionCommands } = await import("./session-IYT3N7MG.js");
6930
6922
  registerSessionCommands(program);
6931
6923
  registerVeniceCommands(program);
6932
6924
  registerAllowanceCommands(program);
@@ -6934,11 +6926,11 @@ registerIdentityCommands(program);
6934
6926
  registerProposalCommands(program);
6935
6927
  registerGovernorCommands(program);
6936
6928
  registerGuardianCommands(program);
6937
- var { registerResearchCommands } = await import("./research-QBKISW2M.js");
6929
+ var { registerResearchCommands } = await import("./research-WBZU4QNU.js");
6938
6930
  registerResearchCommands(program);
6939
- var { registerAgentCommands } = await import("./agent-ZPAZTJG3.js");
6931
+ var { registerAgentCommands } = await import("./agent-E5GHURKJ.js");
6940
6932
  registerAgentCommands(program);
6941
- var { registerTradeCommands } = await import("./trade-NO6CNWCA.js");
6933
+ var { registerTradeCommands } = await import("./trade-PTYLNJBU.js");
6942
6934
  registerTradeCommands(program);
6943
6935
  registerGridCommand(program);
6944
6936
  var configCmd = program.command("config");