dexe-mcp 0.16.0 → 0.19.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 +108 -0
- package/README.md +1 -1
- package/dexe-plugin/skills/dexe-create-dao/SKILL.md +90 -66
- package/dexe-plugin/skills/dexe-setup/SKILL.md +117 -73
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +7 -4
- package/dist/cli/init.js.map +1 -1
- package/dist/config.d.ts +32 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +45 -7
- package/dist/config.js.map +1 -1
- package/dist/diag/checks.d.ts.map +1 -1
- package/dist/diag/checks.js +53 -4
- package/dist/diag/checks.js.map +1 -1
- package/dist/env/schema.d.ts +7 -0
- package/dist/env/schema.d.ts.map +1 -1
- package/dist/env/schema.js +7 -0
- package/dist/env/schema.js.map +1 -1
- package/dist/lib/ipfs.d.ts +9 -7
- package/dist/lib/ipfs.d.ts.map +1 -1
- package/dist/lib/ipfs.js +36 -8
- package/dist/lib/ipfs.js.map +1 -1
- 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/requireEnv.d.ts +7 -0
- package/dist/lib/requireEnv.d.ts.map +1 -1
- package/dist/lib/requireEnv.js +13 -0
- package/dist/lib/requireEnv.js.map +1 -1
- 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/rpc.d.ts.map +1 -1
- package/dist/rpc.js +47 -1
- package/dist/rpc.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 +264 -29
- 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 +67 -12
- 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.map +1 -1
- package/dist/tools/ipfs.js +34 -14
- package/dist/tools/ipfs.js.map +1 -1
- package/dist/tools/operationalContext.d.ts.map +1 -1
- package/dist/tools/operationalContext.js +16 -1
- package/dist/tools/operationalContext.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/proposalBuild.d.ts.map +1 -1
- package/dist/tools/proposalBuild.js +3 -4
- package/dist/tools/proposalBuild.js.map +1 -1
- package/dist/tools/proposalBuildOffchain.d.ts.map +1 -1
- package/dist/tools/proposalBuildOffchain.js +3 -6
- package/dist/tools/proposalBuildOffchain.js.map +1 -1
- package/dist/tools/read.d.ts.map +1 -1
- package/dist/tools/read.js +7 -9
- package/dist/tools/read.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 +3 -1
package/dist/lib/requireEnv.js
CHANGED
|
@@ -45,4 +45,17 @@ export function hintFor(keys) {
|
|
|
45
45
|
"Run dexe_doctor to verify the new values were picked up.");
|
|
46
46
|
return parts.join("\n");
|
|
47
47
|
}
|
|
48
|
+
/**
|
|
49
|
+
* Consistent, actionable message for the one env var that reads can't default
|
|
50
|
+
* around: the Pinata JWT needed to pin metadata to IPFS. Used by every upload
|
|
51
|
+
* site (dao create, proposal create, direct IPFS uploads) so the guidance —
|
|
52
|
+
* and the /dexe-setup pointer — is identical everywhere.
|
|
53
|
+
*/
|
|
54
|
+
export function pinataUploadHint(context) {
|
|
55
|
+
return (`DEXE_PINATA_JWT is required ${context}. Reads work without it, but pinning ` +
|
|
56
|
+
`metadata to IPFS needs a Pinata JWT.\n` +
|
|
57
|
+
hintFor(["DEXE_PINATA_JWT"]) +
|
|
58
|
+
"\nGuided setup: run /dexe-setup. Get a free JWT at https://app.pinata.cloud " +
|
|
59
|
+
"(API Keys → New Key, grant pinJSONToIPFS + pinFileToIPFS).");
|
|
60
|
+
}
|
|
48
61
|
//# sourceMappingURL=requireEnv.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requireEnv.js","sourceRoot":"","sources":["../../src/lib/requireEnv.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAe,MAAM,kBAAkB,CAAC;AAa7D;;;;GAIG;AACH,MAAM,UAAU,UAAU,CACxB,IAAkB;IAElB,MAAM,OAAO,GAAQ,EAAE,CAAC;IACxB,MAAM,GAAG,GAAG,EAAuB,CAAC;IACpC,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;QACjC,IAAI,CAAC,CAAC,EAAE,CAAC;YACP,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACb,CAAC;IACH,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO;YACL,KAAK,EAAE,yBAAyB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACpD,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC;SAC9B,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC;AACrB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,OAAO,CAAC,IAAuB;IAC7C,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,MAAM,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAI,CAAC,IAAI;YAAE,SAAS;QACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,MAAM;YACxC,CAAC,CAAC,cAAc,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;YAC/C,CAAC,CAAC,EAAE,CAAC;QACP,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,IAAI,CAAC,GAAG,GAAG,QAAQ,EAAE,CAAC,CAAC;IAC1D,CAAC;IACD,KAAK,CAAC,IAAI,CACR,6EAA6E;QAC3E,0DAA0D,CAC7D,CAAC;IACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
|
|
1
|
+
{"version":3,"file":"requireEnv.js","sourceRoot":"","sources":["../../src/lib/requireEnv.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAe,MAAM,kBAAkB,CAAC;AAa7D;;;;GAIG;AACH,MAAM,UAAU,UAAU,CACxB,IAAkB;IAElB,MAAM,OAAO,GAAQ,EAAE,CAAC;IACxB,MAAM,GAAG,GAAG,EAAuB,CAAC;IACpC,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;QACjC,IAAI,CAAC,CAAC,EAAE,CAAC;YACP,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACb,CAAC;IACH,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO;YACL,KAAK,EAAE,yBAAyB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACpD,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC;SAC9B,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC;AACrB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,OAAO,CAAC,IAAuB;IAC7C,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,MAAM,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAI,CAAC,IAAI;YAAE,SAAS;QACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,MAAM;YACxC,CAAC,CAAC,cAAc,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;YAC/C,CAAC,CAAC,EAAE,CAAC;QACP,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,IAAI,CAAC,GAAG,GAAG,QAAQ,EAAE,CAAC,CAAC;IAC1D,CAAC;IACD,KAAK,CAAC,IAAI,CACR,6EAA6E;QAC3E,0DAA0D,CAC7D,CAAC;IACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC9C,OAAO,CACL,+BAA+B,OAAO,uCAAuC;QAC7E,wCAAwC;QACxC,OAAO,CAAC,CAAC,iBAAiB,CAAC,CAAC;QAC5B,8EAA8E;QAC9E,4DAA4D,CAC7D,CAAC;AACJ,CAAC"}
|
|
@@ -24,6 +24,8 @@ export declare class WalletConnectManager {
|
|
|
24
24
|
private connecting;
|
|
25
25
|
private connectedChainId?;
|
|
26
26
|
private lastError?;
|
|
27
|
+
/** Most recent pairing URI, kept so a concurrent auto-pairing can reuse it. */
|
|
28
|
+
private lastUri?;
|
|
27
29
|
constructor(config: DexeConfig);
|
|
28
30
|
/** WalletConnect is usable only when a project id was configured. */
|
|
29
31
|
isConfigured(): boolean;
|
|
@@ -50,6 +52,19 @@ export declare class WalletConnectManager {
|
|
|
50
52
|
uri: string;
|
|
51
53
|
chainId: number;
|
|
52
54
|
}>;
|
|
55
|
+
/**
|
|
56
|
+
* Ergonomic wrapper for auto-pairing from a write path (dexe_tx_send, the
|
|
57
|
+
* composite flows): return the connected state if a session already exists,
|
|
58
|
+
* reuse an in-flight pairing URI if one is mid-handshake, else start a fresh
|
|
59
|
+
* pairing. Unlike `connect()` this never throws for the already-connected /
|
|
60
|
+
* already-connecting cases — the caller just wants "a URI or the account".
|
|
61
|
+
*/
|
|
62
|
+
ensurePairing(chainId?: number): Promise<{
|
|
63
|
+
connected: boolean;
|
|
64
|
+
account: string | null;
|
|
65
|
+
uri?: string;
|
|
66
|
+
chainId: number;
|
|
67
|
+
}>;
|
|
53
68
|
/** Tear down the active session. No-op (returns false) when not connected. */
|
|
54
69
|
disconnect(): Promise<boolean>;
|
|
55
70
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"walletconnect.d.ts","sourceRoot":"","sources":["../../src/lib/walletconnect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAgC7D,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,qCAAqC;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAa;IACpC,OAAO,CAAC,QAAQ,CAAC,CAAwB;IACzC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,gBAAgB,CAAC,CAAS;IAClC,OAAO,CAAC,SAAS,CAAC,CAAS;
|
|
1
|
+
{"version":3,"file":"walletconnect.d.ts","sourceRoot":"","sources":["../../src/lib/walletconnect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAgC7D,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,qCAAqC;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAa;IACpC,OAAO,CAAC,QAAQ,CAAC,CAAwB;IACzC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,gBAAgB,CAAC,CAAS;IAClC,OAAO,CAAC,SAAS,CAAC,CAAS;IAC3B,+EAA+E;IAC/E,OAAO,CAAC,OAAO,CAAC,CAAS;gBAEb,MAAM,EAAE,UAAU;IAI9B,qEAAqE;IACrE,YAAY,IAAI,OAAO;IAIvB,oEAAoE;IACpE,WAAW,IAAI,OAAO;IAItB;;;OAGG;IACH,OAAO,IAAI,MAAM,GAAG,IAAI;IAOxB,MAAM,IAAI,QAAQ;IAclB;;;OAGG;YACW,WAAW;IAkDzB;;;;;OAKG;IACG,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAiD1E;;;;;;OAMG;IACG,aAAa,CACjB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAczF,8EAA8E;IACxE,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IASpC;;;;OAIG;IACG,eAAe,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;CA2CrD"}
|
|
@@ -5,6 +5,8 @@ export class WalletConnectManager {
|
|
|
5
5
|
connecting = false;
|
|
6
6
|
connectedChainId;
|
|
7
7
|
lastError;
|
|
8
|
+
/** Most recent pairing URI, kept so a concurrent auto-pairing can reuse it. */
|
|
9
|
+
lastUri;
|
|
8
10
|
constructor(config) {
|
|
9
11
|
this.config = config;
|
|
10
12
|
}
|
|
@@ -82,6 +84,7 @@ export class WalletConnectManager {
|
|
|
82
84
|
// Clear local session state when the phone ends the session out-of-band.
|
|
83
85
|
provider.on("session_delete", () => {
|
|
84
86
|
this.connectedChainId = undefined;
|
|
87
|
+
this.lastUri = undefined;
|
|
85
88
|
});
|
|
86
89
|
this.provider = provider;
|
|
87
90
|
return provider;
|
|
@@ -106,6 +109,7 @@ export class WalletConnectManager {
|
|
|
106
109
|
const uri = arg?.uri ?? arg;
|
|
107
110
|
if (typeof uri === "string" && !uriEmitted) {
|
|
108
111
|
uriEmitted = true;
|
|
112
|
+
this.lastUri = uri;
|
|
109
113
|
resolveUri({ uri, chainId: chain.chainId });
|
|
110
114
|
}
|
|
111
115
|
};
|
|
@@ -124,6 +128,7 @@ export class WalletConnectManager {
|
|
|
124
128
|
// Session approved by the phone wallet.
|
|
125
129
|
this.connecting = false;
|
|
126
130
|
this.connectedChainId = chain.chainId;
|
|
131
|
+
this.lastUri = undefined;
|
|
127
132
|
})
|
|
128
133
|
.catch((e) => {
|
|
129
134
|
this.connecting = false;
|
|
@@ -135,6 +140,26 @@ export class WalletConnectManager {
|
|
|
135
140
|
});
|
|
136
141
|
});
|
|
137
142
|
}
|
|
143
|
+
/**
|
|
144
|
+
* Ergonomic wrapper for auto-pairing from a write path (dexe_tx_send, the
|
|
145
|
+
* composite flows): return the connected state if a session already exists,
|
|
146
|
+
* reuse an in-flight pairing URI if one is mid-handshake, else start a fresh
|
|
147
|
+
* pairing. Unlike `connect()` this never throws for the already-connected /
|
|
148
|
+
* already-connecting cases — the caller just wants "a URI or the account".
|
|
149
|
+
*/
|
|
150
|
+
async ensurePairing(chainId) {
|
|
151
|
+
const chain = resolveChain(this.config, chainId);
|
|
152
|
+
if (this.isConnected()) {
|
|
153
|
+
return { connected: true, account: this.account(), chainId: this.connectedChainId ?? chain.chainId };
|
|
154
|
+
}
|
|
155
|
+
// A pairing is already in flight and we captured its URI — reuse it rather
|
|
156
|
+
// than opening a second relay session.
|
|
157
|
+
if (this.connecting && this.lastUri) {
|
|
158
|
+
return { connected: false, account: null, uri: this.lastUri, chainId: chain.chainId };
|
|
159
|
+
}
|
|
160
|
+
const { uri, chainId: resolved } = await this.connect(chainId);
|
|
161
|
+
return { connected: false, account: null, uri, chainId: resolved };
|
|
162
|
+
}
|
|
138
163
|
/** Tear down the active session. No-op (returns false) when not connected. */
|
|
139
164
|
async disconnect() {
|
|
140
165
|
if (!this.provider?.session)
|
|
@@ -142,6 +167,7 @@ export class WalletConnectManager {
|
|
|
142
167
|
await this.provider.disconnect();
|
|
143
168
|
this.connectedChainId = undefined;
|
|
144
169
|
this.connecting = false;
|
|
170
|
+
this.lastUri = undefined;
|
|
145
171
|
return true;
|
|
146
172
|
}
|
|
147
173
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"walletconnect.js","sourceRoot":"","sources":["../../src/lib/walletconnect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAmB,MAAM,cAAc,CAAC;AAqD7D,MAAM,OAAO,oBAAoB;IACd,MAAM,CAAa;IAC5B,QAAQ,CAAyB;IACjC,UAAU,GAAG,KAAK,CAAC;IACnB,gBAAgB,CAAU;IAC1B,SAAS,CAAU;
|
|
1
|
+
{"version":3,"file":"walletconnect.js","sourceRoot":"","sources":["../../src/lib/walletconnect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAmB,MAAM,cAAc,CAAC;AAqD7D,MAAM,OAAO,oBAAoB;IACd,MAAM,CAAa;IAC5B,QAAQ,CAAyB;IACjC,UAAU,GAAG,KAAK,CAAC;IACnB,gBAAgB,CAAU;IAC1B,SAAS,CAAU;IAC3B,+EAA+E;IACvE,OAAO,CAAU;IAEzB,YAAY,MAAkB;QAC5B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,qEAAqE;IACrE,YAAY;QACV,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC;IAC9C,CAAC;IAED,oEAAoE;IACpE,WAAW;QACT,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;IAClC,CAAC;IAED;;;OAGG;IACH,OAAO;QACL,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC;QACtE,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACpD,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACtC,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC;IACzC,CAAC;IAED,MAAM;QACJ,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;QACvC,OAAO;YACL,SAAS,EAAE,CAAC,CAAC,OAAO;YACpB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;YACvB,OAAO,EAAE,IAAI,CAAC,gBAAgB,IAAI,IAAI;YACtC,KAAK,EAAE,OAAO,EAAE,KAAK,IAAI,IAAI;YAC7B,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,IAAI,IAAI;YAC/C,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,IAAI;YAC/B,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI;SAClC,CAAC;IACJ,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,WAAW;QACvB,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC,QAAQ,CAAC;QACxC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,sBAAsB,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CACb,uHAAuH,CACxH,CAAC;QACJ,CAAC;QAED,IAAI,GAA4B,CAAC;QACjC,IAAI,CAAC;YACH,GAAG,GAAG,CAAC,MAAM,MAAM,CAAC,mCAAmC,CAAC,CAAU,CAAC;QACrE,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CACb,mKAAmK,CACpK,CAAC;QACJ,CAAC;QACD,+EAA+E;QAC/E,4EAA4E;QAC5E,8FAA8F;QAC9F,MAAM,GAAG,GAAG,GAAG,CAAC,OAA8C,CAAC;QAC/D,MAAM,SAAS,GACZ,GAAG,CAAC,iBAAwC;YAC5C,GAAG,EAAE,iBAAwC;YAC7C,GAAG,EAAE,OAA8B;YACnC,GAA0B,CAAC;QAC9B,IAAI,CAAC,SAAS,IAAI,OAAO,SAAS,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YACvD,MAAM,IAAI,KAAK,CACb,8GAA8G,CAC/G,CAAC;QACJ,CAAC;QACD,MAAM,iBAAiB,GAAG,SAAS,CAAC;QACpC,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC;YAC5C,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,sBAAsB;YAC7C,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,qBAAqB;YAC3C,QAAQ,EAAE;gBACR,IAAI,EAAE,UAAU;gBAChB,WAAW,EAAE,6DAA6D;gBAC1E,GAAG,EAAE,mDAAmD;gBACxD,KAAK,EAAE,CAAC,kDAAkD,CAAC;aAC5D;SACF,CAAC,CAAC;QACH,yEAAyE;QACzE,QAAQ,CAAC,EAAE,CAAC,gBAAgB,EAAE,GAAG,EAAE;YACjC,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;YAClC,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;QAC3B,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,OAAO,CAAC,OAAgB;QAC5B,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CACb,wBAAwB,IAAI,CAAC,OAAO,EAAE,WAAW,IAAI,CAAC,gBAAgB,8DAA8D,CACrI,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACjD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QAC1C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QAEvB,OAAO,IAAI,OAAO,CAAmC,CAAC,UAAU,EAAE,SAAS,EAAE,EAAE;YAC7E,IAAI,UAAU,GAAG,KAAK,CAAC;YACvB,MAAM,KAAK,GAAG,CAAC,GAAY,EAAE,EAAE;gBAC7B,MAAM,GAAG,GAAI,GAAwB,EAAE,GAAG,IAAK,GAAyB,CAAC;gBACzE,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,UAAU,EAAE,CAAC;oBAC3C,UAAU,GAAG,IAAI,CAAC;oBAClB,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;oBACnB,UAAU,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC9C,CAAC;YACH,CAAC,CAAC;YACF,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;YAEpC,QAAQ;iBACL,OAAO,CAAC;gBACP,kBAAkB,EAAE;oBAClB,MAAM,EAAE;wBACN,OAAO,EAAE,CAAC,qBAAqB,EAAE,eAAe,EAAE,sBAAsB,CAAC;wBACzE,MAAM,EAAE,CAAC,UAAU,KAAK,CAAC,OAAO,EAAE,CAAC;wBACnC,MAAM,EAAE,CAAC,cAAc,EAAE,iBAAiB,CAAC;qBAC5C;iBACF;aACF,CAAC;iBACD,IAAI,CAAC,GAAG,EAAE;gBACT,wCAAwC;gBACxC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;gBACxB,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC,OAAO,CAAC;gBACtC,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;YAC3B,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,CAAU,EAAE,EAAE;gBACpB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;gBACxB,IAAI,CAAC,SAAS,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBAC5D,QAAQ,CAAC,cAAc,EAAE,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;gBAChD,uEAAuE;gBACvE,IAAI,CAAC,UAAU;oBAAE,SAAS,CAAC,CAAC,CAAC,CAAC;YAChC,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,aAAa,CACjB,OAAgB;QAEhB,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACjD,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACvB,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,gBAAgB,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QACvG,CAAC;QACD,2EAA2E;QAC3E,uCAAuC;QACvC,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACpC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;QACxF,CAAC;QACD,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC/D,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;IACrE,CAAC;IAED,8EAA8E;IAC9E,KAAK,CAAC,UAAU;QACd,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO;YAAE,OAAO,KAAK,CAAC;QAC1C,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;QACjC,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;QAClC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,eAAe,CAAC,EAAY;QAChC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QAC1C,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,8FAA8F,CAAC,CAAC;QAClH,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC/B,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAE9E,MAAM,MAAM,GAAG;YACb;gBACE,IAAI,EAAE,OAAO;gBACb,EAAE,EAAE,EAAE,CAAC,EAAE;gBACT,IAAI,EAAE,EAAE,CAAC,IAAI;gBACb,KAAK,EAAE,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC3C,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACzE;SACF,CAAC;QAEF,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,8BAA8B,IAAI,MAAM,CAAC;QACvE,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAC9B,EAAE,MAAM,EAAE,qBAAqB,EAAE,MAAM,EAAE,EACzC,UAAU,EAAE,CAAC,OAAO,EAAE,CACvB,CAAC;QAEF,IAAI,KAAgD,CAAC;QACrD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;YAC/C,KAAK,GAAG,UAAU,CAChB,GAAG,EAAE,CACH,MAAM,CACJ,IAAI,KAAK,CACP,0CAA0C,SAAS,wFAAwF,CAC5I,CACF,EACH,SAAS,CACV,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,OAAO,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QAChD,CAAC;gBAAS,CAAC;YACT,IAAI,KAAK;gBAAE,YAAY,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;CACF"}
|
package/dist/rpc.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc.d.ts","sourceRoot":"","sources":["../src/rpc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"rpc.d.ts","sourceRoot":"","sources":["../src/rpc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAgD1D;;;;;;;GAOG;AACH,qBAAa,WAAW;IAGV,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFnC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAsC;gBAE/B,MAAM,EAAE,UAAU;IAE/C,eAAe,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,eAAe;IAclD;;;;;OAKG;IACH,WAAW,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,cAAc,CAAC,eAAe,CAAC;IAa9D,yEAAyE;IACzE,cAAc,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM;CAGzC"}
|
package/dist/rpc.js
CHANGED
|
@@ -1,6 +1,48 @@
|
|
|
1
1
|
import { JsonRpcProvider } from "ethers";
|
|
2
2
|
import { resolveChain } from "./config.js";
|
|
3
3
|
import { safeErrorMessage } from "./lib/redact.js";
|
|
4
|
+
/**
|
|
5
|
+
* Transport-layer failures (rate limits, timeouts, DNS, 5xx, network detect) —
|
|
6
|
+
* as opposed to contract reverts (CALL_EXCEPTION), which are legitimate results
|
|
7
|
+
* a caller may branch on and must pass through untouched.
|
|
8
|
+
*/
|
|
9
|
+
const TRANSPORT_ERR_RE = /timeout|ETIMEDOUT|ECONNRESET|ECONNREFUSED|ENOTFOUND|EAI_AGAIN|rate.?limit|\b429\b|\b50[234]\b|could not detect network|SERVER_ERROR|NETWORK_ERROR|TIMEOUT|failed to fetch|fetch failed/i;
|
|
10
|
+
function isTransportError(err) {
|
|
11
|
+
const code = err?.code;
|
|
12
|
+
if (code === "TIMEOUT" || code === "SERVER_ERROR" || code === "NETWORK_ERROR")
|
|
13
|
+
return true;
|
|
14
|
+
if (code === "CALL_EXCEPTION")
|
|
15
|
+
return false; // a real revert — never annotate
|
|
16
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
17
|
+
return TRANSPORT_ERR_RE.test(msg);
|
|
18
|
+
}
|
|
19
|
+
const PUBLIC_RPC_HINT = "\n\n[hint] this call used the shared PUBLIC BSC RPC, which rate-limits and can be flaky. " +
|
|
20
|
+
"For reliability set your own endpoint in .env — DEXE_RPC_URL_MAINNET (chain 56) / " +
|
|
21
|
+
"DEXE_RPC_URL_TESTNET (chain 97), e.g. an Alchemy / QuickNode / Ankr URL — then restart " +
|
|
22
|
+
"(Claude Code: quit + relaunch). Run /dexe-setup for a guided walkthrough.";
|
|
23
|
+
/**
|
|
24
|
+
* JsonRpcProvider that annotates *transport* failures with a nudge to configure
|
|
25
|
+
* a private RPC. Used only for chains served by the zero-config public fallback,
|
|
26
|
+
* so users who never set an RPC get an actionable message instead of a bare
|
|
27
|
+
* timeout. In ethers v6 every read perform (`call`, `getBalance`, block reads,
|
|
28
|
+
* multicall's `eth_call`) routes through `send`, so this one override covers the
|
|
29
|
+
* hot read paths. Contract reverts (CALL_EXCEPTION) are excluded and pass through.
|
|
30
|
+
*/
|
|
31
|
+
class PublicRpcProvider extends JsonRpcProvider {
|
|
32
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
33
|
+
async send(method, params) {
|
|
34
|
+
try {
|
|
35
|
+
return await super.send(method, params);
|
|
36
|
+
}
|
|
37
|
+
catch (err) {
|
|
38
|
+
if (isTransportError(err)) {
|
|
39
|
+
const base = safeErrorMessage(err);
|
|
40
|
+
throw new Error(base.includes("[hint]") ? base : base + PUBLIC_RPC_HINT);
|
|
41
|
+
}
|
|
42
|
+
throw err;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
4
46
|
/**
|
|
5
47
|
* Lazy ethers v6 provider factory. Gov tools that need an RPC endpoint call
|
|
6
48
|
* `requireProvider(chainId?)`; tools that don't (decode_calldata,
|
|
@@ -19,7 +61,11 @@ export class RpcProvider {
|
|
|
19
61
|
const chain = resolveChain(this.config, chainId);
|
|
20
62
|
let provider = this.cache.get(chain.chainId);
|
|
21
63
|
if (!provider) {
|
|
22
|
-
provider
|
|
64
|
+
// Wrap with the annotating provider only when this chain is served by the
|
|
65
|
+
// zero-config public fallback — a user-configured RPC gets no false nudge.
|
|
66
|
+
provider = this.config.usingPublicRpcFallback
|
|
67
|
+
? new PublicRpcProvider(chain.rpcUrl)
|
|
68
|
+
: new JsonRpcProvider(chain.rpcUrl);
|
|
23
69
|
this.cache.set(chain.chainId, provider);
|
|
24
70
|
}
|
|
25
71
|
return provider;
|
package/dist/rpc.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc.js","sourceRoot":"","sources":["../src/rpc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAE,YAAY,EAAmB,MAAM,aAAa,CAAC;AAE5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnD;;;;;;;GAOG;AACH,MAAM,OAAO,WAAW;IAGO;IAFZ,KAAK,GAAG,IAAI,GAAG,EAA2B,CAAC;IAE5D,YAA6B,MAAkB;QAAlB,WAAM,GAAN,MAAM,CAAY;IAAG,CAAC;IAEnD,eAAe,CAAC,OAAgB;QAC9B,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACjD,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC7C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,QAAQ,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"rpc.js","sourceRoot":"","sources":["../src/rpc.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,45 @@
|
|
|
1
1
|
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
2
|
import type { ToolContext } from "./context.js";
|
|
3
3
|
import { SignerManager } from "../lib/signer.js";
|
|
4
|
+
import type { WalletConnectManager } from "../lib/walletconnect.js";
|
|
5
|
+
import { type DeployParams } from "./daoDeploy.js";
|
|
4
6
|
import type { StateStore } from "../lib/stateStore.js";
|
|
5
|
-
|
|
7
|
+
type DaoCreateParams = Omit<DeployParams, "descriptionURL" | "name">;
|
|
8
|
+
export interface SimpleConfig {
|
|
9
|
+
daoName: string;
|
|
10
|
+
symbol: string;
|
|
11
|
+
totalSupply: string;
|
|
12
|
+
treasuryPercent: number;
|
|
13
|
+
quorumPercent: number;
|
|
14
|
+
voteModel: "LINEAR" | "POLYNOMIAL";
|
|
15
|
+
durationSeconds: number;
|
|
16
|
+
executionDelaySeconds: number;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Synthesize a full, coherent deploy config from a few high-level fields — the
|
|
20
|
+
* frontend-equivalent shape: new gov token, treasury as an IMPLICIT remainder
|
|
21
|
+
* (never a recipient), deployer holds the distributed portion, LINEAR power.
|
|
22
|
+
*/
|
|
23
|
+
export declare function synthesizeParams(c: SimpleConfig, deployer: string): DaoCreateParams;
|
|
24
|
+
/**
|
|
25
|
+
* Compute a human-readable safety proof for a resolved deploy config: the
|
|
26
|
+
* votable share, the quorum, whether the quorum is reachable (the hard rule),
|
|
27
|
+
* and whether it clears the ≥50% treasury-safety floor (advisory). `feasible`
|
|
28
|
+
* is false only when the quorum is unreachable — the same rule the builder
|
|
29
|
+
* enforces, surfaced early so the preview can explain it.
|
|
30
|
+
*/
|
|
31
|
+
export declare function computeSafetyProof(p: DaoCreateParams): {
|
|
32
|
+
isTokenCreation: boolean;
|
|
33
|
+
supply: string;
|
|
34
|
+
votable: string;
|
|
35
|
+
votablePct: number;
|
|
36
|
+
quorumPct: number;
|
|
37
|
+
reachable: boolean;
|
|
38
|
+
reachablePct: number;
|
|
39
|
+
floorOk: boolean;
|
|
40
|
+
feasible: boolean;
|
|
41
|
+
message?: string;
|
|
42
|
+
};
|
|
43
|
+
export declare function registerDaoCreateTools(server: McpServer, ctx: ToolContext, signer: SignerManager, wc: WalletConnectManager, state?: StateStore): void;
|
|
44
|
+
export {};
|
|
6
45
|
//# sourceMappingURL=daoCreate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"daoCreate.d.ts","sourceRoot":"","sources":["../../src/tools/daoCreate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"daoCreate.d.ts","sourceRoot":"","sources":["../../src/tools/daoCreate.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAMpE,OAAO,EAA0C,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC3F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AA6CvD,KAAK,eAAe,GAAG,IAAI,CAAC,YAAY,EAAE,gBAAgB,GAAG,MAAM,CAAC,CAAC;AASrE,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,QAAQ,GAAG,YAAY,CAAC;IACnC,eAAe,EAAE,MAAM,CAAC;IACxB,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,GAAG,eAAe,CAsDnF;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,eAAe,GAAG;IACtD,eAAe,EAAE,OAAO,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CA6BA;AAED,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,SAAS,EACjB,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,aAAa,EACrB,EAAE,EAAE,oBAAoB,EACxB,KAAK,CAAC,EAAE,UAAU,GACjB,IAAI,CAgRN"}
|