dexe-mcp 0.20.1 → 0.22.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 +114 -0
- package/README.md +2 -1
- package/dexe-plugin/skills/dexe-create-dao/SKILL.md +8 -0
- package/dexe-plugin/skills/dexe-create-proposal/SKILL.md +47 -8
- package/dexe-plugin/skills/dexe-otc/SKILL.md +5 -0
- package/dexe-plugin/skills/dexe-vote-execute/SKILL.md +16 -3
- package/dist/config.d.ts +7 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +49 -9
- package/dist/config.js.map +1 -1
- package/dist/env/schema.d.ts +27 -6
- package/dist/env/schema.d.ts.map +1 -1
- package/dist/env/schema.js +36 -6
- package/dist/env/schema.js.map +1 -1
- package/dist/index.js +35 -7
- package/dist/index.js.map +1 -1
- package/dist/lib/avatarUpload.d.ts +57 -0
- package/dist/lib/avatarUpload.d.ts.map +1 -0
- package/dist/lib/avatarUpload.js +95 -0
- package/dist/lib/avatarUpload.js.map +1 -0
- package/dist/lib/errors.d.ts +33 -0
- package/dist/lib/errors.d.ts.map +1 -0
- package/dist/lib/errors.js +65 -0
- package/dist/lib/errors.js.map +1 -0
- package/dist/lib/params.d.ts +8 -0
- package/dist/lib/params.d.ts.map +1 -0
- package/dist/lib/params.js +14 -0
- package/dist/lib/params.js.map +1 -0
- package/dist/lib/proposalBuilders.d.ts +30 -2
- package/dist/lib/proposalBuilders.d.ts.map +1 -1
- package/dist/lib/proposalBuilders.js +583 -17
- package/dist/lib/proposalBuilders.js.map +1 -1
- package/dist/lib/requireEnv.d.ts.map +1 -1
- package/dist/lib/requireEnv.js +7 -4
- package/dist/lib/requireEnv.js.map +1 -1
- package/dist/lib/signer.d.ts.map +1 -1
- package/dist/lib/signer.js +7 -2
- package/dist/lib/signer.js.map +1 -1
- package/dist/lib/txWait.d.ts +28 -0
- package/dist/lib/txWait.d.ts.map +1 -0
- package/dist/lib/txWait.js +63 -0
- package/dist/lib/txWait.js.map +1 -0
- package/dist/lib/units.d.ts +32 -0
- package/dist/lib/units.d.ts.map +1 -0
- package/dist/lib/units.js +64 -0
- package/dist/lib/units.js.map +1 -0
- package/dist/rpc.d.ts +29 -1
- package/dist/rpc.d.ts.map +1 -1
- package/dist/rpc.js +86 -22
- package/dist/rpc.js.map +1 -1
- package/dist/tools/dao.d.ts.map +1 -1
- package/dist/tools/dao.js +16 -12
- package/dist/tools/dao.js.map +1 -1
- package/dist/tools/daoCreate.d.ts.map +1 -1
- package/dist/tools/daoCreate.js +37 -7
- package/dist/tools/daoCreate.js.map +1 -1
- package/dist/tools/flow.d.ts +32 -1
- package/dist/tools/flow.d.ts.map +1 -1
- package/dist/tools/flow.js +405 -120
- package/dist/tools/flow.js.map +1 -1
- package/dist/tools/gate.js +2 -2
- package/dist/tools/gov.d.ts.map +1 -1
- package/dist/tools/gov.js +17 -4
- package/dist/tools/gov.js.map +1 -1
- package/dist/tools/inbox.d.ts.map +1 -1
- package/dist/tools/inbox.js +4 -2
- package/dist/tools/inbox.js.map +1 -1
- package/dist/tools/ipfs.d.ts.map +1 -1
- package/dist/tools/ipfs.js +43 -47
- package/dist/tools/ipfs.js.map +1 -1
- package/dist/tools/operationalContext.d.ts.map +1 -1
- package/dist/tools/operationalContext.js +39 -5
- package/dist/tools/operationalContext.js.map +1 -1
- package/dist/tools/otc.d.ts.map +1 -1
- package/dist/tools/otc.js +53 -13
- package/dist/tools/otc.js.map +1 -1
- package/dist/tools/predict.d.ts.map +1 -1
- package/dist/tools/predict.js +7 -4
- package/dist/tools/predict.js.map +1 -1
- package/dist/tools/proposal.d.ts.map +1 -1
- package/dist/tools/proposal.js +8 -4
- package/dist/tools/proposal.js.map +1 -1
- package/dist/tools/proposalBuild.d.ts +1 -0
- package/dist/tools/proposalBuild.d.ts.map +1 -1
- package/dist/tools/proposalBuild.js +2 -1
- package/dist/tools/proposalBuild.js.map +1 -1
- package/dist/tools/proposalBuildComplex.d.ts +7 -0
- package/dist/tools/proposalBuildComplex.d.ts.map +1 -1
- package/dist/tools/proposalBuildComplex.js +7 -7
- package/dist/tools/proposalBuildComplex.js.map +1 -1
- package/dist/tools/proposalBuildInternal.d.ts +21 -0
- package/dist/tools/proposalBuildInternal.d.ts.map +1 -1
- package/dist/tools/proposalBuildInternal.js +1 -1
- package/dist/tools/proposalBuildInternal.js.map +1 -1
- package/dist/tools/proposalBuildMore.d.ts +2 -0
- package/dist/tools/proposalBuildMore.d.ts.map +1 -1
- package/dist/tools/proposalBuildMore.js +2 -2
- package/dist/tools/proposalBuildMore.js.map +1 -1
- package/dist/tools/read.d.ts.map +1 -1
- package/dist/tools/read.js +25 -16
- package/dist/tools/read.js.map +1 -1
- package/dist/tools/subgraph.d.ts.map +1 -1
- package/dist/tools/subgraph.js +5 -3
- package/dist/tools/subgraph.js.map +1 -1
- package/dist/tools/txSend.d.ts.map +1 -1
- package/dist/tools/txSend.js +46 -6
- package/dist/tools/txSend.js.map +1 -1
- package/dist/tools/vote.d.ts.map +1 -1
- package/dist/tools/vote.js +7 -4
- package/dist/tools/vote.js.map +1 -1
- package/package.json +1 -1
package/dist/env/schema.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/env/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAyDxB,MAAM,KAAK,GAAG,qBAAqB,CAAC;AACpC,MAAM,KAAK,GAAG,qBAAqB,CAAC;AACpC,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACzC,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/env/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAyDxB,MAAM,KAAK,GAAG,qBAAqB,CAAC;AACpC,MAAM,KAAK,GAAG,qBAAqB,CAAC;AACpC,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACzC,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;AAChD;;;;GAIG;AACH,MAAM,eAAe,GAAG,CAAC;KACtB,MAAM,EAAE;KACR,MAAM,CACL,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAC5G,EAAE,OAAO,EAAE,iDAAiD,EAAE,CAC/D;KACA,QAAQ,EAAE,CAAC;AAEd,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,6EAA6E;IAC7E,kBAAkB,EAAE;QAClB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC7B,QAAQ,EAAE,MAAM;QAChB,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,EAAE;QACX,GAAG,EAAE,oEAAoE;KAC1E;IACD,wBAAwB,EAAE;QACxB,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE;QACzB,QAAQ,EAAE,MAAM;QAChB,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,IAAI;QACb,GAAG,EAAE,0IAA0I;KAChJ;IACD,mBAAmB,EAAE;QACnB,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE;QAC1C,QAAQ,EAAE,MAAM;QAChB,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,MAAM;QACf,GAAG,EAAE,gLAAgL;KACtL;IACD,qBAAqB,EAAE;QACrB,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE;QACzB,QAAQ,EAAE,MAAM;QAChB,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,GAAG;QACZ,GAAG,EAAE,qLAAqL;KAC3L;IACD,aAAa,EAAE;QACb,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC7B,QAAQ,EAAE,MAAM;QAChB,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,gBAAgB;QACzB,GAAG,EAAE,8MAA8M;KACpN;IACD,eAAe,EAAE;QACf,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC7B,QAAQ,EAAE,MAAM;QAChB,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,EAAE;QACX,GAAG,EAAE,oLAAoL;KAC1L;IAED,6EAA6E;IAC7E,YAAY,EAAE;QACZ,MAAM,EAAE,eAAe;QACvB,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,kCAAkC;QAC3C,GAAG,EAAE,wHAAwH;QAC7H,YAAY,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC;KACpC;IACD,aAAa,EAAE;QACb,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE;QACzB,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,IAAI;QACb,GAAG,EAAE,sEAAsE;KAC5E;IACD,oBAAoB,EAAE;QACpB,MAAM,EAAE,eAAe;QACvB,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,iDAAiD;QAC1D,GAAG,EAAE,4IAA4I;QACjJ,YAAY,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC;KACpC;IACD,oBAAoB,EAAE;QACpB,MAAM,EAAE,eAAe;QACvB,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,mCAAmC;QAC5C,GAAG,EAAE,4IAA4I;QACjJ,YAAY,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC;KACpC;IACD,uBAAuB,EAAE;QACvB,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE;QACzB,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,QAAQ;QACjB,GAAG,EAAE,iIAAiI;KACvI;IACD,qBAAqB,EAAE;QACrB,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE;QACzB,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,IAAI;QACb,GAAG,EAAE,0EAA0E;KAChF;IACD,uBAAuB,EAAE;QACvB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;QAC1C,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,EAAE;QACX,GAAG,EAAE,0EAA0E;KAChF;IACD,uBAAuB,EAAE;QACvB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC7B,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,GAAG;QACZ,GAAG,EAAE,4GAA4G;KAClH;IAED,4EAA4E;IAC5E,gBAAgB,EAAE;QAChB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;QAC1C,QAAQ,EAAE,QAAQ;QAClB,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,YAAY;QACrB,GAAG,EAAE,0DAA0D;QAC/D,YAAY,EAAE,CAAC,WAAW,CAAC;QAC3B,MAAM,EAAE,IAAI;KACb;IACD,qBAAqB,EAAE;QACrB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC7B,QAAQ,EAAE,QAAQ;QAClB,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,EAAE;QACX,GAAG,EAAE,4EAA4E;KAClF;IACD,yBAAyB,EAAE;QACzB,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE;QACzB,QAAQ,EAAE,QAAQ;QAClB,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,EAAE;QACX,GAAG,EAAE,yCAAyC;KAC/C;IACD,kCAAkC,EAAE;QAClC,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE;QACzB,QAAQ,EAAE,QAAQ;QAClB,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,EAAE;QACX,GAAG,EAAE,uDAAuD;KAC7D;IAED,4EAA4E;IAC5E,eAAe,EAAE;QACf,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC7B,QAAQ,EAAE,MAAM;QAChB,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,yBAAyB;QAClC,GAAG,EAAE,uEAAuE;QAC5E,YAAY,EAAE,CAAC,aAAa,EAAE,YAAY,CAAC;QAC3C,MAAM,EAAE,IAAI;KACb;IACD,iBAAiB,EAAE;QACjB,MAAM,EAAE,WAAW;QACnB,QAAQ,EAAE,MAAM;QAChB,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,oCAAoC;QAC7C,GAAG,EAAE,0CAA0C;QAC/C,YAAY,EAAE,CAAC,WAAW,CAAC;KAC5B;IACD,2BAA2B,EAAE;QAC3B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC7B,QAAQ,EAAE,MAAM;QAChB,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,EAAE;QACX,GAAG,EAAE,0DAA0D;KAChE;IACD,iCAAiC,EAAE;QACjC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC7B,QAAQ,EAAE,MAAM;QAChB,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,GAAG;QACZ,GAAG,EAAE,2IAA2I;KACjJ;IACD,yBAAyB,EAAE;QACzB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC7B,QAAQ,EAAE,MAAM;QAChB,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,EAAE;QACX,GAAG,EAAE,+DAA+D;QACpE,MAAM,EAAE,IAAI;KACb;IACD,wBAAwB,EAAE;QACxB,MAAM,EAAE,WAAW;QACnB,QAAQ,EAAE,MAAM;QAChB,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,EAAE;QACX,GAAG,EAAE,iDAAiD;KACvD;IAED,4EAA4E;IAC5E,uBAAuB,EAAE;QACvB,MAAM,EAAE,WAAW;QACnB,QAAQ,EAAE,UAAU;QACpB,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,oDAAoD;QAC7D,GAAG,EAAE,0BAA0B;QAC/B,YAAY,EAAE,CAAC,eAAe,CAAC;KAChC;IACD,4BAA4B,EAAE;QAC5B,MAAM,EAAE,WAAW;QACnB,QAAQ,EAAE,UAAU;QACpB,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,oDAAoD;QAC7D,GAAG,EAAE,+BAA+B;QACpC,YAAY,EAAE,CAAC,eAAe,CAAC;KAChC;IACD,8BAA8B,EAAE;QAC9B,MAAM,EAAE,WAAW;QACnB,QAAQ,EAAE,UAAU;QACpB,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,oDAAoD;QAC7D,GAAG,EAAE,iCAAiC;QACtC,YAAY,EAAE,CAAC,eAAe,CAAC;KAChC;IACD,kBAAkB,EAAE;QAClB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC7B,QAAQ,EAAE,UAAU;QACpB,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,EAAE;QACX,GAAG,EAAE,wEAAwE;QAC7E,MAAM,EAAE,IAAI;KACb;IAED,4EAA4E;IAC5E,6BAA6B,EAAE;QAC7B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC7B,QAAQ,EAAE,eAAe;QACzB,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,EAAE;QACX,GAAG,EAAE,+FAA+F;QACpG,YAAY,EAAE,CAAC,oBAAoB,CAAC;KACrC;IACD,4BAA4B,EAAE;QAC5B,MAAM,EAAE,WAAW;QACnB,QAAQ,EAAE,eAAe;QACzB,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,+BAA+B;QACxC,GAAG,EAAE,kCAAkC;KACxC;IACD,sCAAsC,EAAE;QACtC,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE;QACzB,QAAQ,EAAE,eAAe;QACzB,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,QAAQ;QACjB,GAAG,EAAE,gDAAgD;KACtD;IAED,4EAA4E;IAC5E,wBAAwB,EAAE;QACxB,MAAM,EAAE,WAAW;QACnB,QAAQ,EAAE,MAAM;QAChB,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,+CAA+C;QACxD,GAAG,EAAE,8EAA8E;QACnF,YAAY,EAAE,CAAC,SAAS,CAAC;KAC1B;IACD,iBAAiB,EAAE;QACjB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC7B,QAAQ,EAAE,MAAM;QAChB,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,EAAE;QACX,GAAG,EAAE,4CAA4C;QACjD,MAAM,EAAE,IAAI;KACb;IAED,4EAA4E;IAC5E,oBAAoB,EAAE;QACpB,MAAM,EAAE,WAAW;QACnB,QAAQ,EAAE,SAAS;QACnB,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,qBAAqB;QAC9B,GAAG,EAAE,qDAAqD;QAC1D,YAAY,EAAE,CAAC,kBAAkB,CAAC;KACnC;IAED,4EAA4E;IAC5E,eAAe,EAAE;QACf,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE;QACzB,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,EAAE;QACX,GAAG,EAAE,oCAAoC;KAC1C;IACD,wBAAwB,EAAE;QACxB,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE;QACzB,QAAQ,EAAE,MAAM;QAChB,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,OAAO;QAChB,GAAG,EAAE,4HAA4H;KAClI;IACD,iBAAiB,EAAE;QACjB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC7B,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,EAAE;QACX,GAAG,EAAE,mIAAmI;KACzI;CAC0C,CAAC;AAE9C;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAA6B,QAAQ,CAAC;AAI/D,MAAM,UAAU,aAAa,CAAC,CAAS;IACrC,OAAO,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,OAAO;IACrB,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAa,CAAC;AAC3C,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,sBAAsB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { existsSync } from "node:fs";
|
|
2
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
3
3
|
import { resolve, dirname } from "node:path";
|
|
4
4
|
import { fileURLToPath } from "node:url";
|
|
5
5
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
@@ -60,18 +60,46 @@ if (subcommand === "skills") {
|
|
|
60
60
|
await mod.run(process.argv.slice(3));
|
|
61
61
|
process.exit(0);
|
|
62
62
|
}
|
|
63
|
+
/** Real package version — the MCP handshake previously hardcoded "0.1.5". */
|
|
64
|
+
function packageVersion() {
|
|
65
|
+
try {
|
|
66
|
+
const pkg = JSON.parse(readFileSync(resolve(__dirname, "..", "package.json"), "utf8"));
|
|
67
|
+
return pkg.version ?? "0.0.0";
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
return "0.0.0";
|
|
71
|
+
}
|
|
72
|
+
}
|
|
63
73
|
async function main() {
|
|
64
74
|
const config = await loadConfig();
|
|
65
|
-
const server = new McpServer({ name: "dexe-mcp", version:
|
|
75
|
+
const server = new McpServer({ name: "dexe-mcp", version: packageVersion() }, {
|
|
66
76
|
instructions: "Tools for DeXe Protocol governance DAOs (plus a generic dexe_gov_* surface for external OpenZeppelin/Compound Governor DAOs). " +
|
|
67
|
-
"Call dexe_context
|
|
68
|
-
"Prefer the composite flow tools over hand-sequencing calldata: dexe_dao_create (deploy a DAO), dexe_proposal_create (
|
|
69
|
-
"
|
|
70
|
-
"
|
|
71
|
-
"The
|
|
77
|
+
"Call dexe_context first WHEN you need orientation (signer, active chain, env readiness, DAOs/proposals from prior sessions) — skip it when the user already gave you the target DAO and chain. " +
|
|
78
|
+
"Prefer the composite flow tools over hand-sequencing calldata: dexe_dao_create (deploy a DAO), dexe_proposal_create (ANY of the 33 catalog proposal types — pass proposalType + params), dexe_proposal_vote_and_execute (auto-deposits when power is short). " +
|
|
79
|
+
"Amounts accept raw wei (digits-only) or human units with a decimal point ('12.5'); durations are seconds. " +
|
|
80
|
+
"For images (DAO avatars): pass a LOCAL FILE PATH (avatarPath / newAvatarPath / filePath) and the server reads, validates, and pins it — never read image files or pass base64 through the conversation. " +
|
|
81
|
+
"The composites handle approve→deposit→create sequencing, correct IPFS metadata, and the known deploy/proposal reverts; on partial failure they return the landed-steps ledger — fix the cause and re-run the same call (completed steps are skipped). " +
|
|
82
|
+
"When depositing, ERC20.approve the UserKeeper, never GovPool. Validate DAO deploys on BSC testnet (chain 97). " +
|
|
83
|
+
"Before any dexe_get_* / dexe_list_contracts / dexe_find_selector, run dexe_compile once per session. " +
|
|
84
|
+
"The tool surface is gated by DEXE_TOOLSETS (default 'core,proposals'); dexe_context reports which sets are off and what they unlock. " +
|
|
85
|
+
"Full intent→call recipes + error→remedy table: docs/PLAYBOOK.md (shipped in the package). " +
|
|
72
86
|
"Recipe skills ship with the package (dexe-create-dao, dexe-create-proposal, dexe-vote-execute, dexe-otc). Installed automatically with the Claude Code plugin (`/plugin install dexe@dexe-mcp`), or copy them standalone with `npx dexe-mcp skills`.",
|
|
73
87
|
});
|
|
74
88
|
registerAll(server, config);
|
|
89
|
+
// The AI-efficiency guide, on demand (docs/PLAYBOOK.md ships in the package).
|
|
90
|
+
// Kept out of `instructions` so it doesn't cost tokens every session.
|
|
91
|
+
const playbookPath = resolve(__dirname, "..", "docs", "PLAYBOOK.md");
|
|
92
|
+
if (existsSync(playbookPath)) {
|
|
93
|
+
server.resource("playbook", "dexe://playbook", async () => ({
|
|
94
|
+
contents: [
|
|
95
|
+
{
|
|
96
|
+
uri: "dexe://playbook",
|
|
97
|
+
mimeType: "text/markdown",
|
|
98
|
+
text: readFileSync(playbookPath, "utf8"),
|
|
99
|
+
},
|
|
100
|
+
],
|
|
101
|
+
}));
|
|
102
|
+
}
|
|
75
103
|
const transport = new StdioServerTransport();
|
|
76
104
|
await server.connect(transport);
|
|
77
105
|
// Log-only, not protocol. stdout is the MCP channel.
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared avatar-ingestion helper: one implementation behind
|
|
3
|
+
* `dexe_ipfs_upload_avatar`, `dexe_proposal_create` (modify_dao_profile), and
|
|
4
|
+
* `dexe_dao_create`.
|
|
5
|
+
*
|
|
6
|
+
* Accepts the image either as a local file path (preferred — the server reads
|
|
7
|
+
* the bytes itself, so the agent never round-trips base64 through its context)
|
|
8
|
+
* or as base64. Every path goes through the same magic-byte raster gate before
|
|
9
|
+
* pinning, so an SVG/HTML impostor can't reach IPFS under a `.jpeg` name.
|
|
10
|
+
*/
|
|
11
|
+
import { type RasterFormat } from "./imageSniff.js";
|
|
12
|
+
import { type PinataClient } from "./ipfs.js";
|
|
13
|
+
/** Avatars render at ≤512px on app.dexe.io — 10 MB is already generous. */
|
|
14
|
+
export declare const MAX_AVATAR_BYTES: number;
|
|
15
|
+
/**
|
|
16
|
+
* Subdomain-gateway host used to build the `avatarUrl` field stored inside
|
|
17
|
+
* DAO metadata. Must speak the `<cidV1>.ipfs.<host>/<filename>` schema so the
|
|
18
|
+
* DeXe frontend's `parseAvatarFromIpfsResponse` can round-trip the URL.
|
|
19
|
+
*
|
|
20
|
+
* Default is `dweb.link` — the frontend's historical `4everland.io` fails to
|
|
21
|
+
* discover freshly-pinned CIDs for tens of minutes, during which the backend
|
|
22
|
+
* cache can't fetch the avatar. Configurable via `DEXE_IPFS_AVATAR_GATEWAY`
|
|
23
|
+
* (host, no scheme).
|
|
24
|
+
*/
|
|
25
|
+
export declare function avatarSubdomainHost(): string;
|
|
26
|
+
export declare function buildAvatarUrl(cidV1: string, fileName: string): string;
|
|
27
|
+
export interface AvatarInput {
|
|
28
|
+
/** Absolute path to a local image file — preferred over base64. */
|
|
29
|
+
filePath?: string;
|
|
30
|
+
/** Base64-encoded image bytes (no data-URL prefix). */
|
|
31
|
+
base64?: string;
|
|
32
|
+
}
|
|
33
|
+
/** Resolve an avatar input to raw bytes, with actionable errors. */
|
|
34
|
+
export declare function readAvatarInput({ filePath, base64 }: AvatarInput): Promise<Uint8Array>;
|
|
35
|
+
export interface PinnedAvatar {
|
|
36
|
+
avatarCID: string;
|
|
37
|
+
avatarFileName: string;
|
|
38
|
+
avatarUrl: string;
|
|
39
|
+
detectedFormat: RasterFormat;
|
|
40
|
+
/** Pin size reported by Pinata (includes the directory wrapper block). */
|
|
41
|
+
size: number;
|
|
42
|
+
pinnedAt: string;
|
|
43
|
+
/** Actual image byte length that was pinned. */
|
|
44
|
+
byteLength: number;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Read → validate (magic bytes) → pin → return the
|
|
48
|
+
* `{avatarCID, avatarFileName, avatarUrl}` triple DAO metadata expects.
|
|
49
|
+
* The filename is normalized to `.jpeg` to match the frontend contract
|
|
50
|
+
* (the serving chain keys off that extension); the pinned MIME is the
|
|
51
|
+
* format actually sniffed from the bytes.
|
|
52
|
+
*/
|
|
53
|
+
export declare function pinAvatarFromInput(input: AvatarInput & {
|
|
54
|
+
fileName?: string;
|
|
55
|
+
pinata: PinataClient;
|
|
56
|
+
}): Promise<PinnedAvatar>;
|
|
57
|
+
//# sourceMappingURL=avatarUpload.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"avatarUpload.d.ts","sourceRoot":"","sources":["../../src/lib/avatarUpload.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAsB,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAAW,KAAK,YAAY,EAAE,MAAM,WAAW,CAAC;AAEvD,2EAA2E;AAC3E,eAAO,MAAM,gBAAgB,QAAmB,CAAC;AAEjD;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAG5C;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEtE;AAED,MAAM,WAAW,WAAW;IAC1B,mEAAmE;IACnE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uDAAuD;IACvD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,oEAAoE;AACpE,wBAAsB,eAAe,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAgC5F;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,YAAY,CAAC;IAC7B,0EAA0E;IAC1E,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,gDAAgD;IAChD,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,WAAW,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,YAAY,CAAA;CAAE,GAC/D,OAAO,CAAC,YAAY,CAAC,CAqBvB"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared avatar-ingestion helper: one implementation behind
|
|
3
|
+
* `dexe_ipfs_upload_avatar`, `dexe_proposal_create` (modify_dao_profile), and
|
|
4
|
+
* `dexe_dao_create`.
|
|
5
|
+
*
|
|
6
|
+
* Accepts the image either as a local file path (preferred — the server reads
|
|
7
|
+
* the bytes itself, so the agent never round-trips base64 through its context)
|
|
8
|
+
* or as base64. Every path goes through the same magic-byte raster gate before
|
|
9
|
+
* pinning, so an SVG/HTML impostor can't reach IPFS under a `.jpeg` name.
|
|
10
|
+
*/
|
|
11
|
+
import { readFile } from "node:fs/promises";
|
|
12
|
+
import { assertRasterAvatar } from "./imageSniff.js";
|
|
13
|
+
import { toCidV1 } from "./ipfs.js";
|
|
14
|
+
/** Avatars render at ≤512px on app.dexe.io — 10 MB is already generous. */
|
|
15
|
+
export const MAX_AVATAR_BYTES = 10 * 1024 * 1024;
|
|
16
|
+
/**
|
|
17
|
+
* Subdomain-gateway host used to build the `avatarUrl` field stored inside
|
|
18
|
+
* DAO metadata. Must speak the `<cidV1>.ipfs.<host>/<filename>` schema so the
|
|
19
|
+
* DeXe frontend's `parseAvatarFromIpfsResponse` can round-trip the URL.
|
|
20
|
+
*
|
|
21
|
+
* Default is `dweb.link` — the frontend's historical `4everland.io` fails to
|
|
22
|
+
* discover freshly-pinned CIDs for tens of minutes, during which the backend
|
|
23
|
+
* cache can't fetch the avatar. Configurable via `DEXE_IPFS_AVATAR_GATEWAY`
|
|
24
|
+
* (host, no scheme).
|
|
25
|
+
*/
|
|
26
|
+
export function avatarSubdomainHost() {
|
|
27
|
+
const override = process.env.DEXE_IPFS_AVATAR_GATEWAY?.trim().replace(/^https?:\/\//i, "").replace(/\/$/, "");
|
|
28
|
+
return override || "dweb.link";
|
|
29
|
+
}
|
|
30
|
+
export function buildAvatarUrl(cidV1, fileName) {
|
|
31
|
+
return `https://${cidV1}.ipfs.${avatarSubdomainHost()}/${fileName}`;
|
|
32
|
+
}
|
|
33
|
+
/** Resolve an avatar input to raw bytes, with actionable errors. */
|
|
34
|
+
export async function readAvatarInput({ filePath, base64 }) {
|
|
35
|
+
if (filePath && base64) {
|
|
36
|
+
throw new Error("Pass either `filePath` or `base64`, not both.");
|
|
37
|
+
}
|
|
38
|
+
if (filePath) {
|
|
39
|
+
let buf;
|
|
40
|
+
try {
|
|
41
|
+
buf = await readFile(filePath);
|
|
42
|
+
}
|
|
43
|
+
catch (e) {
|
|
44
|
+
throw new Error(`Cannot read avatar file at "${filePath}": ${e instanceof Error ? e.message : String(e)}. ` +
|
|
45
|
+
"Pass an absolute path to an existing image file (JPEG/PNG/WebP/GIF).");
|
|
46
|
+
}
|
|
47
|
+
if (buf.length === 0)
|
|
48
|
+
throw new Error(`Avatar file at "${filePath}" is empty.`);
|
|
49
|
+
if (buf.length > MAX_AVATAR_BYTES) {
|
|
50
|
+
throw new Error(`Avatar file is ${(buf.length / 1024 / 1024).toFixed(1)} MB — max ${MAX_AVATAR_BYTES / 1024 / 1024} MB. ` +
|
|
51
|
+
"Resize/compress the image first (it renders at 512px or less).");
|
|
52
|
+
}
|
|
53
|
+
return Uint8Array.from(buf);
|
|
54
|
+
}
|
|
55
|
+
if (base64) {
|
|
56
|
+
const bytes = Uint8Array.from(Buffer.from(base64, "base64"));
|
|
57
|
+
if (bytes.length === 0)
|
|
58
|
+
throw new Error("`base64` decoded to zero bytes — check the payload.");
|
|
59
|
+
if (bytes.length > MAX_AVATAR_BYTES) {
|
|
60
|
+
throw new Error(`Avatar is ${(bytes.length / 1024 / 1024).toFixed(1)} MB — max ${MAX_AVATAR_BYTES / 1024 / 1024} MB.`);
|
|
61
|
+
}
|
|
62
|
+
return bytes;
|
|
63
|
+
}
|
|
64
|
+
throw new Error("Provide the avatar image as `filePath` (preferred for local files) or `base64`.");
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Read → validate (magic bytes) → pin → return the
|
|
68
|
+
* `{avatarCID, avatarFileName, avatarUrl}` triple DAO metadata expects.
|
|
69
|
+
* The filename is normalized to `.jpeg` to match the frontend contract
|
|
70
|
+
* (the serving chain keys off that extension); the pinned MIME is the
|
|
71
|
+
* format actually sniffed from the bytes.
|
|
72
|
+
*/
|
|
73
|
+
export async function pinAvatarFromInput(input) {
|
|
74
|
+
const bytes = await readAvatarInput(input);
|
|
75
|
+
const sniffed = assertRasterAvatar(bytes);
|
|
76
|
+
const raw = input.fileName ?? "avatar";
|
|
77
|
+
const base = raw.includes(".") ? raw.substring(0, raw.lastIndexOf(".")) : raw;
|
|
78
|
+
const normalized = `${base || "avatar"}.jpeg`;
|
|
79
|
+
const res = await input.pinata.pinFile(bytes, {
|
|
80
|
+
fileName: normalized,
|
|
81
|
+
contentType: sniffed.mime,
|
|
82
|
+
name: normalized,
|
|
83
|
+
});
|
|
84
|
+
const avatarCID = toCidV1(res.cid);
|
|
85
|
+
return {
|
|
86
|
+
avatarCID,
|
|
87
|
+
avatarFileName: normalized,
|
|
88
|
+
avatarUrl: buildAvatarUrl(avatarCID, normalized),
|
|
89
|
+
detectedFormat: sniffed.format,
|
|
90
|
+
size: res.size,
|
|
91
|
+
pinnedAt: res.pinnedAt,
|
|
92
|
+
byteLength: bytes.length,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=avatarUpload.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"avatarUpload.js","sourceRoot":"","sources":["../../src/lib/avatarUpload.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Actionable-error layer (v0.22). Every catch-all in the composite flows routes
|
|
3
|
+
* through `toActionableError` so the model/user gets "what happened + what to do
|
|
4
|
+
* next" instead of a raw ethers dump. The remedy table is exported so
|
|
5
|
+
* `npm run gen:playbook` can render it into docs/PLAYBOOK.md — one source.
|
|
6
|
+
*/
|
|
7
|
+
export interface KnownFailure {
|
|
8
|
+
/** Matched against the raw error message (case-insensitive). */
|
|
9
|
+
match: RegExp;
|
|
10
|
+
/** Stable slug used in PLAYBOOK's error→remedy table. */
|
|
11
|
+
slug: string;
|
|
12
|
+
/** One-sentence statement of what went wrong, in user terms. */
|
|
13
|
+
what: string;
|
|
14
|
+
/** Concrete next step ("do X"), tool names included. */
|
|
15
|
+
remedy: string;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Known failure signatures across the DeXe flows. Order matters — first match
|
|
19
|
+
* wins. Keep `what`/`remedy` self-contained: they are shown without the
|
|
20
|
+
* surrounding code context.
|
|
21
|
+
*/
|
|
22
|
+
export declare const KNOWN_FAILURES: readonly KnownFailure[];
|
|
23
|
+
/** Result of classifying an unknown error against the KNOWN_FAILURES table. */
|
|
24
|
+
export interface ActionableError {
|
|
25
|
+
message: string;
|
|
26
|
+
slug?: string;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Wrap a caught error with step context and, when the signature is recognized,
|
|
30
|
+
* a concrete remedy. Falls back to the redacted raw message so nothing is lost.
|
|
31
|
+
*/
|
|
32
|
+
export declare function toActionableError(err: unknown, step?: string): ActionableError;
|
|
33
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AAEH,MAAM,WAAW,YAAY;IAC3B,gEAAgE;IAChE,KAAK,EAAE,MAAM,CAAC;IACd,yDAAyD;IACzD,IAAI,EAAE,MAAM,CAAC;IACb,gEAAgE;IAChE,IAAI,EAAE,MAAM,CAAC;IACb,wDAAwD;IACxD,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,eAAO,MAAM,cAAc,EAAE,SAAS,YAAY,EA+CxC,CAAC;AAEX,+EAA+E;AAC/E,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,eAAe,CAS9E"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { safeErrorMessage } from "./redact.js";
|
|
2
|
+
/**
|
|
3
|
+
* Known failure signatures across the DeXe flows. Order matters — first match
|
|
4
|
+
* wins. Keep `what`/`remedy` self-contained: they are shown without the
|
|
5
|
+
* surrounding code context.
|
|
6
|
+
*/
|
|
7
|
+
export const KNOWN_FAILURES = [
|
|
8
|
+
{
|
|
9
|
+
match: /insufficient funds for (gas|intrinsic)/i,
|
|
10
|
+
slug: "no-gas",
|
|
11
|
+
what: "The signer wallet has no BNB to pay gas.",
|
|
12
|
+
remedy: "Fund the signer address with BNB on the target chain (testnet 97: use a faucet, e.g. https://www.bnbchain.org/en/testnet-faucet), then re-run.",
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
match: /nonce (too low|has already been used)|already known|replacement transaction underpriced/i,
|
|
16
|
+
slug: "nonce-conflict",
|
|
17
|
+
what: "A transaction with this nonce is already pending or mined.",
|
|
18
|
+
remedy: "A previous broadcast is still settling. Wait ~15s, check it with dexe_tx_status, then re-run — the flow re-checks completed steps and skips them.",
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
match: /user rejected|user denied|rejected by user/i,
|
|
22
|
+
slug: "wallet-rejected",
|
|
23
|
+
what: "The transaction was rejected in the wallet.",
|
|
24
|
+
remedy: "Re-run the call and approve the request on the phone/wallet when it appears.",
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
match: /DEXE_PINATA_JWT/i,
|
|
28
|
+
slug: "pinata-missing",
|
|
29
|
+
what: "IPFS uploads need a Pinata JWT and none is configured.",
|
|
30
|
+
remedy: "1) Create a free API key at https://app.pinata.cloud/developers/api-keys with pinJSONToIPFS + pinFileToIPFS permissions. " +
|
|
31
|
+
"2) Add DEXE_PINATA_JWT=<jwt> to the .env at the dexe-mcp root (never .claude.json). " +
|
|
32
|
+
"3) Restart Claude Code (the .env is read once at startup). Or run /dexe-setup for a guided walkthrough.",
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
match: /rate.?limit|\b429\b|SERVER_ERROR|could not detect network|failed to fetch|fetch failed|ETIMEDOUT|ECONNRESET/i,
|
|
36
|
+
slug: "rpc-flaky",
|
|
37
|
+
what: "The RPC endpoint failed or rate-limited mid-call (retries were already attempted).",
|
|
38
|
+
remedy: "Re-run the call — completed steps are skipped. For reliability set a private endpoint in .env " +
|
|
39
|
+
"(DEXE_RPC_URL_MAINNET / DEXE_RPC_URL_TESTNET, e.g. Alchemy/QuickNode/Ankr) and restart.",
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
match: /execution reverted|CALL_EXCEPTION|transaction failed|status.*0\b/i,
|
|
43
|
+
slug: "onchain-revert",
|
|
44
|
+
what: "The transaction reverted on-chain (state was NOT changed by this step).",
|
|
45
|
+
remedy: "Read the revert reason above if present. Common causes: proposal not in the required state " +
|
|
46
|
+
"(check dexe_proposal_state), tokens locked in an active proposal (withdraw between proposals), " +
|
|
47
|
+
"or a blacklisted recipient. Fix the cause and re-run — earlier landed steps are skipped.",
|
|
48
|
+
},
|
|
49
|
+
];
|
|
50
|
+
/**
|
|
51
|
+
* Wrap a caught error with step context and, when the signature is recognized,
|
|
52
|
+
* a concrete remedy. Falls back to the redacted raw message so nothing is lost.
|
|
53
|
+
*/
|
|
54
|
+
export function toActionableError(err, step) {
|
|
55
|
+
const raw = safeErrorMessage(err);
|
|
56
|
+
const hit = KNOWN_FAILURES.find((k) => k.match.test(raw));
|
|
57
|
+
const prefix = step ? `${step} failed: ` : "";
|
|
58
|
+
if (!hit)
|
|
59
|
+
return { message: `${prefix}${raw}` };
|
|
60
|
+
return {
|
|
61
|
+
slug: hit.slug,
|
|
62
|
+
message: `${prefix}${raw}\n\n${hit.what}\nNext step: ${hit.remedy}`,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAoB/C;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAA4B;IACrD;QACE,KAAK,EAAE,yCAAyC;QAChD,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,0CAA0C;QAChD,MAAM,EACJ,gJAAgJ;KACnJ;IACD;QACE,KAAK,EAAE,0FAA0F;QACjG,IAAI,EAAE,gBAAgB;QACtB,IAAI,EAAE,4DAA4D;QAClE,MAAM,EACJ,mJAAmJ;KACtJ;IACD;QACE,KAAK,EAAE,6CAA6C;QACpD,IAAI,EAAE,iBAAiB;QACvB,IAAI,EAAE,6CAA6C;QACnD,MAAM,EAAE,8EAA8E;KACvF;IACD;QACE,KAAK,EAAE,kBAAkB;QACzB,IAAI,EAAE,gBAAgB;QACtB,IAAI,EAAE,wDAAwD;QAC9D,MAAM,EACJ,2HAA2H;YAC3H,sFAAsF;YACtF,yGAAyG;KAC5G;IACD;QACE,KAAK,EAAE,8GAA8G;QACrH,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,oFAAoF;QAC1F,MAAM,EACJ,gGAAgG;YAChG,yFAAyF;KAC5F;IACD;QACE,KAAK,EAAE,mEAAmE;QAC1E,IAAI,EAAE,gBAAgB;QACtB,IAAI,EAAE,yEAAyE;QAC/E,MAAM,EACJ,6FAA6F;YAC7F,iGAAiG;YACjG,0FAA0F;KAC7F;CACO,CAAC;AAQX;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAY,EAAE,IAAa;IAC3D,MAAM,GAAG,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;IAClC,MAAM,GAAG,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9C,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,GAAG,GAAG,EAAE,EAAE,CAAC;IAChD,OAAO;QACL,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,OAAO,EAAE,GAAG,MAAM,GAAG,GAAG,OAAO,GAAG,CAAC,IAAI,gBAAgB,GAAG,CAAC,MAAM,EAAE;KACpE,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
/**
|
|
3
|
+
* Shared `chainId` input param for every read tool. Optional — when omitted the
|
|
4
|
+
* MCP's default chain is used, so adding this to a tool is non-breaking.
|
|
5
|
+
* Write tools already carry their own copy with broadcast-specific wording.
|
|
6
|
+
*/
|
|
7
|
+
export declare const chainIdParam: z.ZodOptional<z.ZodNumber>;
|
|
8
|
+
//# sourceMappingURL=params.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"params.d.ts","sourceRoot":"","sources":["../../src/lib/params.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;GAIG;AACH,eAAO,MAAM,YAAY,4BAQtB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
/**
|
|
3
|
+
* Shared `chainId` input param for every read tool. Optional — when omitted the
|
|
4
|
+
* MCP's default chain is used, so adding this to a tool is non-breaking.
|
|
5
|
+
* Write tools already carry their own copy with broadcast-specific wording.
|
|
6
|
+
*/
|
|
7
|
+
export const chainIdParam = z
|
|
8
|
+
.number()
|
|
9
|
+
.int()
|
|
10
|
+
.positive()
|
|
11
|
+
.optional()
|
|
12
|
+
.describe("Chain id to read from (56 = BSC mainnet, 97 = BSC testnet). Defaults to the MCP's default chain. " +
|
|
13
|
+
"Rejects if no RPC is configured for the requested chain.");
|
|
14
|
+
//# sourceMappingURL=params.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"params.js","sourceRoot":"","sources":["../../src/lib/params.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC;KAC1B,MAAM,EAAE;KACR,GAAG,EAAE;KACL,QAAQ,EAAE;KACV,QAAQ,EAAE;KACV,QAAQ,CACP,mGAAmG;IACjG,0DAA0D,CAC7D,CAAC"}
|
|
@@ -42,9 +42,37 @@ export interface CatalogBuilder {
|
|
|
42
42
|
}
|
|
43
43
|
/**
|
|
44
44
|
* Registry keyed by the short `proposalType` accepted by `dexe_proposal_create`.
|
|
45
|
-
* Extend this to wire another catalog type into the composite.
|
|
45
|
+
* Extend this to wire another catalog type into the composite. Aliases point at
|
|
46
|
+
* the same builder object (validators_allocation ≡ manage_validators;
|
|
47
|
+
* enable_staking ≡ new_proposal_type with StakingProposal among executors —
|
|
48
|
+
* matching the frontend, which reuses useGovPoolCreateProposalType).
|
|
46
49
|
*/
|
|
47
50
|
export declare const PROPOSAL_BUILDERS: Record<string, CatalogBuilder>;
|
|
51
|
+
export interface BuiltInternalProposal {
|
|
52
|
+
/** GovValidators internal type: 0 ChangeBalances, 1 ChangeSettings, 2 MonthlyWithdraw, 3 OffchainProposal. */
|
|
53
|
+
internalType: 0 | 1 | 2 | 3;
|
|
54
|
+
/** Selector + abi-encoded args for the internal executor method ("0x" for type 3). */
|
|
55
|
+
data: string;
|
|
56
|
+
category: string;
|
|
57
|
+
metadataExtra: Record<string, unknown>;
|
|
58
|
+
summary: string;
|
|
59
|
+
}
|
|
60
|
+
export interface InternalCatalogBuilder {
|
|
61
|
+
schema: z.ZodTypeAny;
|
|
62
|
+
build: (params: unknown) => BuiltInternalProposal;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Internal proposals do NOT go through GovPool.createProposalAndVote — they are
|
|
66
|
+
* created on GovValidators (validators-only voting, no deposit). The flow layer
|
|
67
|
+
* routes these to a single createInternalProposal payload.
|
|
68
|
+
*/
|
|
69
|
+
export declare const INTERNAL_PROPOSAL_BUILDERS: Record<string, InternalCatalogBuilder>;
|
|
70
|
+
/**
|
|
71
|
+
* Off-chain proposal types live on the DeXe backend (api.dexe.io), not on any
|
|
72
|
+
* contract — `dexe_proposal_create` rejects them with the exact alternative
|
|
73
|
+
* flow instead of a dead-end.
|
|
74
|
+
*/
|
|
75
|
+
export declare const OFFCHAIN_FLOW_TYPES: readonly ["offchain_single_option", "offchain_multi_option", "offchain_for_against"];
|
|
48
76
|
/** proposalType values `dexe_proposal_create` accepts directly. */
|
|
49
|
-
export declare const FLOW_PROPOSAL_TYPES: readonly ["modify_dao_profile", "custom", ...string[]];
|
|
77
|
+
export declare const FLOW_PROPOSAL_TYPES: readonly ["modify_dao_profile", "custom", ...string[], "offchain_single_option", "offchain_multi_option", "offchain_for_against"];
|
|
50
78
|
//# sourceMappingURL=proposalBuilders.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proposalBuilders.d.ts","sourceRoot":"","sources":["../../src/lib/proposalBuilders.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"proposalBuilders.d.ts","sourceRoot":"","sources":["../../src/lib/proposalBuilders.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAiFvD,MAAM,WAAW,oBAAoB;IACnC,mEAAmE;IACnE,YAAY,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACnE,yDAAyD;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4EAA4E;IAC5E,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,mDAAmD;IACnD,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,WAAW,CAAC;IACjB,uEAAuE;IACvE,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,CAAC,CAAC,UAAU,CAAC;IACrB,KAAK,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,KAAK,OAAO,CAAC,oBAAoB,CAAC,CAAC;CAC9E;AA0oBD;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CA8B5D,CAAC;AAIF,MAAM,WAAW,qBAAqB;IACpC,8GAA8G;IAC9G,YAAY,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5B,sFAAsF;IACtF,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,CAAC,CAAC,UAAU,CAAC;IACrB,KAAK,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,qBAAqB,CAAC;CACnD;AAID;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAgF7E,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,sFAItB,CAAC;AAEX,mEAAmE;AACnE,eAAO,MAAM,mBAAmB,mIAMtB,CAAC"}
|