dexe-mcp 0.17.0 → 0.20.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/CHANGELOG.md +110 -0
- package/README.md +126 -228
- package/dexe-plugin/skills/dexe-create-dao/SKILL.md +92 -66
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +1 -0
- package/dist/config.js.map +1 -1
- package/dist/diag/checks.js +11 -0
- package/dist/diag/checks.js.map +1 -1
- package/dist/lib/avatarImage.d.ts +22 -0
- package/dist/lib/avatarImage.d.ts.map +1 -0
- package/dist/lib/avatarImage.js +199 -0
- package/dist/lib/avatarImage.js.map +1 -0
- package/dist/lib/imageSniff.d.ts +44 -0
- package/dist/lib/imageSniff.d.ts.map +1 -0
- package/dist/lib/imageSniff.js +145 -0
- package/dist/lib/imageSniff.js.map +1 -0
- package/dist/lib/preflight.d.ts +67 -4
- package/dist/lib/preflight.d.ts.map +1 -1
- package/dist/lib/preflight.js +155 -14
- package/dist/lib/preflight.js.map +1 -1
- package/dist/lib/qr.d.ts +43 -0
- package/dist/lib/qr.d.ts.map +1 -0
- package/dist/lib/qr.js +95 -0
- package/dist/lib/qr.js.map +1 -0
- package/dist/lib/walletconnect.d.ts +15 -0
- package/dist/lib/walletconnect.d.ts.map +1 -1
- package/dist/lib/walletconnect.js +26 -0
- package/dist/lib/walletconnect.js.map +1 -1
- package/dist/tools/daoCreate.d.ts +40 -1
- package/dist/tools/daoCreate.d.ts.map +1 -1
- package/dist/tools/daoCreate.js +272 -28
- package/dist/tools/daoCreate.js.map +1 -1
- package/dist/tools/daoDeploy.d.ts.map +1 -1
- package/dist/tools/daoDeploy.js +41 -3
- package/dist/tools/daoDeploy.js.map +1 -1
- package/dist/tools/flow.d.ts +16 -1
- package/dist/tools/flow.d.ts.map +1 -1
- package/dist/tools/flow.js +65 -11
- package/dist/tools/flow.js.map +1 -1
- package/dist/tools/getConfig.d.ts.map +1 -1
- package/dist/tools/getConfig.js +7 -0
- package/dist/tools/getConfig.js.map +1 -1
- package/dist/tools/index.js +3 -3
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/ipfs.d.ts +1 -0
- package/dist/tools/ipfs.d.ts.map +1 -1
- package/dist/tools/ipfs.js +49 -42
- package/dist/tools/ipfs.js.map +1 -1
- package/dist/tools/otc.d.ts +2 -1
- package/dist/tools/otc.d.ts.map +1 -1
- package/dist/tools/otc.js +6 -4
- package/dist/tools/otc.js.map +1 -1
- package/dist/tools/txSend.d.ts.map +1 -1
- package/dist/tools/txSend.js +36 -14
- package/dist/tools/txSend.js.map +1 -1
- package/dist/tools/walletconnectStatus.d.ts.map +1 -1
- package/dist/tools/walletconnectStatus.js +13 -29
- package/dist/tools/walletconnectStatus.js.map +1 -1
- package/package.json +4 -1
package/dist/tools/txSend.js
CHANGED
|
@@ -3,6 +3,10 @@ import { JsonRpcProvider } from "ethers";
|
|
|
3
3
|
import { resolveChain } from "../config.js";
|
|
4
4
|
import { runBroadcastGuards, BroadcastGuardError } from "../lib/broadcastGuards.js";
|
|
5
5
|
import { ENABLE_WRITES_HINT } from "./flow.js";
|
|
6
|
+
import { wcPairingContent } from "../lib/qr.js";
|
|
7
|
+
/** Flagged on every hot-key broadcast — a plaintext key on disk is not safe. */
|
|
8
|
+
const HOT_KEY_SAFETY = "⚠️ NOT SAFE — signed with a hot key (DEXE_PRIVATE_KEY) in plaintext on disk. " +
|
|
9
|
+
"Prefer WalletConnect: run dexe_wc_connect and the phone signs, so the key never touches this machine.";
|
|
6
10
|
/**
|
|
7
11
|
* Classify a transaction whose receipt is absent: a tx that exists on-chain but
|
|
8
12
|
* isn't mined yet is "pending"; a hash the node has never seen is "not_found"
|
|
@@ -50,19 +54,33 @@ export function registerTxTools(server, config, signer, wc) {
|
|
|
50
54
|
// (B6/B7/B9/B10) still run, keyed on the connected account as `from`.
|
|
51
55
|
if (wcActive()) {
|
|
52
56
|
if (!wc.isConnected()) {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
57
|
+
// Auto-pair: instead of erroring, start the session and print the QR
|
|
58
|
+
// right here so the user just scans, approves, and re-runs.
|
|
59
|
+
try {
|
|
60
|
+
const pr = await wc.ensurePairing(chain.chainId);
|
|
61
|
+
if (!pr.connected && pr.uri) {
|
|
62
|
+
return {
|
|
63
|
+
content: await wcPairingContent(pr.uri, pr.chainId, {
|
|
64
|
+
next: "Scan the QR, approve the session on your phone, then re-run dexe_tx_send to broadcast.",
|
|
65
|
+
}),
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
catch (e) {
|
|
70
|
+
return {
|
|
71
|
+
content: [
|
|
72
|
+
{
|
|
73
|
+
type: "text",
|
|
74
|
+
text: JSON.stringify({
|
|
75
|
+
status: "rejected",
|
|
76
|
+
reason: `WalletConnect pairing failed: ${e instanceof Error ? e.message : String(e)}`,
|
|
77
|
+
chainId: chain.chainId,
|
|
78
|
+
}, null, 2),
|
|
79
|
+
},
|
|
80
|
+
],
|
|
81
|
+
isError: true,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
66
84
|
}
|
|
67
85
|
const from = wc.account();
|
|
68
86
|
try {
|
|
@@ -183,7 +201,9 @@ export function registerTxTools(server, config, signer, wc) {
|
|
|
183
201
|
txHash: tx.hash,
|
|
184
202
|
from: wallet.address,
|
|
185
203
|
chainId: chain.chainId,
|
|
204
|
+
signer: "eoa",
|
|
186
205
|
status: "submitted",
|
|
206
|
+
safety: HOT_KEY_SAFETY,
|
|
187
207
|
}, null, 2),
|
|
188
208
|
},
|
|
189
209
|
],
|
|
@@ -195,7 +215,7 @@ export function registerTxTools(server, config, signer, wc) {
|
|
|
195
215
|
content: [
|
|
196
216
|
{
|
|
197
217
|
type: "text",
|
|
198
|
-
text: JSON.stringify({ txHash: tx.hash, chainId: chain.chainId, status: "unknown" }, null, 2),
|
|
218
|
+
text: JSON.stringify({ txHash: tx.hash, chainId: chain.chainId, signer: "eoa", status: "unknown", safety: HOT_KEY_SAFETY }, null, 2),
|
|
199
219
|
},
|
|
200
220
|
],
|
|
201
221
|
};
|
|
@@ -204,9 +224,11 @@ export function registerTxTools(server, config, signer, wc) {
|
|
|
204
224
|
txHash: receipt.hash,
|
|
205
225
|
from: wallet.address,
|
|
206
226
|
chainId: chain.chainId,
|
|
227
|
+
signer: "eoa",
|
|
207
228
|
blockNumber: receipt.blockNumber,
|
|
208
229
|
gasUsed: receipt.gasUsed.toString(),
|
|
209
230
|
status: receipt.status,
|
|
231
|
+
safety: HOT_KEY_SAFETY,
|
|
210
232
|
};
|
|
211
233
|
return {
|
|
212
234
|
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
|
package/dist/tools/txSend.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"txSend.js","sourceRoot":"","sources":["../../src/tools/txSend.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAIzC,OAAO,EAAE,YAAY,EAAmB,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACpF,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"txSend.js","sourceRoot":"","sources":["../../src/tools/txSend.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"walletconnectStatus.d.ts","sourceRoot":"","sources":["../../src/tools/walletconnectStatus.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"walletconnectStatus.d.ts","sourceRoot":"","sources":["../../src/tools/walletconnectStatus.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAGpE;;;;;;;;;;;GAWG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,aAAa,EACrB,EAAE,EAAE,oBAAoB,GACvB,IAAI,CAkIN"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
+
import { wcPairingContent } from "../lib/qr.js";
|
|
2
3
|
/**
|
|
3
4
|
* C12 — WalletConnect tools.
|
|
4
5
|
*
|
|
@@ -48,10 +49,12 @@ export function registerWalletConnectTools(server, config, signer, wc) {
|
|
|
48
49
|
};
|
|
49
50
|
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
50
51
|
});
|
|
51
|
-
server.tool("dexe_wc_connect", "Start a WalletConnect session
|
|
52
|
-
"
|
|
53
|
-
"
|
|
54
|
-
"
|
|
52
|
+
server.tool("dexe_wc_connect", "Start a WalletConnect session and render a scannable QR (ASCII + PNG) for the phone wallet " +
|
|
53
|
+
"(MetaMask / Trust / Rainbow). This is the RECOMMENDED signer — the phone signs and " +
|
|
54
|
+
"broadcasts, so no private key ever touches this machine. The session is approved on the " +
|
|
55
|
+
"phone; this tool returns as soon as the QR is ready — poll dexe_wc_status until `connected` " +
|
|
56
|
+
"is true. Works even if DEXE_PRIVATE_KEY is set (a hot key just keeps signing precedence " +
|
|
57
|
+
"until you unset it).", {
|
|
55
58
|
chainId: z
|
|
56
59
|
.number()
|
|
57
60
|
.int()
|
|
@@ -73,34 +76,15 @@ export function registerWalletConnectTools(server, config, signer, wc) {
|
|
|
73
76
|
isError: true,
|
|
74
77
|
};
|
|
75
78
|
}
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
text: JSON.stringify({
|
|
82
|
-
status: "error",
|
|
83
|
-
reason: "DEXE_PRIVATE_KEY is set, so WalletConnect is inactive (hot key takes precedence). Unset the key to use WalletConnect mode.",
|
|
84
|
-
}, null, 2),
|
|
85
|
-
},
|
|
86
|
-
],
|
|
87
|
-
isError: true,
|
|
88
|
-
};
|
|
89
|
-
}
|
|
79
|
+
// A hot key no longer blocks pairing — but be honest that it still signs
|
|
80
|
+
// until removed (we keep key-wins precedence to avoid a breaking change).
|
|
81
|
+
const keyPrecedenceNote = signer.hasSigner()
|
|
82
|
+
? "⚠️ DEXE_PRIVATE_KEY is set and still takes signing precedence — dexe_tx_send will use the hot key, not this session, until you unset the key. Unset it to make WalletConnect the active signer."
|
|
83
|
+
: undefined;
|
|
90
84
|
try {
|
|
91
85
|
const { uri, chainId: resolved } = await wc.connect(chainId);
|
|
92
86
|
return {
|
|
93
|
-
content:
|
|
94
|
-
{
|
|
95
|
-
type: "text",
|
|
96
|
-
text: JSON.stringify({
|
|
97
|
-
status: "pairing",
|
|
98
|
-
uri,
|
|
99
|
-
chainId: resolved,
|
|
100
|
-
next: "Render `uri` as a QR (e.g. https://api.qrserver.com/v1/create-qr-code/?data=<uri>) or paste into the wallet, approve, then poll dexe_wc_status.",
|
|
101
|
-
}, null, 2),
|
|
102
|
-
},
|
|
103
|
-
],
|
|
87
|
+
content: await wcPairingContent(uri, resolved, keyPrecedenceNote ? { keyPrecedenceNote } : undefined),
|
|
104
88
|
};
|
|
105
89
|
}
|
|
106
90
|
catch (e) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"walletconnectStatus.js","sourceRoot":"","sources":["../../src/tools/walletconnectStatus.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"walletconnectStatus.js","sourceRoot":"","sources":["../../src/tools/walletconnectStatus.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dexe-mcp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.20.0",
|
|
4
4
|
"description": "MCP server for the DeXe Protocol — full DAO operations coverage: deploy DAOs, build every proposal type, IPFS metadata, stake/vote/delegate/execute/claim calldata. Plus dev tooling (build/test/introspect/decode).",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -67,8 +67,10 @@
|
|
|
67
67
|
"@walletconnect/universal-provider": "^2.17.0",
|
|
68
68
|
"ethers": "^6.13.0",
|
|
69
69
|
"execa": "^9.5.0",
|
|
70
|
+
"jpeg-js": "^0.4.4",
|
|
70
71
|
"multiformats": "^13.4.2",
|
|
71
72
|
"p-limit": "^6.2.0",
|
|
73
|
+
"qrcode": "^1.5.4",
|
|
72
74
|
"remark-gfm": "^4.0.1",
|
|
73
75
|
"remark-parse": "^11.0.0",
|
|
74
76
|
"remark-slate-transformer": "^0.9.0",
|
|
@@ -85,6 +87,7 @@
|
|
|
85
87
|
},
|
|
86
88
|
"devDependencies": {
|
|
87
89
|
"@types/node": "^22.10.0",
|
|
90
|
+
"@types/qrcode": "^1.5.5",
|
|
88
91
|
"tsx": "^4.19.0",
|
|
89
92
|
"typescript": "^5.7.0",
|
|
90
93
|
"vitest": "^4.1.0"
|