@sherwoodagent/cli 0.25.1 → 0.25.2
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/{chat-52PWNH7Y.js → chat-MYRUIM54.js} +4 -4
- package/dist/{chunk-JEVBC7DV.js → chunk-2SNPCWB4.js} +2 -2
- package/dist/{chunk-7PCI3WHQ.js → chunk-2UP63CYI.js} +2 -2
- package/dist/{chunk-QBNWBWD3.js → chunk-G6LOQCM3.js} +81 -2
- package/dist/chunk-G6LOQCM3.js.map +1 -0
- package/dist/{chunk-VQIFAXUY.js → chunk-L5RWZSET.js} +2 -2
- package/dist/{chunk-ZPLUJT4V.js → chunk-O7QIRMJO.js} +26 -1
- package/dist/chunk-O7QIRMJO.js.map +1 -0
- package/dist/{eas-YZIHYQAI.js → eas-DGLNPNWX.js} +3 -3
- package/dist/{governor-YPDAOT3S.js → governor-3PINJ2X2.js} +3 -3
- package/dist/index.js +71 -17
- package/dist/index.js.map +1 -1
- package/dist/{price-SWNEGWO4.js → price-76BEXJDI.js} +2 -2
- package/dist/{research-PH77VSE4.js → research-FIX3U4LG.js} +3 -3
- package/dist/{session-NMA4RLKC.js → session-6DJ4A2Q3.js} +5 -5
- package/dist/{trade-N2A74UPX.js → trade-MDVM4XFF.js} +6 -6
- package/dist/{xmtp-YNOGIZ4G.js → xmtp-64CYLVLO.js} +3 -3
- package/package.json +1 -1
- package/dist/chunk-QBNWBWD3.js.map +0 -1
- package/dist/chunk-ZPLUJT4V.js.map +0 -1
- /package/dist/{chat-52PWNH7Y.js.map → chat-MYRUIM54.js.map} +0 -0
- /package/dist/{chunk-JEVBC7DV.js.map → chunk-2SNPCWB4.js.map} +0 -0
- /package/dist/{chunk-7PCI3WHQ.js.map → chunk-2UP63CYI.js.map} +0 -0
- /package/dist/{chunk-VQIFAXUY.js.map → chunk-L5RWZSET.js.map} +0 -0
- /package/dist/{eas-YZIHYQAI.js.map → eas-DGLNPNWX.js.map} +0 -0
- /package/dist/{governor-YPDAOT3S.js.map → governor-3PINJ2X2.js.map} +0 -0
- /package/dist/{price-SWNEGWO4.js.map → price-76BEXJDI.js.map} +0 -0
- /package/dist/{research-PH77VSE4.js.map → research-FIX3U4LG.js.map} +0 -0
- /package/dist/{session-NMA4RLKC.js.map → session-6DJ4A2Q3.js.map} +0 -0
- /package/dist/{trade-N2A74UPX.js.map → trade-MDVM4XFF.js.map} +0 -0
- /package/dist/{xmtp-YNOGIZ4G.js.map → xmtp-64CYLVLO.js.map} +0 -0
package/dist/index.js
CHANGED
|
@@ -6,17 +6,20 @@ import {
|
|
|
6
6
|
executeBatch,
|
|
7
7
|
getAssetDecimals,
|
|
8
8
|
getBalance,
|
|
9
|
+
getShareBalance,
|
|
9
10
|
getVaultAddress,
|
|
10
11
|
getVaultInfo,
|
|
11
12
|
isAgent,
|
|
12
13
|
preflightDeposit,
|
|
14
|
+
preflightRedeem,
|
|
15
|
+
redeem,
|
|
13
16
|
registerAgent,
|
|
14
17
|
removeDepositor,
|
|
15
18
|
resolveSyndicate,
|
|
16
19
|
resolveVaultSyndicate,
|
|
17
20
|
setTextRecord,
|
|
18
21
|
setVaultAddress
|
|
19
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-G6LOQCM3.js";
|
|
20
23
|
import {
|
|
21
24
|
UniswapProvider,
|
|
22
25
|
applySlippage,
|
|
@@ -27,7 +30,7 @@ import {
|
|
|
27
30
|
getQuote,
|
|
28
31
|
listModels,
|
|
29
32
|
provisionApiKey
|
|
30
|
-
} from "./chunk-
|
|
33
|
+
} from "./chunk-L5RWZSET.js";
|
|
31
34
|
import {
|
|
32
35
|
PROPOSAL_STATE,
|
|
33
36
|
PROPOSAL_STATES,
|
|
@@ -58,7 +61,7 @@ import {
|
|
|
58
61
|
setVotingPeriod,
|
|
59
62
|
settleProposal,
|
|
60
63
|
vote
|
|
61
|
-
} from "./chunk-
|
|
64
|
+
} from "./chunk-2UP63CYI.js";
|
|
62
65
|
import {
|
|
63
66
|
fetchMetadata,
|
|
64
67
|
uploadMetadata
|
|
@@ -72,7 +75,7 @@ import {
|
|
|
72
75
|
queryJoinRequests,
|
|
73
76
|
revokeAttestation,
|
|
74
77
|
stripReferrerPrefix
|
|
75
|
-
} from "./chunk-
|
|
78
|
+
} from "./chunk-2SNPCWB4.js";
|
|
76
79
|
import {
|
|
77
80
|
AERODROME,
|
|
78
81
|
AGENT_REGISTRY,
|
|
@@ -93,7 +96,7 @@ import {
|
|
|
93
96
|
UNISWAP,
|
|
94
97
|
VENICE,
|
|
95
98
|
VENICE_STAKING_ABI
|
|
96
|
-
} from "./chunk-
|
|
99
|
+
} from "./chunk-O7QIRMJO.js";
|
|
97
100
|
import {
|
|
98
101
|
formatContractError,
|
|
99
102
|
getAccount,
|
|
@@ -139,7 +142,7 @@ import {
|
|
|
139
142
|
import { config as loadDotenv } from "dotenv";
|
|
140
143
|
import { createRequire } from "module";
|
|
141
144
|
import { Command, Option } from "commander";
|
|
142
|
-
import { parseUnits as parseUnits5, isAddress as isAddress5 } from "viem";
|
|
145
|
+
import { parseUnits as parseUnits5, formatUnits as formatUnits5, isAddress as isAddress5 } from "viem";
|
|
143
146
|
import chalk8 from "chalk";
|
|
144
147
|
import ora7 from "ora";
|
|
145
148
|
import { input, confirm, select } from "@inquirer/prompts";
|
|
@@ -1293,9 +1296,9 @@ function registerStrategyTemplateCommands(strategy2) {
|
|
|
1293
1296
|
console.error(chalk.red("Missing --name, --performance-fee, or --duration. Use --write-calls to skip proposal submission."));
|
|
1294
1297
|
process.exit(1);
|
|
1295
1298
|
}
|
|
1296
|
-
const { propose: propose2 } = await import("./governor-
|
|
1299
|
+
const { propose: propose2 } = await import("./governor-3PINJ2X2.js");
|
|
1297
1300
|
const { pinJSON } = await import("./ipfs-22YLNQ2C.js");
|
|
1298
|
-
const { parseDuration: parseDuration2 } = await import("./governor-
|
|
1301
|
+
const { parseDuration: parseDuration2 } = await import("./governor-3PINJ2X2.js");
|
|
1299
1302
|
const performanceFeeBps = BigInt(opts.performanceFee);
|
|
1300
1303
|
if (performanceFeeBps < 0n || performanceFeeBps > 10000n) {
|
|
1301
1304
|
console.error(chalk.red("--performance-fee must be 0-10000 (basis points)"));
|
|
@@ -1403,7 +1406,7 @@ function registerStrategyTemplateCommands(strategy2) {
|
|
|
1403
1406
|
let prices = [];
|
|
1404
1407
|
let priceSource = null;
|
|
1405
1408
|
try {
|
|
1406
|
-
const { getTokenPricesInAsset } = await import("./price-
|
|
1409
|
+
const { getTokenPricesInAsset } = await import("./price-76BEXJDI.js");
|
|
1407
1410
|
prices = await getTokenPricesInAsset({
|
|
1408
1411
|
tokens: allocations.map((a, i) => ({
|
|
1409
1412
|
token: a.token,
|
|
@@ -1950,7 +1953,7 @@ function registerVeniceCommands(program2) {
|
|
|
1950
1953
|
console.log(chalk2.dim(` Key: ${apiKey.slice(0, 8)}...${apiKey.slice(-4)}`));
|
|
1951
1954
|
console.log(chalk2.dim(" Saved to ~/.sherwood/config.json"));
|
|
1952
1955
|
try {
|
|
1953
|
-
const { createVeniceProvisionAttestation, getEasScanUrl: getEasScanUrl2 } = await import("./eas-
|
|
1956
|
+
const { createVeniceProvisionAttestation, getEasScanUrl: getEasScanUrl2 } = await import("./eas-DGLNPNWX.js");
|
|
1954
1957
|
const { uid } = await createVeniceProvisionAttestation(account.address);
|
|
1955
1958
|
if (uid !== "0x0000000000000000000000000000000000000000000000000000000000000000") {
|
|
1956
1959
|
console.log(chalk2.dim(` Attested: ${getEasScanUrl2(uid)}`));
|
|
@@ -2101,7 +2104,7 @@ ${opts.prompt}`;
|
|
|
2101
2104
|
console.log(chalk2.dim(`Model: ${result.model} | Tokens: ${result.usage.promptTokens} in, ${result.usage.completionTokens} out, ${result.usage.totalTokens} total`));
|
|
2102
2105
|
}
|
|
2103
2106
|
try {
|
|
2104
|
-
const { createVeniceInferenceAttestation, getEasScanUrl: getEasScanUrl2 } = await import("./eas-
|
|
2107
|
+
const { createVeniceInferenceAttestation, getEasScanUrl: getEasScanUrl2 } = await import("./eas-DGLNPNWX.js");
|
|
2105
2108
|
const { keccak256, toHex, isAddress: isAddr } = await import("viem");
|
|
2106
2109
|
const { getChainContracts: getChainContracts2 } = await import("./config-YXZKPSZB.js");
|
|
2107
2110
|
const { getChain: getActiveChain } = await import("./network-QEMP3DSP.js");
|
|
@@ -3233,7 +3236,7 @@ function printSimulationResult(result, callType) {
|
|
|
3233
3236
|
}
|
|
3234
3237
|
async function sendSimulationAlert(subdomain, proposalId, vault, execResult, settleResult) {
|
|
3235
3238
|
try {
|
|
3236
|
-
const xmtp = await import("./xmtp-
|
|
3239
|
+
const xmtp = await import("./xmtp-64CYLVLO.js");
|
|
3237
3240
|
const { getAccount: getAccount2 } = await import("./client-CWQFYZ5Z.js");
|
|
3238
3241
|
const group = await xmtp.getGroup("", subdomain);
|
|
3239
3242
|
const allRisks = [...execResult.risks, ...settleResult?.risks ?? []];
|
|
@@ -3926,7 +3929,7 @@ try {
|
|
|
3926
3929
|
var require2 = createRequire(import.meta.url);
|
|
3927
3930
|
var { version: CLI_VERSION } = require2("../package.json");
|
|
3928
3931
|
async function loadXmtp() {
|
|
3929
|
-
return import("./xmtp-
|
|
3932
|
+
return import("./xmtp-64CYLVLO.js");
|
|
3930
3933
|
}
|
|
3931
3934
|
async function loadCron() {
|
|
3932
3935
|
return import("./cron-EOULYO3R.js");
|
|
@@ -4886,6 +4889,57 @@ vaultCmd.command("balance").description("Show LP share balance and asset value")
|
|
|
4886
4889
|
process.exit(1);
|
|
4887
4890
|
}
|
|
4888
4891
|
});
|
|
4892
|
+
vaultCmd.command("redeem").description("Redeem vault shares for the underlying asset (ERC-4626)").option("--vault <address>", "Vault address (default: from config)").option("--shares <amount>", "Shares to redeem in whole-share units (default: all)").option("--receiver <address>", "Receiver of the underlying asset (default: your wallet)").action(async (opts) => {
|
|
4893
|
+
resolveVault(opts);
|
|
4894
|
+
const assetDecimals = await getAssetDecimals();
|
|
4895
|
+
const shareDecimals = assetDecimals * 2;
|
|
4896
|
+
let shares;
|
|
4897
|
+
try {
|
|
4898
|
+
if (opts.shares) {
|
|
4899
|
+
shares = parseUnits5(opts.shares, shareDecimals);
|
|
4900
|
+
} else {
|
|
4901
|
+
shares = await getShareBalance();
|
|
4902
|
+
if (shares === 0n) {
|
|
4903
|
+
console.error(chalk8.red("\n \u2716 No shares to redeem.\n"));
|
|
4904
|
+
process.exit(1);
|
|
4905
|
+
}
|
|
4906
|
+
}
|
|
4907
|
+
} catch (err) {
|
|
4908
|
+
console.error(chalk8.red(`
|
|
4909
|
+
\u2716 ${err instanceof Error ? err.message : String(err)}
|
|
4910
|
+
`));
|
|
4911
|
+
process.exit(1);
|
|
4912
|
+
}
|
|
4913
|
+
if (opts.receiver && !isAddress5(opts.receiver)) {
|
|
4914
|
+
console.error(chalk8.red(`
|
|
4915
|
+
\u2716 Invalid receiver address: ${opts.receiver}
|
|
4916
|
+
`));
|
|
4917
|
+
process.exit(1);
|
|
4918
|
+
}
|
|
4919
|
+
try {
|
|
4920
|
+
await preflightRedeem(shares);
|
|
4921
|
+
} catch (err) {
|
|
4922
|
+
console.error(chalk8.red(`
|
|
4923
|
+
\u2716 ${err instanceof Error ? err.message : String(err)}
|
|
4924
|
+
`));
|
|
4925
|
+
process.exit(1);
|
|
4926
|
+
}
|
|
4927
|
+
const sharesDisplay = formatUnits5(shares, shareDecimals);
|
|
4928
|
+
const spinner = ora7(`Redeeming ${sharesDisplay} shares...`).start();
|
|
4929
|
+
try {
|
|
4930
|
+
const { hash, assetsOut } = await redeem(
|
|
4931
|
+
shares,
|
|
4932
|
+
opts.receiver
|
|
4933
|
+
);
|
|
4934
|
+
spinner.succeed(`Redeemed: ${hash}`);
|
|
4935
|
+
console.log(chalk8.dim(` ${getExplorerUrl(hash)}`));
|
|
4936
|
+
console.log(` Assets received: ${formatUnits5(assetsOut, assetDecimals)}`);
|
|
4937
|
+
} catch (err) {
|
|
4938
|
+
spinner.fail("Redeem failed");
|
|
4939
|
+
console.error(chalk8.red(formatContractError(err)));
|
|
4940
|
+
process.exit(1);
|
|
4941
|
+
}
|
|
4942
|
+
});
|
|
4889
4943
|
var strategy = program.command("strategy").description("Strategy templates \u2014 list, clone, propose");
|
|
4890
4944
|
registerStrategyTemplateCommands(strategy);
|
|
4891
4945
|
program.command("providers").description("List available DeFi providers").action(async () => {
|
|
@@ -4900,7 +4954,7 @@ ${info.name} (${info.type})`);
|
|
|
4900
4954
|
}
|
|
4901
4955
|
});
|
|
4902
4956
|
try {
|
|
4903
|
-
const { registerChatCommands } = await import("./chat-
|
|
4957
|
+
const { registerChatCommands } = await import("./chat-MYRUIM54.js");
|
|
4904
4958
|
registerChatCommands(program);
|
|
4905
4959
|
} catch {
|
|
4906
4960
|
program.command("chat <name> [action] [actionArgs...]").description("Syndicate chat (XMTP) \u2014 requires @xmtp/cli").action(() => {
|
|
@@ -4910,16 +4964,16 @@ try {
|
|
|
4910
4964
|
process.exit(1);
|
|
4911
4965
|
});
|
|
4912
4966
|
}
|
|
4913
|
-
var { registerSessionCommands } = await import("./session-
|
|
4967
|
+
var { registerSessionCommands } = await import("./session-6DJ4A2Q3.js");
|
|
4914
4968
|
registerSessionCommands(program);
|
|
4915
4969
|
registerVeniceCommands(program);
|
|
4916
4970
|
registerAllowanceCommands(program);
|
|
4917
4971
|
registerIdentityCommands(program);
|
|
4918
4972
|
registerProposalCommands(program);
|
|
4919
4973
|
registerGovernorCommands(program);
|
|
4920
|
-
var { registerResearchCommands } = await import("./research-
|
|
4974
|
+
var { registerResearchCommands } = await import("./research-FIX3U4LG.js");
|
|
4921
4975
|
registerResearchCommands(program);
|
|
4922
|
-
var { registerTradeCommands } = await import("./trade-
|
|
4976
|
+
var { registerTradeCommands } = await import("./trade-MDVM4XFF.js");
|
|
4923
4977
|
registerTradeCommands(program);
|
|
4924
4978
|
var configCmd = program.command("config");
|
|
4925
4979
|
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").action((opts) => {
|