dexe-mcp 0.1.3 → 0.2.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/.mcp.example.json +12 -2
- package/CHANGELOG.md +48 -0
- package/FUTURE.md +26 -5
- package/README.md +80 -195
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +10 -1
- package/dist/bootstrap.js.map +1 -1
- package/dist/config.d.ts +10 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +24 -1
- package/dist/config.js.map +1 -1
- package/dist/hardhat.d.ts.map +1 -1
- package/dist/hardhat.js +10 -5
- package/dist/hardhat.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/lib/addresses.d.ts +57 -0
- package/dist/lib/addresses.d.ts.map +1 -0
- package/dist/lib/addresses.js +83 -0
- package/dist/lib/addresses.js.map +1 -0
- package/dist/lib/calldata.d.ts +32 -0
- package/dist/lib/calldata.d.ts.map +1 -0
- package/dist/lib/calldata.js +28 -0
- package/dist/lib/calldata.js.map +1 -0
- package/dist/lib/govEnums.d.ts +12 -0
- package/dist/lib/govEnums.d.ts.map +1 -0
- package/dist/lib/govEnums.js +35 -0
- package/dist/lib/govEnums.js.map +1 -0
- package/dist/lib/ipfs.d.ts +60 -0
- package/dist/lib/ipfs.d.ts.map +1 -0
- package/dist/lib/ipfs.js +167 -0
- package/dist/lib/ipfs.js.map +1 -0
- package/dist/lib/multicall.d.ts +33 -0
- package/dist/lib/multicall.d.ts.map +1 -0
- package/dist/lib/multicall.js +46 -0
- package/dist/lib/multicall.js.map +1 -0
- package/dist/lib/proposalCatalog.d.ts +45 -0
- package/dist/lib/proposalCatalog.d.ts.map +1 -0
- package/dist/lib/proposalCatalog.js +416 -0
- package/dist/lib/proposalCatalog.js.map +1 -0
- package/dist/lib/subgraph.d.ts +15 -0
- package/dist/lib/subgraph.d.ts.map +1 -0
- package/dist/lib/subgraph.js +37 -0
- package/dist/lib/subgraph.js.map +1 -0
- package/dist/runtime.d.ts +51 -13
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +149 -26
- package/dist/runtime.js.map +1 -1
- package/dist/tools/dao.d.ts +4 -0
- package/dist/tools/dao.d.ts.map +1 -0
- package/dist/tools/dao.js +242 -0
- package/dist/tools/dao.js.map +1 -0
- package/dist/tools/daoDeploy.d.ts +4 -0
- package/dist/tools/daoDeploy.d.ts.map +1 -0
- package/dist/tools/daoDeploy.js +323 -0
- package/dist/tools/daoDeploy.js.map +1 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +24 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/ipfs.d.ts +6 -0
- package/dist/tools/ipfs.d.ts.map +1 -0
- package/dist/tools/ipfs.js +310 -0
- package/dist/tools/ipfs.js.map +1 -0
- package/dist/tools/proposal.d.ts +4 -0
- package/dist/tools/proposal.d.ts.map +1 -0
- package/dist/tools/proposal.js +199 -0
- package/dist/tools/proposal.js.map +1 -0
- package/dist/tools/proposalBuild.d.ts +4 -0
- package/dist/tools/proposalBuild.d.ts.map +1 -0
- package/dist/tools/proposalBuild.js +357 -0
- package/dist/tools/proposalBuild.js.map +1 -0
- package/dist/tools/proposalBuildComplex.d.ts +4 -0
- package/dist/tools/proposalBuildComplex.d.ts.map +1 -0
- package/dist/tools/proposalBuildComplex.js +700 -0
- package/dist/tools/proposalBuildComplex.js.map +1 -0
- package/dist/tools/proposalBuildInternal.d.ts +4 -0
- package/dist/tools/proposalBuildInternal.d.ts.map +1 -0
- package/dist/tools/proposalBuildInternal.js +211 -0
- package/dist/tools/proposalBuildInternal.js.map +1 -0
- package/dist/tools/proposalBuildMore.d.ts +4 -0
- package/dist/tools/proposalBuildMore.d.ts.map +1 -0
- package/dist/tools/proposalBuildMore.js +436 -0
- package/dist/tools/proposalBuildMore.js.map +1 -0
- package/dist/tools/proposalBuildOffchain.d.ts +4 -0
- package/dist/tools/proposalBuildOffchain.d.ts.map +1 -0
- package/dist/tools/proposalBuildOffchain.js +386 -0
- package/dist/tools/proposalBuildOffchain.js.map +1 -0
- package/dist/tools/read.d.ts +4 -0
- package/dist/tools/read.d.ts.map +1 -0
- package/dist/tools/read.js +353 -0
- package/dist/tools/read.js.map +1 -0
- package/dist/tools/vote.d.ts +4 -0
- package/dist/tools/vote.d.ts.map +1 -0
- package/dist/tools/vote.js +196 -0
- package/dist/tools/vote.js.map +1 -0
- package/dist/tools/voteBuild.d.ts +4 -0
- package/dist/tools/voteBuild.d.ts.map +1 -0
- package/dist/tools/voteBuild.js +563 -0
- package/dist/tools/voteBuild.js.map +1 -0
- package/package.json +9 -4
- package/PLAN.md +0 -132
|
@@ -0,0 +1,436 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { Interface, isAddress } from "ethers";
|
|
3
|
+
/**
|
|
4
|
+
* Phase 3b named wrappers. Every wrapper returns the same scaffold shape as
|
|
5
|
+
* `dexe_proposal_build_token_transfer`:
|
|
6
|
+
* { metadata, action, nextStep }
|
|
7
|
+
* — the agent then (1) uploads `metadata` via dexe_ipfs_upload_proposal_metadata,
|
|
8
|
+
* (2) calls dexe_proposal_build_external with the returned CID and [action].
|
|
9
|
+
*
|
|
10
|
+
* Signatures were captured verbatim from the DeXe frontend hooks at
|
|
11
|
+
* C:/dev/investing-dashboard/src/hooks/dao/proposals/** (2026-04-15 audit).
|
|
12
|
+
*/
|
|
13
|
+
const GOV_SETTINGS_ABI = [
|
|
14
|
+
"function editSettings(uint256[] ids, tuple(bool earlyCompletion, bool delegatedVotingAllowed, bool validatorsVote, uint64 duration, uint64 durationValidators, uint64 executionDelay, uint128 quorum, uint128 quorumValidators, uint256 minVotesForVoting, uint256 minVotesForCreating, tuple(address rewardToken, uint256 creationReward, uint256 executionReward, uint256 voteRewardsCoefficient) rewardsInfo, string executorDescription)[] params)",
|
|
15
|
+
"function addSettings(tuple(bool earlyCompletion, bool delegatedVotingAllowed, bool validatorsVote, uint64 duration, uint64 durationValidators, uint64 executionDelay, uint128 quorum, uint128 quorumValidators, uint256 minVotesForVoting, uint256 minVotesForCreating, tuple(address rewardToken, uint256 creationReward, uint256 executionReward, uint256 voteRewardsCoefficient) rewardsInfo, string executorDescription)[] settings)",
|
|
16
|
+
];
|
|
17
|
+
const GOV_VALIDATORS_ABI = [
|
|
18
|
+
"function changeBalances(uint256[] balances, address[] users)",
|
|
19
|
+
];
|
|
20
|
+
const EXPERT_NFT_ABI = [
|
|
21
|
+
"function mint(address to, string uri)",
|
|
22
|
+
"function burn(address from)",
|
|
23
|
+
];
|
|
24
|
+
const GOV_POOL_TREASURY_ABI = [
|
|
25
|
+
"function withdraw(address receiver, uint256 amount, uint256[] nftIds)",
|
|
26
|
+
"function delegateTreasury(address delegatee, uint256 amount, uint256[] nftIds)",
|
|
27
|
+
"function undelegateTreasury(address delegatee, uint256 amount, uint256[] nftIds)",
|
|
28
|
+
];
|
|
29
|
+
// ---------- schemas ----------
|
|
30
|
+
const RewardsInfoSchema = z.object({
|
|
31
|
+
rewardToken: z.string(),
|
|
32
|
+
creationReward: z.string().default("0"),
|
|
33
|
+
executionReward: z.string().default("0"),
|
|
34
|
+
voteRewardsCoefficient: z.string().default("0"),
|
|
35
|
+
});
|
|
36
|
+
const ProposalSettingsSchema = z.object({
|
|
37
|
+
earlyCompletion: z.boolean(),
|
|
38
|
+
delegatedVotingAllowed: z.boolean(),
|
|
39
|
+
validatorsVote: z.boolean(),
|
|
40
|
+
duration: z.string(),
|
|
41
|
+
durationValidators: z.string(),
|
|
42
|
+
executionDelay: z.string().default("0"),
|
|
43
|
+
quorum: z.string(),
|
|
44
|
+
quorumValidators: z.string(),
|
|
45
|
+
minVotesForVoting: z.string(),
|
|
46
|
+
minVotesForCreating: z.string(),
|
|
47
|
+
rewardsInfo: RewardsInfoSchema,
|
|
48
|
+
executorDescription: z.string().default(""),
|
|
49
|
+
});
|
|
50
|
+
function toSettingsTuple(s) {
|
|
51
|
+
return [
|
|
52
|
+
s.earlyCompletion,
|
|
53
|
+
s.delegatedVotingAllowed,
|
|
54
|
+
s.validatorsVote,
|
|
55
|
+
BigInt(s.duration),
|
|
56
|
+
BigInt(s.durationValidators),
|
|
57
|
+
BigInt(s.executionDelay),
|
|
58
|
+
BigInt(s.quorum),
|
|
59
|
+
BigInt(s.quorumValidators),
|
|
60
|
+
BigInt(s.minVotesForVoting),
|
|
61
|
+
BigInt(s.minVotesForCreating),
|
|
62
|
+
[
|
|
63
|
+
s.rewardsInfo.rewardToken,
|
|
64
|
+
BigInt(s.rewardsInfo.creationReward),
|
|
65
|
+
BigInt(s.rewardsInfo.executionReward),
|
|
66
|
+
BigInt(s.rewardsInfo.voteRewardsCoefficient),
|
|
67
|
+
],
|
|
68
|
+
s.executorDescription,
|
|
69
|
+
];
|
|
70
|
+
}
|
|
71
|
+
function errorResult(message) {
|
|
72
|
+
return { content: [{ type: "text", text: message }], isError: true };
|
|
73
|
+
}
|
|
74
|
+
function wrapperResult(params) {
|
|
75
|
+
const { metadata, actions, title, detail } = params;
|
|
76
|
+
return {
|
|
77
|
+
content: [
|
|
78
|
+
{
|
|
79
|
+
type: "text",
|
|
80
|
+
text: `${title}\n${detail}\n\nNext:\n` +
|
|
81
|
+
`1) dexe_ipfs_upload_proposal_metadata with the metadata object → get CID\n` +
|
|
82
|
+
`2) dexe_proposal_build_external with descriptionURL=<CID>, actionsOnFor=actions (${actions.length} action${actions.length === 1 ? "" : "s"})`,
|
|
83
|
+
},
|
|
84
|
+
],
|
|
85
|
+
structuredContent: { metadata, actions },
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
function payloadOutputSchema() {
|
|
89
|
+
return {
|
|
90
|
+
metadata: z.unknown(),
|
|
91
|
+
actions: z.array(z.object({
|
|
92
|
+
executor: z.string(),
|
|
93
|
+
value: z.string(),
|
|
94
|
+
data: z.string(),
|
|
95
|
+
})),
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
// ---------- register ----------
|
|
99
|
+
export function registerProposalBuildMoreTools(server, _ctx) {
|
|
100
|
+
registerChangeVotingSettings(server);
|
|
101
|
+
registerManageValidators(server);
|
|
102
|
+
registerAddExpert(server);
|
|
103
|
+
registerRemoveExpert(server);
|
|
104
|
+
registerWithdrawTreasury(server);
|
|
105
|
+
registerDelegateToExpert(server);
|
|
106
|
+
registerRevokeFromExpert(server);
|
|
107
|
+
}
|
|
108
|
+
// ---------- 1. change_voting_settings ----------
|
|
109
|
+
function registerChangeVotingSettings(server) {
|
|
110
|
+
server.registerTool("dexe_proposal_build_change_voting_settings", {
|
|
111
|
+
title: "Wrapper: change voting settings (edit existing or add new)",
|
|
112
|
+
description: "Builds a 'Change Voting Settings' external proposal. Targets GovSettings.editSettings(ids, params) when `settingsIds` are supplied (edit existing), or GovSettings.addSettings(params) when empty (create new settings slot). Resolve GovSettings address via dexe_dao_info first.",
|
|
113
|
+
inputSchema: {
|
|
114
|
+
govSettings: z.string().describe("GovSettings contract address (from dexe_dao_info.helpers.settings)"),
|
|
115
|
+
settings: z.array(ProposalSettingsSchema).min(1),
|
|
116
|
+
settingsIds: z
|
|
117
|
+
.array(z.string())
|
|
118
|
+
.default([])
|
|
119
|
+
.describe("Settings ids to edit (parallel to `settings`). Empty => addSettings"),
|
|
120
|
+
proposalName: z.string().default("Change Voting Settings"),
|
|
121
|
+
proposalDescription: z.string().default(""),
|
|
122
|
+
},
|
|
123
|
+
outputSchema: payloadOutputSchema(),
|
|
124
|
+
}, async ({ govSettings, settings, settingsIds = [], proposalName = "Change Voting Settings", proposalDescription = "", }) => {
|
|
125
|
+
if (!isAddress(govSettings))
|
|
126
|
+
return errorResult(`Invalid govSettings: ${govSettings}`);
|
|
127
|
+
if (settingsIds.length > 0 && settingsIds.length !== settings.length) {
|
|
128
|
+
return errorResult("settingsIds length must match settings length when editing");
|
|
129
|
+
}
|
|
130
|
+
try {
|
|
131
|
+
const iface = new Interface(GOV_SETTINGS_ABI);
|
|
132
|
+
const tuples = settings.map(toSettingsTuple);
|
|
133
|
+
let data;
|
|
134
|
+
let method;
|
|
135
|
+
if (settingsIds.length > 0) {
|
|
136
|
+
method = "editSettings";
|
|
137
|
+
data = iface.encodeFunctionData(method, [settingsIds.map((n) => BigInt(n)), tuples]);
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
method = "addSettings";
|
|
141
|
+
data = iface.encodeFunctionData(method, [tuples]);
|
|
142
|
+
}
|
|
143
|
+
const action = { executor: govSettings, value: "0", data };
|
|
144
|
+
const metadata = {
|
|
145
|
+
proposalName,
|
|
146
|
+
proposalDescription,
|
|
147
|
+
category: "Change Voting Settings",
|
|
148
|
+
isMeta: false,
|
|
149
|
+
changes: { mode: method, settingsIds, settings },
|
|
150
|
+
};
|
|
151
|
+
return wrapperResult({
|
|
152
|
+
metadata,
|
|
153
|
+
actions: [action],
|
|
154
|
+
title: `Change Voting Settings (${method}, ${settings.length} entries)`,
|
|
155
|
+
detail: `Target: GovSettings(${govSettings}).${method}\nCalldata: ${data.slice(0, 66)}…`,
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
catch (err) {
|
|
159
|
+
return errorResult(err instanceof Error ? err.message : String(err));
|
|
160
|
+
}
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
// ---------- 2. manage_validators ----------
|
|
164
|
+
function registerManageValidators(server) {
|
|
165
|
+
server.registerTool("dexe_proposal_build_manage_validators", {
|
|
166
|
+
title: "Wrapper: change validator balances (add/remove validators via balance tweak)",
|
|
167
|
+
description: "Builds a 'Manage Validators' external proposal calling GovValidators.changeBalances(balances, users). Set a user's balance to 0 to remove, >0 to add or update. Resolve GovValidators address via dexe_dao_info first.",
|
|
168
|
+
inputSchema: {
|
|
169
|
+
govValidators: z.string(),
|
|
170
|
+
changes: z
|
|
171
|
+
.array(z.object({
|
|
172
|
+
user: z.string(),
|
|
173
|
+
balance: z.string().describe("Wei; 0 to remove"),
|
|
174
|
+
}))
|
|
175
|
+
.min(1),
|
|
176
|
+
proposalName: z.string().default("Manage Validators"),
|
|
177
|
+
proposalDescription: z.string().default(""),
|
|
178
|
+
},
|
|
179
|
+
outputSchema: payloadOutputSchema(),
|
|
180
|
+
}, async ({ govValidators, changes, proposalName = "Manage Validators", proposalDescription = "", }) => {
|
|
181
|
+
if (!isAddress(govValidators))
|
|
182
|
+
return errorResult(`Invalid govValidators: ${govValidators}`);
|
|
183
|
+
for (const c of changes) {
|
|
184
|
+
if (!isAddress(c.user))
|
|
185
|
+
return errorResult(`Invalid validator user: ${c.user}`);
|
|
186
|
+
}
|
|
187
|
+
try {
|
|
188
|
+
const iface = new Interface(GOV_VALIDATORS_ABI);
|
|
189
|
+
const balances = changes.map((c) => BigInt(c.balance));
|
|
190
|
+
const users = changes.map((c) => c.user);
|
|
191
|
+
const data = iface.encodeFunctionData("changeBalances", [balances, users]);
|
|
192
|
+
const action = { executor: govValidators, value: "0", data };
|
|
193
|
+
const metadata = {
|
|
194
|
+
proposalName,
|
|
195
|
+
proposalDescription,
|
|
196
|
+
category: "Manage Validators",
|
|
197
|
+
isMeta: false,
|
|
198
|
+
changes: { validators: changes },
|
|
199
|
+
};
|
|
200
|
+
return wrapperResult({
|
|
201
|
+
metadata,
|
|
202
|
+
actions: [action],
|
|
203
|
+
title: `Manage Validators (${changes.length} changes)`,
|
|
204
|
+
detail: `Target: GovValidators(${govValidators}).changeBalances\nCalldata: ${data.slice(0, 66)}…`,
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
catch (err) {
|
|
208
|
+
return errorResult(err instanceof Error ? err.message : String(err));
|
|
209
|
+
}
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
// ---------- 3. add_expert (local or global) ----------
|
|
213
|
+
function registerAddExpert(server) {
|
|
214
|
+
server.registerTool("dexe_proposal_build_add_expert", {
|
|
215
|
+
title: "Wrapper: mint a local or global Expert NFT to a nominated user",
|
|
216
|
+
description: "Builds an 'Add Expert' external proposal. `scope='local'` mints on the DAO's ExpertNft (dao_info.nftContracts.expertNft). `scope='global'` mints on DeXeExpertNft (dao_info.nftContracts.dexeExpertNft). URI is passed through (default empty).",
|
|
217
|
+
inputSchema: {
|
|
218
|
+
expertNftContract: z
|
|
219
|
+
.string()
|
|
220
|
+
.describe("ExpertNft contract address. Local: govPool.getNftContracts().expertNft; Global: dexeExpertNft"),
|
|
221
|
+
scope: z.enum(["local", "global"]),
|
|
222
|
+
nominatedUser: z.string(),
|
|
223
|
+
uri: z.string().default(""),
|
|
224
|
+
proposalName: z.string().default("Add Expert"),
|
|
225
|
+
proposalDescription: z.string().default(""),
|
|
226
|
+
},
|
|
227
|
+
outputSchema: payloadOutputSchema(),
|
|
228
|
+
}, async ({ expertNftContract, scope, nominatedUser, uri = "", proposalName = "Add Expert", proposalDescription = "", }) => {
|
|
229
|
+
if (!isAddress(expertNftContract))
|
|
230
|
+
return errorResult(`Invalid expertNftContract: ${expertNftContract}`);
|
|
231
|
+
if (!isAddress(nominatedUser))
|
|
232
|
+
return errorResult(`Invalid nominatedUser: ${nominatedUser}`);
|
|
233
|
+
try {
|
|
234
|
+
const iface = new Interface(EXPERT_NFT_ABI);
|
|
235
|
+
const data = iface.encodeFunctionData("mint", [nominatedUser, uri]);
|
|
236
|
+
const action = { executor: expertNftContract, value: "0", data };
|
|
237
|
+
const metadata = {
|
|
238
|
+
proposalName,
|
|
239
|
+
proposalDescription,
|
|
240
|
+
category: scope === "global" ? "Add Global Expert" : "Add Local Expert",
|
|
241
|
+
isMeta: false,
|
|
242
|
+
changes: { scope, nominatedUser, expertNftContract, uri },
|
|
243
|
+
};
|
|
244
|
+
return wrapperResult({
|
|
245
|
+
metadata,
|
|
246
|
+
actions: [action],
|
|
247
|
+
title: `Add ${scope} Expert → ${nominatedUser}`,
|
|
248
|
+
detail: `Target: ExpertNft(${expertNftContract}).mint\nCalldata: ${data.slice(0, 66)}…`,
|
|
249
|
+
});
|
|
250
|
+
}
|
|
251
|
+
catch (err) {
|
|
252
|
+
return errorResult(err instanceof Error ? err.message : String(err));
|
|
253
|
+
}
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
// ---------- 4. remove_expert (local or global) ----------
|
|
257
|
+
function registerRemoveExpert(server) {
|
|
258
|
+
server.registerTool("dexe_proposal_build_remove_expert", {
|
|
259
|
+
title: "Wrapper: burn an Expert NFT (revoke expert role)",
|
|
260
|
+
description: "Builds a 'Remove Expert' external proposal calling ExpertNft.burn(from). `scope='local'` targets the DAO's ExpertNft; 'global' targets DeXeExpertNft.",
|
|
261
|
+
inputSchema: {
|
|
262
|
+
expertNftContract: z.string(),
|
|
263
|
+
scope: z.enum(["local", "global"]),
|
|
264
|
+
nominatedUser: z.string(),
|
|
265
|
+
proposalName: z.string().default("Remove Expert"),
|
|
266
|
+
proposalDescription: z.string().default(""),
|
|
267
|
+
},
|
|
268
|
+
outputSchema: payloadOutputSchema(),
|
|
269
|
+
}, async ({ expertNftContract, scope, nominatedUser, proposalName = "Remove Expert", proposalDescription = "", }) => {
|
|
270
|
+
if (!isAddress(expertNftContract))
|
|
271
|
+
return errorResult(`Invalid expertNftContract: ${expertNftContract}`);
|
|
272
|
+
if (!isAddress(nominatedUser))
|
|
273
|
+
return errorResult(`Invalid nominatedUser: ${nominatedUser}`);
|
|
274
|
+
try {
|
|
275
|
+
const iface = new Interface(EXPERT_NFT_ABI);
|
|
276
|
+
const data = iface.encodeFunctionData("burn", [nominatedUser]);
|
|
277
|
+
const action = { executor: expertNftContract, value: "0", data };
|
|
278
|
+
const metadata = {
|
|
279
|
+
proposalName,
|
|
280
|
+
proposalDescription,
|
|
281
|
+
category: scope === "global" ? "Remove Global Expert" : "Remove Local Expert",
|
|
282
|
+
isMeta: false,
|
|
283
|
+
changes: { scope, nominatedUser, expertNftContract },
|
|
284
|
+
};
|
|
285
|
+
return wrapperResult({
|
|
286
|
+
metadata,
|
|
287
|
+
actions: [action],
|
|
288
|
+
title: `Remove ${scope} Expert → ${nominatedUser}`,
|
|
289
|
+
detail: `Target: ExpertNft(${expertNftContract}).burn\nCalldata: ${data.slice(0, 66)}…`,
|
|
290
|
+
});
|
|
291
|
+
}
|
|
292
|
+
catch (err) {
|
|
293
|
+
return errorResult(err instanceof Error ? err.message : String(err));
|
|
294
|
+
}
|
|
295
|
+
});
|
|
296
|
+
}
|
|
297
|
+
// ---------- 5. withdraw_treasury ----------
|
|
298
|
+
function registerWithdrawTreasury(server) {
|
|
299
|
+
server.registerTool("dexe_proposal_build_withdraw_treasury", {
|
|
300
|
+
title: "Wrapper: withdraw native/tokens/NFTs from the DAO treasury",
|
|
301
|
+
description: "Builds a 'Withdraw from Treasury' external proposal calling GovPool.withdraw(receiver, amount, nftIds). The executor IS the GovPool itself — treasury is held there.",
|
|
302
|
+
inputSchema: {
|
|
303
|
+
govPool: z.string(),
|
|
304
|
+
receiver: z.string(),
|
|
305
|
+
amount: z.string().describe("Token amount in wei (0 for NFT-only)"),
|
|
306
|
+
nftIds: z.array(z.string()).default([]),
|
|
307
|
+
proposalName: z.string().default("Withdraw from Treasury"),
|
|
308
|
+
proposalDescription: z.string().default(""),
|
|
309
|
+
},
|
|
310
|
+
outputSchema: payloadOutputSchema(),
|
|
311
|
+
}, async ({ govPool, receiver, amount, nftIds = [], proposalName = "Withdraw from Treasury", proposalDescription = "", }) => {
|
|
312
|
+
if (!isAddress(govPool))
|
|
313
|
+
return errorResult(`Invalid govPool: ${govPool}`);
|
|
314
|
+
if (!isAddress(receiver))
|
|
315
|
+
return errorResult(`Invalid receiver: ${receiver}`);
|
|
316
|
+
try {
|
|
317
|
+
const iface = new Interface(GOV_POOL_TREASURY_ABI);
|
|
318
|
+
const data = iface.encodeFunctionData("withdraw", [
|
|
319
|
+
receiver,
|
|
320
|
+
BigInt(amount),
|
|
321
|
+
nftIds.map((n) => BigInt(n)),
|
|
322
|
+
]);
|
|
323
|
+
const action = { executor: govPool, value: "0", data };
|
|
324
|
+
const metadata = {
|
|
325
|
+
proposalName,
|
|
326
|
+
proposalDescription,
|
|
327
|
+
category: "Withdraw from Treasury",
|
|
328
|
+
isMeta: false,
|
|
329
|
+
changes: { receiver, amount, nftIds },
|
|
330
|
+
};
|
|
331
|
+
return wrapperResult({
|
|
332
|
+
metadata,
|
|
333
|
+
actions: [action],
|
|
334
|
+
title: `Withdraw Treasury → ${receiver} (${amount} wei, ${nftIds.length} NFTs)`,
|
|
335
|
+
detail: `Target: GovPool(${govPool}).withdraw\nCalldata: ${data.slice(0, 66)}…`,
|
|
336
|
+
});
|
|
337
|
+
}
|
|
338
|
+
catch (err) {
|
|
339
|
+
return errorResult(err instanceof Error ? err.message : String(err));
|
|
340
|
+
}
|
|
341
|
+
});
|
|
342
|
+
}
|
|
343
|
+
// ---------- 6. delegate_to_expert ----------
|
|
344
|
+
function registerDelegateToExpert(server) {
|
|
345
|
+
server.registerTool("dexe_proposal_build_delegate_to_expert", {
|
|
346
|
+
title: "Wrapper: delegate DAO treasury stake (tokens + NFTs) to an expert",
|
|
347
|
+
description: "Builds a 'Delegate to Expert' external proposal calling GovPool.delegateTreasury(delegatee, amount, nftIds).",
|
|
348
|
+
inputSchema: {
|
|
349
|
+
govPool: z.string(),
|
|
350
|
+
expert: z.string(),
|
|
351
|
+
amount: z.string().describe("Token amount in wei"),
|
|
352
|
+
nftIds: z.array(z.string()).default([]),
|
|
353
|
+
value: z.string().default("0").describe("Native coin value for payable path"),
|
|
354
|
+
proposalName: z.string().default("Delegate to Expert"),
|
|
355
|
+
proposalDescription: z.string().default(""),
|
|
356
|
+
},
|
|
357
|
+
outputSchema: payloadOutputSchema(),
|
|
358
|
+
}, async ({ govPool, expert, amount, nftIds = [], value = "0", proposalName = "Delegate to Expert", proposalDescription = "", }) => {
|
|
359
|
+
if (!isAddress(govPool))
|
|
360
|
+
return errorResult(`Invalid govPool: ${govPool}`);
|
|
361
|
+
if (!isAddress(expert))
|
|
362
|
+
return errorResult(`Invalid expert: ${expert}`);
|
|
363
|
+
try {
|
|
364
|
+
const iface = new Interface(GOV_POOL_TREASURY_ABI);
|
|
365
|
+
const data = iface.encodeFunctionData("delegateTreasury", [
|
|
366
|
+
expert,
|
|
367
|
+
BigInt(amount),
|
|
368
|
+
nftIds.map((n) => BigInt(n)),
|
|
369
|
+
]);
|
|
370
|
+
const action = { executor: govPool, value, data };
|
|
371
|
+
const metadata = {
|
|
372
|
+
proposalName,
|
|
373
|
+
proposalDescription,
|
|
374
|
+
category: "Delegate Tokens to Expert",
|
|
375
|
+
isMeta: false,
|
|
376
|
+
changes: { expert, amount, nftIds, value },
|
|
377
|
+
};
|
|
378
|
+
return wrapperResult({
|
|
379
|
+
metadata,
|
|
380
|
+
actions: [action],
|
|
381
|
+
title: `Delegate → ${expert} (${amount} wei, ${nftIds.length} NFTs)`,
|
|
382
|
+
detail: `Target: GovPool(${govPool}).delegateTreasury\nCalldata: ${data.slice(0, 66)}…`,
|
|
383
|
+
});
|
|
384
|
+
}
|
|
385
|
+
catch (err) {
|
|
386
|
+
return errorResult(err instanceof Error ? err.message : String(err));
|
|
387
|
+
}
|
|
388
|
+
});
|
|
389
|
+
}
|
|
390
|
+
// ---------- 7. revoke_from_expert ----------
|
|
391
|
+
function registerRevokeFromExpert(server) {
|
|
392
|
+
server.registerTool("dexe_proposal_build_revoke_from_expert", {
|
|
393
|
+
title: "Wrapper: revoke delegation from an expert (undelegateTreasury)",
|
|
394
|
+
description: "Builds a 'Revoke from Expert' external proposal calling GovPool.undelegateTreasury(delegatee, amount, nftIds).",
|
|
395
|
+
inputSchema: {
|
|
396
|
+
govPool: z.string(),
|
|
397
|
+
expert: z.string(),
|
|
398
|
+
amount: z.string(),
|
|
399
|
+
nftIds: z.array(z.string()).default([]),
|
|
400
|
+
proposalName: z.string().default("Revoke from Expert"),
|
|
401
|
+
proposalDescription: z.string().default(""),
|
|
402
|
+
},
|
|
403
|
+
outputSchema: payloadOutputSchema(),
|
|
404
|
+
}, async ({ govPool, expert, amount, nftIds = [], proposalName = "Revoke from Expert", proposalDescription = "", }) => {
|
|
405
|
+
if (!isAddress(govPool))
|
|
406
|
+
return errorResult(`Invalid govPool: ${govPool}`);
|
|
407
|
+
if (!isAddress(expert))
|
|
408
|
+
return errorResult(`Invalid expert: ${expert}`);
|
|
409
|
+
try {
|
|
410
|
+
const iface = new Interface(GOV_POOL_TREASURY_ABI);
|
|
411
|
+
const data = iface.encodeFunctionData("undelegateTreasury", [
|
|
412
|
+
expert,
|
|
413
|
+
BigInt(amount),
|
|
414
|
+
nftIds.map((n) => BigInt(n)),
|
|
415
|
+
]);
|
|
416
|
+
const action = { executor: govPool, value: "0", data };
|
|
417
|
+
const metadata = {
|
|
418
|
+
proposalName,
|
|
419
|
+
proposalDescription,
|
|
420
|
+
category: "Revoke Tokens from Expert",
|
|
421
|
+
isMeta: false,
|
|
422
|
+
changes: { expert, amount, nftIds },
|
|
423
|
+
};
|
|
424
|
+
return wrapperResult({
|
|
425
|
+
metadata,
|
|
426
|
+
actions: [action],
|
|
427
|
+
title: `Revoke ← ${expert} (${amount} wei, ${nftIds.length} NFTs)`,
|
|
428
|
+
detail: `Target: GovPool(${govPool}).undelegateTreasury\nCalldata: ${data.slice(0, 66)}…`,
|
|
429
|
+
});
|
|
430
|
+
}
|
|
431
|
+
catch (err) {
|
|
432
|
+
return errorResult(err instanceof Error ? err.message : String(err));
|
|
433
|
+
}
|
|
434
|
+
});
|
|
435
|
+
}
|
|
436
|
+
//# sourceMappingURL=proposalBuildMore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proposalBuildMore.js","sourceRoot":"","sources":["../../src/tools/proposalBuildMore.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import type { ToolContext } from "./context.js";
|
|
3
|
+
export declare function registerProposalBuildOffchainTools(server: McpServer, _ctx: ToolContext): void;
|
|
4
|
+
//# sourceMappingURL=proposalBuildOffchain.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proposalBuildOffchain.d.ts","sourceRoot":"","sources":["../../src/tools/proposalBuildOffchain.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AA6EhD,wBAAgB,kCAAkC,CAChD,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,WAAW,GAChB,IAAI,CASN"}
|