@sherwoodagent/cli 0.9.0 → 0.10.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/{chat-BNYWD3EL.js → chat-4Q7G3DFO.js} +4 -4
- package/dist/{chunk-Q37V65B6.js → chunk-3EBFJLQR.js} +2 -2
- package/dist/{chunk-HKZONPXW.js → chunk-DTSTJUZH.js} +2 -2
- package/dist/{chunk-OUES74ID.js → chunk-SGYOOHML.js} +18 -6
- package/dist/{chunk-OUES74ID.js.map → chunk-SGYOOHML.js.map} +1 -1
- package/dist/{eas-EL3XCEXQ.js → eas-NZ7GCLPA.js} +3 -3
- package/dist/index.js +43 -19
- package/dist/index.js.map +1 -1
- package/dist/{research-57SKO27M.js → research-3XEIOMDP.js} +3 -3
- package/dist/{session-QQSHCGNK.js → session-FVFIACYW.js} +4 -4
- package/dist/{xmtp-S4VRXMFK.js → xmtp-JC5AUYRG.js} +3 -3
- package/package.json +1 -1
- /package/dist/{chat-BNYWD3EL.js.map → chat-4Q7G3DFO.js.map} +0 -0
- /package/dist/{chunk-Q37V65B6.js.map → chunk-3EBFJLQR.js.map} +0 -0
- /package/dist/{chunk-HKZONPXW.js.map → chunk-DTSTJUZH.js.map} +0 -0
- /package/dist/{eas-EL3XCEXQ.js.map → eas-NZ7GCLPA.js.map} +0 -0
- /package/dist/{research-57SKO27M.js.map → research-3XEIOMDP.js.map} +0 -0
- /package/dist/{session-QQSHCGNK.js.map → session-FVFIACYW.js.map} +0 -0
- /package/dist/{xmtp-S4VRXMFK.js.map → xmtp-JC5AUYRG.js.map} +0 -0
package/dist/index.js
CHANGED
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
queryApprovals,
|
|
11
11
|
queryJoinRequests,
|
|
12
12
|
revokeAttestation
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-DTSTJUZH.js";
|
|
14
14
|
import {
|
|
15
15
|
approveDepositor,
|
|
16
16
|
deposit,
|
|
@@ -28,7 +28,7 @@ import {
|
|
|
28
28
|
setTextRecord,
|
|
29
29
|
setVaultAddress,
|
|
30
30
|
simulateBatch
|
|
31
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-3EBFJLQR.js";
|
|
32
32
|
import {
|
|
33
33
|
AGENT_REGISTRY,
|
|
34
34
|
EAS_SCHEMAS,
|
|
@@ -44,7 +44,7 @@ import {
|
|
|
44
44
|
UNISWAP_QUOTER_V2_ABI,
|
|
45
45
|
VENICE,
|
|
46
46
|
VENICE_STAKING_ABI
|
|
47
|
-
} from "./chunk-
|
|
47
|
+
} from "./chunk-SGYOOHML.js";
|
|
48
48
|
import {
|
|
49
49
|
VALID_NETWORKS,
|
|
50
50
|
cacheGroupId,
|
|
@@ -1687,6 +1687,7 @@ import { readFileSync } from "fs";
|
|
|
1687
1687
|
|
|
1688
1688
|
// src/lib/governor.ts
|
|
1689
1689
|
var PROPOSAL_STATES = [
|
|
1690
|
+
"Draft",
|
|
1690
1691
|
"Pending",
|
|
1691
1692
|
"Approved",
|
|
1692
1693
|
"Rejected",
|
|
@@ -1695,6 +1696,21 @@ var PROPOSAL_STATES = [
|
|
|
1695
1696
|
"Settled",
|
|
1696
1697
|
"Cancelled"
|
|
1697
1698
|
];
|
|
1699
|
+
var PROPOSAL_STATE = {
|
|
1700
|
+
Draft: 0,
|
|
1701
|
+
Pending: 1,
|
|
1702
|
+
Approved: 2,
|
|
1703
|
+
Rejected: 3,
|
|
1704
|
+
Expired: 4,
|
|
1705
|
+
Executed: 5,
|
|
1706
|
+
Settled: 6,
|
|
1707
|
+
Cancelled: 7
|
|
1708
|
+
};
|
|
1709
|
+
var VOTE_TYPE = {
|
|
1710
|
+
For: 0,
|
|
1711
|
+
Against: 1,
|
|
1712
|
+
Abstain: 2
|
|
1713
|
+
};
|
|
1698
1714
|
function parseDuration(input2) {
|
|
1699
1715
|
const match = input2.match(/^(\d+)(d|h|m|s)?$/);
|
|
1700
1716
|
if (!match) throw new Error(`Invalid duration: ${input2}`);
|
|
@@ -1797,7 +1813,7 @@ async function getCapitalSnapshot(proposalId) {
|
|
|
1797
1813
|
args: [proposalId]
|
|
1798
1814
|
});
|
|
1799
1815
|
}
|
|
1800
|
-
async function propose(vault, metadataURI, performanceFeeBps, strategyDuration, calls, splitIndex) {
|
|
1816
|
+
async function propose(vault, metadataURI, performanceFeeBps, strategyDuration, calls, splitIndex, coProposers = []) {
|
|
1801
1817
|
const wallet = getWalletClient();
|
|
1802
1818
|
const client = getPublicClient();
|
|
1803
1819
|
const hash = await wallet.writeContract({
|
|
@@ -1806,7 +1822,7 @@ async function propose(vault, metadataURI, performanceFeeBps, strategyDuration,
|
|
|
1806
1822
|
address: getGovernorAddress(),
|
|
1807
1823
|
abi: SYNDICATE_GOVERNOR_ABI,
|
|
1808
1824
|
functionName: "propose",
|
|
1809
|
-
args: [vault, metadataURI, performanceFeeBps, strategyDuration, calls, splitIndex]
|
|
1825
|
+
args: [vault, metadataURI, performanceFeeBps, strategyDuration, calls, splitIndex, coProposers]
|
|
1810
1826
|
});
|
|
1811
1827
|
const receipt = await client.waitForTransactionReceipt({ hash });
|
|
1812
1828
|
let proposalId;
|
|
@@ -2119,7 +2135,7 @@ function registerProposalCommands(program2) {
|
|
|
2119
2135
|
process.exit(1);
|
|
2120
2136
|
}
|
|
2121
2137
|
});
|
|
2122
|
-
proposal.command("list").description("List proposals").option("--vault <address>", "Filter by vault").option("--state <filter>", "Filter by state: pending, approved, executed, settled, all", "all").action(async (opts) => {
|
|
2138
|
+
proposal.command("list").description("List proposals").option("--vault <address>", "Filter by vault").option("--state <filter>", "Filter by state: draft, pending, approved, executed, settled, all", "all").action(async (opts) => {
|
|
2123
2139
|
const spinner = ora5("Loading proposals...").start();
|
|
2124
2140
|
try {
|
|
2125
2141
|
const count = await proposalCount();
|
|
@@ -2214,8 +2230,9 @@ function registerProposalCommands(program2) {
|
|
|
2214
2230
|
console.log(LABEL(" Votes"));
|
|
2215
2231
|
console.log(W(` For: ${formatShares(p.votesFor)}`));
|
|
2216
2232
|
console.log(W(` Against: ${formatShares(p.votesAgainst)}`));
|
|
2233
|
+
console.log(W(` Abstain: ${formatShares(p.votesAbstain)}`));
|
|
2217
2234
|
console.log(W(` Quorum: ${quorumNeeded}`));
|
|
2218
|
-
if (state ===
|
|
2235
|
+
if (state === PROPOSAL_STATE.Executed || state === PROPOSAL_STATE.Settled) {
|
|
2219
2236
|
try {
|
|
2220
2237
|
const cap = await getCapitalSnapshot(id);
|
|
2221
2238
|
console.log();
|
|
@@ -2239,15 +2256,20 @@ function registerProposalCommands(program2) {
|
|
|
2239
2256
|
process.exit(1);
|
|
2240
2257
|
}
|
|
2241
2258
|
});
|
|
2242
|
-
proposal.command("vote").description("Cast a vote on a pending proposal").requiredOption("--id <proposalId>", "Proposal ID").requiredOption("--support <
|
|
2259
|
+
proposal.command("vote").description("Cast a vote on a pending proposal").requiredOption("--id <proposalId>", "Proposal ID").requiredOption("--support <for|against|abstain>", "Vote direction: for, against, or abstain").action(async (opts) => {
|
|
2243
2260
|
try {
|
|
2244
2261
|
const proposalId = parseBigIntArg(opts.id, "proposal ID");
|
|
2245
|
-
const
|
|
2262
|
+
const supportRaw = String(opts.support).toLowerCase();
|
|
2263
|
+
const support = supportRaw === "yes" || supportRaw === "for" ? VOTE_TYPE.For : supportRaw === "no" || supportRaw === "against" ? VOTE_TYPE.Against : supportRaw === "abstain" ? VOTE_TYPE.Abstain : null;
|
|
2264
|
+
if (support === null) {
|
|
2265
|
+
console.error(chalk5.red(`Invalid support value "${opts.support}". Use for|against|abstain.`));
|
|
2266
|
+
process.exit(1);
|
|
2267
|
+
}
|
|
2246
2268
|
const account = getAccount();
|
|
2247
2269
|
const spinner = ora5("Loading proposal...").start();
|
|
2248
2270
|
const p = await getProposal(proposalId);
|
|
2249
2271
|
const state = await getProposalState(proposalId);
|
|
2250
|
-
if (state !==
|
|
2272
|
+
if (state !== PROPOSAL_STATE.Pending) {
|
|
2251
2273
|
spinner.fail(`Proposal is ${PROPOSAL_STATES[state] || "Unknown"}, not Pending`);
|
|
2252
2274
|
process.exit(1);
|
|
2253
2275
|
}
|
|
@@ -2263,7 +2285,9 @@ function registerProposalCommands(program2) {
|
|
|
2263
2285
|
SEP();
|
|
2264
2286
|
console.log(W(` Proposal: #${proposalId}`));
|
|
2265
2287
|
console.log(W(` Vault: ${G(p.vault)}`));
|
|
2266
|
-
console.log(W(
|
|
2288
|
+
console.log(W(
|
|
2289
|
+
` Support: ${support === VOTE_TYPE.For ? G("FOR") : support === VOTE_TYPE.Against ? chalk5.red("AGAINST") : DIM("ABSTAIN")}`
|
|
2290
|
+
));
|
|
2267
2291
|
console.log(W(` Weight: ${formatShares(weight)} shares`));
|
|
2268
2292
|
SEP();
|
|
2269
2293
|
const voteSpinner = ora5({ text: W("Submitting vote..."), color: "green" }).start();
|
|
@@ -2282,7 +2306,7 @@ function registerProposalCommands(program2) {
|
|
|
2282
2306
|
const proposalId = parseBigIntArg(opts.id, "proposal ID");
|
|
2283
2307
|
const spinner = ora5("Loading proposal...").start();
|
|
2284
2308
|
const state = await getProposalState(proposalId);
|
|
2285
|
-
if (state !==
|
|
2309
|
+
if (state !== PROPOSAL_STATE.Approved) {
|
|
2286
2310
|
spinner.fail(`Proposal is ${PROPOSAL_STATES[state] || "Unknown"}, not Approved`);
|
|
2287
2311
|
process.exit(1);
|
|
2288
2312
|
}
|
|
@@ -2309,7 +2333,7 @@ function registerProposalCommands(program2) {
|
|
|
2309
2333
|
const spinner = ora5("Loading proposal...").start();
|
|
2310
2334
|
const p = await getProposal(proposalId);
|
|
2311
2335
|
const state = await getProposalState(proposalId);
|
|
2312
|
-
if (state !==
|
|
2336
|
+
if (state !== PROPOSAL_STATE.Executed) {
|
|
2313
2337
|
spinner.fail(`Proposal is ${PROPOSAL_STATES[state] || "Unknown"}, not Executed`);
|
|
2314
2338
|
process.exit(1);
|
|
2315
2339
|
}
|
|
@@ -2348,7 +2372,7 @@ function registerProposalCommands(program2) {
|
|
|
2348
2372
|
const proposalId = parseBigIntArg(opts.id, "proposal ID");
|
|
2349
2373
|
const spinner = ora5("Loading proposal...").start();
|
|
2350
2374
|
const state = await getProposalState(proposalId);
|
|
2351
|
-
if (state ===
|
|
2375
|
+
if (state === PROPOSAL_STATE.Settled || state === PROPOSAL_STATE.Cancelled) {
|
|
2352
2376
|
spinner.fail(`Proposal is already ${PROPOSAL_STATES[state]}`);
|
|
2353
2377
|
process.exit(1);
|
|
2354
2378
|
}
|
|
@@ -2358,7 +2382,7 @@ function registerProposalCommands(program2) {
|
|
|
2358
2382
|
hash = await emergencyCancel(proposalId);
|
|
2359
2383
|
spinner.succeed(G("Emergency cancelled"));
|
|
2360
2384
|
} else {
|
|
2361
|
-
if (state !==
|
|
2385
|
+
if (state !== PROPOSAL_STATE.Draft && state !== PROPOSAL_STATE.Pending) {
|
|
2362
2386
|
spinner.fail(`Proposal is ${PROPOSAL_STATES[state] || "Unknown"} \u2014 use --emergency for non-pending/approved`);
|
|
2363
2387
|
process.exit(1);
|
|
2364
2388
|
}
|
|
@@ -2502,7 +2526,7 @@ try {
|
|
|
2502
2526
|
} catch {
|
|
2503
2527
|
}
|
|
2504
2528
|
async function loadXmtp() {
|
|
2505
|
-
return import("./xmtp-
|
|
2529
|
+
return import("./xmtp-JC5AUYRG.js");
|
|
2506
2530
|
}
|
|
2507
2531
|
var G3 = chalk7.green;
|
|
2508
2532
|
var W3 = chalk7.white;
|
|
@@ -3277,7 +3301,7 @@ ${info.name} (${info.type})`);
|
|
|
3277
3301
|
}
|
|
3278
3302
|
});
|
|
3279
3303
|
try {
|
|
3280
|
-
const { registerChatCommands } = await import("./chat-
|
|
3304
|
+
const { registerChatCommands } = await import("./chat-4Q7G3DFO.js");
|
|
3281
3305
|
registerChatCommands(program);
|
|
3282
3306
|
} catch {
|
|
3283
3307
|
program.command("chat <name> [action] [actionArgs...]").description("Syndicate chat (XMTP) \u2014 requires @xmtp/cli").action(() => {
|
|
@@ -3287,14 +3311,14 @@ try {
|
|
|
3287
3311
|
process.exit(1);
|
|
3288
3312
|
});
|
|
3289
3313
|
}
|
|
3290
|
-
var { registerSessionCommands } = await import("./session-
|
|
3314
|
+
var { registerSessionCommands } = await import("./session-FVFIACYW.js");
|
|
3291
3315
|
registerSessionCommands(program);
|
|
3292
3316
|
registerVeniceCommands(program);
|
|
3293
3317
|
registerAllowanceCommands(program);
|
|
3294
3318
|
registerIdentityCommands(program);
|
|
3295
3319
|
registerProposalCommands(program);
|
|
3296
3320
|
registerGovernorCommands(program);
|
|
3297
|
-
var { registerResearchCommands } = await import("./research-
|
|
3321
|
+
var { registerResearchCommands } = await import("./research-3XEIOMDP.js");
|
|
3298
3322
|
registerResearchCommands(program);
|
|
3299
3323
|
var configCmd = program.command("config");
|
|
3300
3324
|
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").action((opts) => {
|