dexe-mcp 0.2.0 → 0.4.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.
Files changed (80) hide show
  1. package/CHANGELOG.md +192 -85
  2. package/README.md +103 -80
  3. package/dist/config.d.ts +2 -0
  4. package/dist/config.d.ts.map +1 -1
  5. package/dist/config.js +10 -0
  6. package/dist/config.js.map +1 -1
  7. package/dist/index.js +16 -0
  8. package/dist/index.js.map +1 -1
  9. package/dist/lib/addresses.js +1 -1
  10. package/dist/lib/ipfs.d.ts.map +1 -1
  11. package/dist/lib/ipfs.js +2 -1
  12. package/dist/lib/ipfs.js.map +1 -1
  13. package/dist/lib/markdownToSlate.d.ts +39 -0
  14. package/dist/lib/markdownToSlate.d.ts.map +1 -0
  15. package/dist/lib/markdownToSlate.js +203 -0
  16. package/dist/lib/markdownToSlate.js.map +1 -0
  17. package/dist/lib/merkleTree.d.ts +38 -0
  18. package/dist/lib/merkleTree.d.ts.map +1 -0
  19. package/dist/lib/merkleTree.js +83 -0
  20. package/dist/lib/merkleTree.js.map +1 -0
  21. package/dist/lib/signer.d.ts +12 -0
  22. package/dist/lib/signer.d.ts.map +1 -0
  23. package/dist/lib/signer.js +31 -0
  24. package/dist/lib/signer.js.map +1 -0
  25. package/dist/lib/subgraph.d.ts +2 -2
  26. package/dist/lib/subgraph.d.ts.map +1 -1
  27. package/dist/lib/subgraph.js +14 -9
  28. package/dist/lib/subgraph.js.map +1 -1
  29. package/dist/tools/daoDeploy.d.ts.map +1 -1
  30. package/dist/tools/daoDeploy.js +313 -63
  31. package/dist/tools/daoDeploy.js.map +1 -1
  32. package/dist/tools/flow.d.ts +62 -0
  33. package/dist/tools/flow.d.ts.map +1 -0
  34. package/dist/tools/flow.js +479 -0
  35. package/dist/tools/flow.js.map +1 -0
  36. package/dist/tools/index.d.ts.map +1 -1
  37. package/dist/tools/index.js +12 -0
  38. package/dist/tools/index.js.map +1 -1
  39. package/dist/tools/ipfs.d.ts.map +1 -1
  40. package/dist/tools/ipfs.js +94 -28
  41. package/dist/tools/ipfs.js.map +1 -1
  42. package/dist/tools/merkle.d.ts +4 -0
  43. package/dist/tools/merkle.d.ts.map +1 -0
  44. package/dist/tools/merkle.js +174 -0
  45. package/dist/tools/merkle.js.map +1 -0
  46. package/dist/tools/otc.d.ts +5 -0
  47. package/dist/tools/otc.d.ts.map +1 -0
  48. package/dist/tools/otc.js +481 -0
  49. package/dist/tools/otc.js.map +1 -0
  50. package/dist/tools/proposal.js +28 -10
  51. package/dist/tools/proposal.js.map +1 -1
  52. package/dist/tools/proposalBuild.d.ts.map +1 -1
  53. package/dist/tools/proposalBuild.js +28 -13
  54. package/dist/tools/proposalBuild.js.map +1 -1
  55. package/dist/tools/proposalBuildComplex.d.ts +222 -0
  56. package/dist/tools/proposalBuildComplex.d.ts.map +1 -1
  57. package/dist/tools/proposalBuildComplex.js +511 -138
  58. package/dist/tools/proposalBuildComplex.js.map +1 -1
  59. package/dist/tools/proposalBuildInternal.js +24 -11
  60. package/dist/tools/proposalBuildInternal.js.map +1 -1
  61. package/dist/tools/proposalBuildMore.js +42 -21
  62. package/dist/tools/proposalBuildMore.js.map +1 -1
  63. package/dist/tools/proposalBuildOffchain.d.ts.map +1 -1
  64. package/dist/tools/proposalBuildOffchain.js +8 -5
  65. package/dist/tools/proposalBuildOffchain.js.map +1 -1
  66. package/dist/tools/read.d.ts.map +1 -1
  67. package/dist/tools/read.js +227 -0
  68. package/dist/tools/read.js.map +1 -1
  69. package/dist/tools/subgraph.d.ts +4 -0
  70. package/dist/tools/subgraph.d.ts.map +1 -0
  71. package/dist/tools/subgraph.js +404 -0
  72. package/dist/tools/subgraph.js.map +1 -0
  73. package/dist/tools/txSend.d.ts +5 -0
  74. package/dist/tools/txSend.d.ts.map +1 -0
  75. package/dist/tools/txSend.js +87 -0
  76. package/dist/tools/txSend.js.map +1 -0
  77. package/dist/tools/voteBuild.d.ts.map +1 -1
  78. package/dist/tools/voteBuild.js +420 -0
  79. package/dist/tools/voteBuild.js.map +1 -1
  80. package/package.json +83 -75
@@ -0,0 +1,404 @@
1
+ import { z } from "zod";
2
+ import { isAddress } from "ethers";
3
+ import { gqlRequest } from "../lib/subgraph.js";
4
+ /**
5
+ * Subgraph-backed read tools. Each tool queries one of the three DeXe
6
+ * subgraphs (pools, validators, interactions) and returns structured data
7
+ * for AI agent decision-making.
8
+ *
9
+ * Env vars required:
10
+ * DEXE_SUBGRAPH_POOLS_URL — The Graph endpoint for DAO pools
11
+ * DEXE_SUBGRAPH_VALIDATORS_URL — The Graph endpoint for validators
12
+ * DEXE_SUBGRAPH_INTERACTIONS_URL — The Graph endpoint for interactions
13
+ */
14
+ function errorResult(message) {
15
+ return { content: [{ type: "text", text: message }], isError: true };
16
+ }
17
+ function requireUrl(ctx, key) {
18
+ const url = ctx.config[key];
19
+ if (!url)
20
+ return null;
21
+ return url;
22
+ }
23
+ const ENV_HINT = {
24
+ subgraphPoolsUrl: "DEXE_SUBGRAPH_POOLS_URL",
25
+ subgraphValidatorsUrl: "DEXE_SUBGRAPH_VALIDATORS_URL",
26
+ subgraphInteractionsUrl: "DEXE_SUBGRAPH_INTERACTIONS_URL",
27
+ };
28
+ // ---------- queries ----------
29
+ const DAO_LIST_QUERY = /* GraphQL */ `
30
+ query getGovPoolsList($offset: Int!, $limit: Int!, $queryString: String!) {
31
+ daoPools(
32
+ skip: $offset
33
+ first: $limit
34
+ where: { name_contains_nocase: $queryString }
35
+ orderBy: votersCount
36
+ orderDirection: desc
37
+ ) {
38
+ id
39
+ name
40
+ erc20Token
41
+ erc721Token
42
+ votersCount
43
+ proposalCount
44
+ totalCurrentTokenDelegated
45
+ totalCurrentTokenDelegatees
46
+ creationTime
47
+ creationBlock
48
+ }
49
+ }
50
+ `;
51
+ const DAO_MEMBERS_QUERY = /* GraphQL */ `
52
+ query getVotersInPool($poolId: String!, $offset: Int!, $limit: Int!) {
53
+ voterInPools(skip: $offset, first: $limit, where: { pool: $poolId }) {
54
+ id
55
+ APR
56
+ currentDelegateesCount
57
+ currentDelegatorsCount
58
+ engagedProposalsCount
59
+ joinedTimestamp
60
+ receivedDelegation
61
+ receivedNFTDelegation
62
+ receivedTreasuryDelegation
63
+ totalClaimedUSD
64
+ totalLockedUSD
65
+ totalPersonalVotingRewardUSD
66
+ totalMicropoolVotingRewardUSD
67
+ totalTreasuryVotingRewardUSD
68
+ expertNft {
69
+ id
70
+ tokenId
71
+ }
72
+ voter {
73
+ id
74
+ totalProposalsCreated
75
+ totalVotedProposals
76
+ totalVotes
77
+ currentVotesReceived
78
+ currentVotesDelegated
79
+ totalClaimedUSD
80
+ }
81
+ }
82
+ }
83
+ `;
84
+ const DELEGATION_MAP_QUERY = /* GraphQL */ `
85
+ query getDefaultDelegationsFromPool($offset: Int!, $limit: Int!, $delegatorIn: [String!]) {
86
+ voterInPoolPairs(
87
+ skip: $offset
88
+ first: $limit
89
+ where: { delegator_: { voter_in: $delegatorIn } }
90
+ ) {
91
+ id
92
+ creationTimestamp
93
+ delegatedAmount
94
+ delegatedNfts
95
+ delegatedUSD
96
+ delegatedVotes
97
+ delegatee {
98
+ expertNft {
99
+ id
100
+ }
101
+ voter {
102
+ id
103
+ }
104
+ totalClaimedUSD
105
+ }
106
+ delegator {
107
+ voter {
108
+ id
109
+ }
110
+ pool {
111
+ id
112
+ erc20Token
113
+ }
114
+ }
115
+ }
116
+ }
117
+ `;
118
+ const DELEGATION_INCOMING_QUERY = /* GraphQL */ `
119
+ query getPoolIncomingDelegations($offset: Int!, $limit: Int!, $voterIn: [String!]) {
120
+ voterInPoolPairs(
121
+ skip: $offset
122
+ first: $limit
123
+ where: { delegatee_: { voter_in: $voterIn } }
124
+ ) {
125
+ id
126
+ delegatedAmount
127
+ delegatedNfts
128
+ delegatedUSD
129
+ delegatedVotes
130
+ delegator {
131
+ voter {
132
+ id
133
+ }
134
+ }
135
+ delegatee {
136
+ voter {
137
+ id
138
+ }
139
+ }
140
+ }
141
+ }
142
+ `;
143
+ const VALIDATORS_QUERY = /* GraphQL */ `
144
+ query getDaoPoolValidators($offset: Int!, $limit: Int!, $address: String!) {
145
+ validatorInPools(
146
+ skip: $offset
147
+ first: $limit
148
+ orderBy: balance
149
+ orderDirection: desc
150
+ where: { pool: $address }
151
+ ) {
152
+ id
153
+ balance
154
+ validatorAddress
155
+ }
156
+ }
157
+ `;
158
+ const USER_ACTIVITY_QUERY = /* GraphQL */ `
159
+ query getUserTransactions($offset: Int!, $limit: Int!, $address: Bytes!) {
160
+ transactions(
161
+ skip: $offset
162
+ first: $limit
163
+ where: { user: $address }
164
+ orderBy: timestamp
165
+ orderDirection: desc
166
+ ) {
167
+ id
168
+ type
169
+ user
170
+ timestamp
171
+ interactionsCount
172
+ }
173
+ }
174
+ `;
175
+ const EXPERTS_QUERY = /* GraphQL */ `
176
+ query getLocalExpertsByPool($offset: Int!, $limit: Int!, $daoAddress: Bytes!) {
177
+ voterInPools(
178
+ skip: $offset
179
+ first: $limit
180
+ where: { pool_: { id: $daoAddress }, expertNft_: { id_not: null } }
181
+ ) {
182
+ id
183
+ receivedTreasuryDelegation
184
+ receivedDelegation
185
+ voter {
186
+ id
187
+ }
188
+ expertNft {
189
+ id
190
+ tokenId
191
+ }
192
+ pool {
193
+ id
194
+ }
195
+ }
196
+ }
197
+ `;
198
+ // ---------- register ----------
199
+ export function registerSubgraphTools(server, ctx) {
200
+ registerDaoList(server, ctx);
201
+ registerDaoMembers(server, ctx);
202
+ registerDelegationMap(server, ctx);
203
+ registerValidatorList(server, ctx);
204
+ registerUserActivity(server, ctx);
205
+ registerDaoExperts(server, ctx);
206
+ }
207
+ // ---------- tools ----------
208
+ function registerDaoList(server, ctx) {
209
+ server.registerTool("dexe_read_dao_list", {
210
+ title: "Discover and list DAOs (subgraph)",
211
+ description: "Paginated DAO discovery via the pools subgraph. Search by name (case-insensitive), ordered by voter count descending. Requires DEXE_SUBGRAPH_POOLS_URL.",
212
+ inputSchema: {
213
+ query: z.string().default("").describe("Name search (case-insensitive, empty = all)"),
214
+ offset: z.number().int().min(0).default(0),
215
+ limit: z.number().int().min(1).max(100).default(20),
216
+ },
217
+ }, async ({ query = "", offset = 0, limit = 20 }) => {
218
+ const url = requireUrl(ctx, "subgraphPoolsUrl");
219
+ if (!url)
220
+ return errorResult(`${ENV_HINT.subgraphPoolsUrl} is not set.`);
221
+ try {
222
+ const data = await gqlRequest(url, DAO_LIST_QUERY, {
223
+ offset,
224
+ limit,
225
+ queryString: query,
226
+ });
227
+ const pools = data.daoPools;
228
+ const text = `Found ${pools.length} DAO(s) (offset=${offset}, limit=${limit}, query="${query}")`;
229
+ return {
230
+ content: [{ type: "text", text }],
231
+ structuredContent: { query, offset, limit, daoPools: pools },
232
+ };
233
+ }
234
+ catch (err) {
235
+ return errorResult(`read_dao_list failed: ${err instanceof Error ? err.message : String(err)}`);
236
+ }
237
+ });
238
+ }
239
+ function registerDaoMembers(server, ctx) {
240
+ server.registerTool("dexe_read_dao_members", {
241
+ title: "List DAO members with voting power (subgraph)",
242
+ description: "Paginated member list for a DAO — includes voting power, delegation counts, rewards, expert status. Requires DEXE_SUBGRAPH_POOLS_URL.",
243
+ inputSchema: {
244
+ govPool: z.string().describe("GovPool address (lowercased for subgraph)"),
245
+ offset: z.number().int().min(0).default(0),
246
+ limit: z.number().int().min(1).max(100).default(20),
247
+ },
248
+ }, async ({ govPool, offset = 0, limit = 20 }) => {
249
+ if (!isAddress(govPool))
250
+ return errorResult(`Invalid govPool: ${govPool}`);
251
+ const url = requireUrl(ctx, "subgraphPoolsUrl");
252
+ if (!url)
253
+ return errorResult(`${ENV_HINT.subgraphPoolsUrl} is not set.`);
254
+ try {
255
+ const data = await gqlRequest(url, DAO_MEMBERS_QUERY, {
256
+ poolId: govPool.toLowerCase(),
257
+ offset,
258
+ limit,
259
+ });
260
+ const members = data.voterInPools;
261
+ const text = `${members.length} member(s) in ${govPool} (offset=${offset}, limit=${limit})`;
262
+ return {
263
+ content: [{ type: "text", text }],
264
+ structuredContent: { govPool, offset, limit, members },
265
+ };
266
+ }
267
+ catch (err) {
268
+ return errorResult(`read_dao_members failed: ${err instanceof Error ? err.message : String(err)}`);
269
+ }
270
+ });
271
+ }
272
+ function registerDelegationMap(server, ctx) {
273
+ server.registerTool("dexe_read_delegation_map", {
274
+ title: "Delegation relationships — outgoing or incoming (subgraph)",
275
+ description: "Query delegation pairs from the pools subgraph. Use direction='outgoing' to see who a user delegated to, or 'incoming' to see who delegated to them. Requires DEXE_SUBGRAPH_POOLS_URL.",
276
+ inputSchema: {
277
+ addresses: z.array(z.string()).min(1).describe("VoterInPool IDs (format: govPool-voterAddress, lowercased)"),
278
+ direction: z.enum(["outgoing", "incoming"]).default("outgoing").describe("outgoing = who I delegated to; incoming = who delegated to me"),
279
+ offset: z.number().int().min(0).default(0),
280
+ limit: z.number().int().min(1).max(100).default(50),
281
+ },
282
+ }, async ({ addresses, direction = "outgoing", offset = 0, limit = 50 }) => {
283
+ const url = requireUrl(ctx, "subgraphPoolsUrl");
284
+ if (!url)
285
+ return errorResult(`${ENV_HINT.subgraphPoolsUrl} is not set.`);
286
+ try {
287
+ const lc = addresses.map((a) => a.toLowerCase());
288
+ const query = direction === "outgoing" ? DELEGATION_MAP_QUERY : DELEGATION_INCOMING_QUERY;
289
+ const variables = direction === "outgoing"
290
+ ? { offset, limit, delegatorIn: lc }
291
+ : { offset, limit, voterIn: lc };
292
+ const data = await gqlRequest(url, query, variables);
293
+ const pairs = data.voterInPoolPairs;
294
+ const text = `${pairs.length} ${direction} delegation(s) for ${addresses.length} address(es)`;
295
+ return {
296
+ content: [{ type: "text", text }],
297
+ structuredContent: { addresses, direction, offset, limit, delegations: pairs },
298
+ };
299
+ }
300
+ catch (err) {
301
+ return errorResult(`read_delegation_map failed: ${err instanceof Error ? err.message : String(err)}`);
302
+ }
303
+ });
304
+ }
305
+ function registerValidatorList(server, ctx) {
306
+ server.registerTool("dexe_read_validator_list", {
307
+ title: "List validators in a DAO (subgraph)",
308
+ description: "Paginated validator list ordered by balance descending. Requires DEXE_SUBGRAPH_VALIDATORS_URL.",
309
+ inputSchema: {
310
+ govPool: z.string().describe("GovPool address"),
311
+ offset: z.number().int().min(0).default(0),
312
+ limit: z.number().int().min(1).max(100).default(50),
313
+ },
314
+ }, async ({ govPool, offset = 0, limit = 50 }) => {
315
+ if (!isAddress(govPool))
316
+ return errorResult(`Invalid govPool: ${govPool}`);
317
+ const url = requireUrl(ctx, "subgraphValidatorsUrl");
318
+ if (!url)
319
+ return errorResult(`${ENV_HINT.subgraphValidatorsUrl} is not set.`);
320
+ try {
321
+ const data = await gqlRequest(url, VALIDATORS_QUERY, {
322
+ offset,
323
+ limit,
324
+ address: govPool.toLowerCase(),
325
+ });
326
+ const validators = data.validatorInPools;
327
+ const text = `${validators.length} validator(s) in ${govPool} (offset=${offset}, limit=${limit})`;
328
+ return {
329
+ content: [{ type: "text", text }],
330
+ structuredContent: { govPool, offset, limit, validators },
331
+ };
332
+ }
333
+ catch (err) {
334
+ return errorResult(`read_validator_list failed: ${err instanceof Error ? err.message : String(err)}`);
335
+ }
336
+ });
337
+ }
338
+ function registerUserActivity(server, ctx) {
339
+ server.registerTool("dexe_read_user_activity", {
340
+ title: "User transaction history across DAOs (subgraph)",
341
+ description: "Paginated transaction history for a user — proposals created, votes cast, delegations, claims. Ordered by timestamp descending. Requires DEXE_SUBGRAPH_INTERACTIONS_URL.",
342
+ inputSchema: {
343
+ user: z.string().describe("User wallet address"),
344
+ offset: z.number().int().min(0).default(0),
345
+ limit: z.number().int().min(1).max(100).default(50),
346
+ },
347
+ }, async ({ user, offset = 0, limit = 50 }) => {
348
+ if (!isAddress(user))
349
+ return errorResult(`Invalid user: ${user}`);
350
+ const url = requireUrl(ctx, "subgraphInteractionsUrl");
351
+ if (!url)
352
+ return errorResult(`${ENV_HINT.subgraphInteractionsUrl} is not set.`);
353
+ try {
354
+ const data = await gqlRequest(url, USER_ACTIVITY_QUERY, {
355
+ offset,
356
+ limit,
357
+ address: user.toLowerCase(),
358
+ });
359
+ const txs = data.transactions;
360
+ const text = `${txs.length} transaction(s) for ${user} (offset=${offset}, limit=${limit})`;
361
+ return {
362
+ content: [{ type: "text", text }],
363
+ structuredContent: { user, offset, limit, transactions: txs },
364
+ };
365
+ }
366
+ catch (err) {
367
+ return errorResult(`read_user_activity failed: ${err instanceof Error ? err.message : String(err)}`);
368
+ }
369
+ });
370
+ }
371
+ function registerDaoExperts(server, ctx) {
372
+ server.registerTool("dexe_read_dao_experts", {
373
+ title: "List local experts in a DAO (subgraph)",
374
+ description: "Paginated list of local experts (holders of DAO-specific expert NFTs) with their delegation info. Requires DEXE_SUBGRAPH_POOLS_URL.",
375
+ inputSchema: {
376
+ govPool: z.string().describe("GovPool address"),
377
+ offset: z.number().int().min(0).default(0),
378
+ limit: z.number().int().min(1).max(100).default(50),
379
+ },
380
+ }, async ({ govPool, offset = 0, limit = 50 }) => {
381
+ if (!isAddress(govPool))
382
+ return errorResult(`Invalid govPool: ${govPool}`);
383
+ const url = requireUrl(ctx, "subgraphPoolsUrl");
384
+ if (!url)
385
+ return errorResult(`${ENV_HINT.subgraphPoolsUrl} is not set.`);
386
+ try {
387
+ const data = await gqlRequest(url, EXPERTS_QUERY, {
388
+ offset,
389
+ limit,
390
+ daoAddress: govPool.toLowerCase(),
391
+ });
392
+ const experts = data.voterInPools;
393
+ const text = `${experts.length} expert(s) in ${govPool} (offset=${offset}, limit=${limit})`;
394
+ return {
395
+ content: [{ type: "text", text }],
396
+ structuredContent: { govPool, offset, limit, experts },
397
+ };
398
+ }
399
+ catch (err) {
400
+ return errorResult(`read_dao_experts failed: ${err instanceof Error ? err.message : String(err)}`);
401
+ }
402
+ });
403
+ }
404
+ //# sourceMappingURL=subgraph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subgraph.js","sourceRoot":"","sources":["../../src/tools/subgraph.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import type { SignerManager } from "../lib/signer.js";
3
+ import type { DexeConfig } from "../config.js";
4
+ export declare function registerTxTools(server: McpServer, config: DexeConfig, signer: SignerManager): void;
5
+ //# sourceMappingURL=txSend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"txSend.d.ts","sourceRoot":"","sources":["../../src/tools/txSend.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,wBAAgB,eAAe,CAC7B,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,aAAa,GACpB,IAAI,CA2GN"}
@@ -0,0 +1,87 @@
1
+ import { z } from "zod";
2
+ export function registerTxTools(server, config, signer) {
3
+ server.tool("dexe_tx_send", "Sign and broadcast a transaction using the configured DEXE_PRIVATE_KEY. " +
4
+ "Pass the TxPayload fields returned by any dexe_*_build_* tool. " +
5
+ "Waits for on-chain confirmation and returns the receipt.", {
6
+ to: z.string().describe("Destination contract address"),
7
+ data: z.string().describe("ABI-encoded calldata (0x-prefixed hex)"),
8
+ value: z
9
+ .string()
10
+ .default("0")
11
+ .describe("Wei value as decimal string"),
12
+ gasLimit: z
13
+ .string()
14
+ .optional()
15
+ .describe("Optional gas limit override (decimal string)"),
16
+ waitConfirmations: z
17
+ .number()
18
+ .int()
19
+ .min(0)
20
+ .max(12)
21
+ .default(1)
22
+ .describe("Confirmations to wait (0 = fire-and-forget)"),
23
+ }, async ({ to, data, value, gasLimit, waitConfirmations }) => {
24
+ const wallet = signer.requireSigner();
25
+ const tx = await wallet.sendTransaction({
26
+ to,
27
+ data,
28
+ value: BigInt(value),
29
+ chainId: BigInt(config.chainId),
30
+ ...(gasLimit ? { gasLimit: BigInt(gasLimit) } : {}),
31
+ });
32
+ if (waitConfirmations === 0) {
33
+ return {
34
+ content: [
35
+ {
36
+ type: "text",
37
+ text: JSON.stringify({ txHash: tx.hash, from: wallet.address, status: "submitted" }, null, 2),
38
+ },
39
+ ],
40
+ };
41
+ }
42
+ const receipt = await tx.wait(waitConfirmations);
43
+ if (!receipt) {
44
+ return {
45
+ content: [
46
+ {
47
+ type: "text",
48
+ text: JSON.stringify({ txHash: tx.hash, status: "unknown" }, null, 2),
49
+ },
50
+ ],
51
+ };
52
+ }
53
+ const result = {
54
+ txHash: receipt.hash,
55
+ from: wallet.address,
56
+ blockNumber: receipt.blockNumber,
57
+ gasUsed: receipt.gasUsed.toString(),
58
+ status: receipt.status,
59
+ };
60
+ return {
61
+ content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
62
+ };
63
+ });
64
+ server.tool("dexe_tx_status", "Check the receipt/status of a previously submitted transaction hash.", {
65
+ txHash: z.string().describe("Transaction hash to look up"),
66
+ }, async ({ txHash }) => {
67
+ const wallet = signer.requireSigner();
68
+ const provider = wallet.provider;
69
+ const receipt = await provider.getTransactionReceipt(txHash);
70
+ if (!receipt) {
71
+ return {
72
+ content: [{ type: "text", text: JSON.stringify({ status: "pending" }) }],
73
+ };
74
+ }
75
+ const result = {
76
+ txHash: receipt.hash,
77
+ status: receipt.status,
78
+ blockNumber: receipt.blockNumber,
79
+ gasUsed: receipt.gasUsed.toString(),
80
+ logsCount: receipt.logs.length,
81
+ };
82
+ return {
83
+ content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
84
+ };
85
+ });
86
+ }
87
+ //# sourceMappingURL=txSend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"txSend.js","sourceRoot":"","sources":["../../src/tools/txSend.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,MAAM,UAAU,eAAe,CAC7B,MAAiB,EACjB,MAAkB,EAClB,MAAqB;IAErB,MAAM,CAAC,IAAI,CACT,cAAc,EACd,0EAA0E;QACxE,iEAAiE;QACjE,0DAA0D,EAC5D;QACE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;QACvD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;QACnE,KAAK,EAAE,CAAC;aACL,MAAM,EAAE;aACR,OAAO,CAAC,GAAG,CAAC;aACZ,QAAQ,CAAC,6BAA6B,CAAC;QAC1C,QAAQ,EAAE,CAAC;aACR,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,8CAA8C,CAAC;QAC3D,iBAAiB,EAAE,CAAC;aACjB,MAAM,EAAE;aACR,GAAG,EAAE;aACL,GAAG,CAAC,CAAC,CAAC;aACN,GAAG,CAAC,EAAE,CAAC;aACP,OAAO,CAAC,CAAC,CAAC;aACV,QAAQ,CAAC,6CAA6C,CAAC;KAC3D,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,iBAAiB,EAAE,EAAE,EAAE;QACzD,MAAM,MAAM,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC;QAEtC,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC;YACtC,EAAE;YACF,IAAI;YACJ,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;YACpB,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;YAC/B,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACpD,CAAC,CAAC;QAEH,IAAI,iBAAiB,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,EAC9D,IAAI,EACJ,CAAC,CACF;qBACF;iBACF;aACF,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACjD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;qBACtE;iBACF;aACF,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG;YACb,MAAM,EAAE,OAAO,CAAC,IAAI;YACpB,IAAI,EAAE,MAAM,CAAC,OAAO;YACpB,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE;YACnC,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC;QAEF,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;SAC5E,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,gBAAgB,EAChB,sEAAsE,EACtE;QACE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;KAC3D,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;QACnB,MAAM,MAAM,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC;QACtC,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAS,CAAC;QAElC,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAC7D,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;aAClF,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG;YACb,MAAM,EAAE,OAAO,CAAC,IAAI;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE;YACnC,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM;SAC/B,CAAC;QAEF,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;SAC5E,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"voteBuild.d.ts","sourceRoot":"","sources":["../../src/tools/voteBuild.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AA2EhD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,GAAG,IAAI,CAehF"}
1
+ {"version":3,"file":"voteBuild.d.ts","sourceRoot":"","sources":["../../src/tools/voteBuild.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AA2GhD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,GAAG,IAAI,CA+BhF"}