dexe-mcp 0.4.0 → 0.5.1
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 +102 -0
- package/README.md +9 -5
- package/dist/tools/inbox.d.ts +4 -0
- package/dist/tools/inbox.d.ts.map +1 -0
- package/dist/tools/inbox.js +251 -0
- package/dist/tools/inbox.js.map +1 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +6 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/otc.d.ts.map +1 -1
- package/dist/tools/otc.js +29 -6
- package/dist/tools/otc.js.map +1 -1
- package/dist/tools/predict.d.ts +4 -0
- package/dist/tools/predict.d.ts.map +1 -0
- package/dist/tools/predict.js +209 -0
- package/dist/tools/predict.js.map +1 -0
- package/dist/tools/proposalBuildComplex.d.ts +92 -4
- package/dist/tools/proposalBuildComplex.d.ts.map +1 -1
- package/dist/tools/proposalBuildComplex.js +78 -7
- package/dist/tools/proposalBuildComplex.js.map +1 -1
- package/dist/tools/simulate.d.ts +27 -0
- package/dist/tools/simulate.d.ts.map +1 -0
- package/dist/tools/simulate.js +278 -0
- package/dist/tools/simulate.js.map +1 -0
- package/dist/tools/subgraph.d.ts.map +1 -1
- package/dist/tools/subgraph.js +303 -163
- package/dist/tools/subgraph.js.map +1 -1
- package/package.json +2 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,107 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.5.1
|
|
4
|
+
|
|
5
|
+
OTC tier rate-scaling guardrails. Production incident on 2026-05-04: a sale
|
|
6
|
+
proposal shipped with `exchangeRates: ["1e17"]` for "0.10 USDT/HELIO" — the
|
|
7
|
+
on-chain formula is `saleAmount = purchaseAmount * PRECISION / rate` with
|
|
8
|
+
`PRECISION = 10^25` (see `contracts/core/Globals.sol`), so the tier promised
|
|
9
|
+
buyers `10^7` more sale tokens than the tier could provide. Buys reverted
|
|
10
|
+
with `TSP: insufficient sale token amount` and the tiers had to be
|
|
11
|
+
recovered via `offTiers + recover`.
|
|
12
|
+
|
|
13
|
+
### Added
|
|
14
|
+
|
|
15
|
+
- New optional tier field `purchaseRatios: string[]` — human decimal ratios
|
|
16
|
+
(`"0.10"` = 0.10 purchase tokens per 1 sale token), auto-scaled with
|
|
17
|
+
`parseUnits(r, 25)`. Mutually exclusive with `exchangeRates`.
|
|
18
|
+
- Exported `PRECISION_DECIMALS = 25` constant from `proposalBuildComplex`.
|
|
19
|
+
|
|
20
|
+
### Changed
|
|
21
|
+
|
|
22
|
+
- `tierSchema.exchangeRates` is now optional. The schema enforces via
|
|
23
|
+
`.refine()` that exactly one of `exchangeRates` (raw 25-precision wei)
|
|
24
|
+
or `purchaseRatios` (decimals) is provided.
|
|
25
|
+
- `buildTierTuple` normalizes both shapes into raw 25-precision
|
|
26
|
+
`bigint[]` before encoding.
|
|
27
|
+
|
|
28
|
+
### Validation
|
|
29
|
+
|
|
30
|
+
- Raw `exchangeRates[i] < 10^18` now throws with a hint citing
|
|
31
|
+
`PRECISION = 10^25` — catches the unscaled-ratio mistake at build time
|
|
32
|
+
instead of on-chain. Existing fixtures (rates ≥ 1e18) remain
|
|
33
|
+
byte-identical (verified via `npm run test:compat`).
|
|
34
|
+
|
|
35
|
+
## 0.5.0
|
|
36
|
+
|
|
37
|
+
Transaction simulator gate, multi-DAO inbox + forecast + OTC discovery, and
|
|
38
|
+
frontend byte-diff harness. Adds preflight tools (catch reverts before
|
|
39
|
+
broadcast), the read-side "what needs my attention" loop (inbox +
|
|
40
|
+
forecast), OTC tier discovery, and a fixture-driven calldata-equivalence
|
|
41
|
+
test against the production DeXe frontend. **125 tools** total
|
|
42
|
+
(119 → 125).
|
|
43
|
+
|
|
44
|
+
### Added
|
|
45
|
+
|
|
46
|
+
**Simulator tools (3)**
|
|
47
|
+
- `dexe_sim_calldata` — generic preflight. Returns `{ success, revertReason?, returnData?, gasEstimate? }`. Decodes `Error(string)` (selector `0x08c379a0`) and `Panic(uint256)` revert payloads. Optional `from`/`value`/`blockTag` overrides.
|
|
48
|
+
- `dexe_sim_proposal` — preflight `GovPool.execute(proposalId)`. Reads proposal state first; refuses to sim unless `SucceededFor` (idx 4). Surfaces `proposalState` + `proposalStateIndex` for diagnostics.
|
|
49
|
+
- `dexe_sim_buy` — preflight `TokenSaleProposal.buy(...)`. Native path (paymentToken = `0x0`) sets `value=amount`. ERC20 path also reads current allowance and reports `willNeedApprove: true` when allowance < amount.
|
|
50
|
+
|
|
51
|
+
**Integration**
|
|
52
|
+
- `dexe_otc_buyer_buy` — new `simulateFirst?: boolean` flag. When true, runs `dexe_sim_calldata` on the encoded `buy()` payload before the broadcast/return path; aborts with the revert reason on failure. Ignored when `dryRun: true`.
|
|
53
|
+
|
|
54
|
+
**Frontend ↔ MCP byte-diff harness**
|
|
55
|
+
- `tests/compat/diff-otc.mjs` — fixture-driven runner. For each `tests/compat/fixtures/otc-frontend-*.json` it calls `buildTokenSaleMultiActions(input)` from compiled `dist/`, byte-compares every `actions[i].data` against the fixture, and on mismatch prints an ABI-decoded field-level diff via `Interface.parseTransaction`. Exit 0 = all green, 1 = at least one diverged. Wired as `npm run test:compat`.
|
|
56
|
+
- `tests/compat/gen-otc-fixtures.mjs` — fixture generator. Runs an *independent* synthesizer that mirrors the frontend hook's pipeline (lines 33-130 of `useGovPoolCreateTokenSaleProposal.ts`) **and** the MCP helper, asserts byte-identical calldata, then writes the fixture using the helper's output. Refuses to write on synth/helper divergence. Re-run after any helper refactor or frontend ABI bump.
|
|
57
|
+
- Three fixtures covering the canonical OTC shapes:
|
|
58
|
+
- `otc-frontend-1tier-open.json` — single open tier (no participation gating).
|
|
59
|
+
- `otc-frontend-2tier-merkle.json` — open + `MerkleWhitelist` (auto-derived root, no `addToWhitelist`).
|
|
60
|
+
- `otc-frontend-2tier-plain-whitelist.json` — open + plain `Whitelist` (auto-appended `addToWhitelist` action).
|
|
61
|
+
- `tests/compat/CAPTURE.md` — runbook documenting both capture methods (synthesizer + live WalletConnect intercept) and the form-field → TierSpec field map for re-capture.
|
|
62
|
+
|
|
63
|
+
**Docs + scenarios**
|
|
64
|
+
- `docs/SIMULATOR.md` — explains the three sim tools, response shapes, revert decoding, integration with `dexe_otc_buyer_buy`, and the limits of `eth_call`-based simulation (pending state, reorg risk, L2 divergence).
|
|
65
|
+
- `S47-sim-calldata-balance` — exercises `dexe_sim_calldata` calling `balanceOf` on the active chain's first allowlisted token; verifies `success: true` and a 32-byte return.
|
|
66
|
+
- `S48-sim-buy-no-tier` — exercises `dexe_sim_buy` against Glacier's TokenSaleProposal on BSC testnet with `tierId=999`; verifies `success: false` + revert reason set.
|
|
67
|
+
|
|
68
|
+
**Subgraph trio — read-side "what needs my attention" tools (3)**
|
|
69
|
+
- `dexe_user_inbox` — multi-DAO attention aggregator. Per DAO, surfaces
|
|
70
|
+
`unvotedProposal` items (Voting state + zero personal vote), `claimableRewards`
|
|
71
|
+
(non-zero pending rewards across the scanned window), and `lockedDeposit`
|
|
72
|
+
(UserKeeper.tokenBalance > 0). Mainnet auto-discovers DAOs via the pools
|
|
73
|
+
subgraph (`voterInPools` for the user, limit 50). Testnet requires explicit
|
|
74
|
+
`daos[]` since chain 97 has no subgraph. Read-only. See `docs/INBOX.md`.
|
|
75
|
+
- `dexe_proposal_forecast` — predictive pass-rate. Reads latest 10 proposals via
|
|
76
|
+
`getProposals(0, 10)` + their final states, computes historical pass-rate +
|
|
77
|
+
average For-vote weight, and returns `{ quorum, historicalPassRate, risks,
|
|
78
|
+
recommendation }`. `recommendation` is `likelyPass` / `borderline` /
|
|
79
|
+
`likelyFail` based on `hitProbability = clamp(projectedFor / required, 0, 1)`.
|
|
80
|
+
Mainnet only by default; pass `forceRpcOnly: true` to run on testnet.
|
|
81
|
+
- `dexe_otc_list_sales_for_dao` — OTC tier discovery. Reads `latestTierId()`
|
|
82
|
+
then `getTierViews(0, latestTierId)` on a DAO's TokenSaleProposal helper.
|
|
83
|
+
Returns tiers tagged with `status` (`upcoming` / `active` / `ended`)
|
|
84
|
+
computed against `block.timestamp`, plus aggregate counts. Works on both
|
|
85
|
+
chain 56 and chain 97 — no subgraph required. `totalSold` returns `null`
|
|
86
|
+
in v1 (not exposed via `getTierViews`).
|
|
87
|
+
|
|
88
|
+
**Tests**
|
|
89
|
+
- `S50-otc-list-for-dao.json` — chain 97, validates tier-list shape on
|
|
90
|
+
Glacier (zero tiers expected).
|
|
91
|
+
- `S51-inbox-with-supplied-daos.json` — chain 97/56, exercises
|
|
92
|
+
`dexe_user_inbox` with explicit `daos[]`.
|
|
93
|
+
|
|
94
|
+
### Notes
|
|
95
|
+
|
|
96
|
+
- Compat fixtures are **synthesized** for v1: the synthesizer encodes via the same canonical `TokenSaleProposal` ABI signature both the frontend artifact and `TOKEN_SALE_PROPOSAL_ABI` regenerate from (post-Bug #25 fix). Live WalletConnect-intercept re-cert is documented in `CAPTURE.md` and remains the ground-truth check after frontend major bumps.
|
|
97
|
+
- All three fixtures round-trip cleanly through `Interface.decodeFunctionData`.
|
|
98
|
+
|
|
99
|
+
### Follow-ups (v0.5.1+)
|
|
100
|
+
|
|
101
|
+
- `dexe_otc_list_active_sales` — cross-DAO global live-sale list. Requires a subgraph entity that doesn't exist yet.
|
|
102
|
+
- Per-DAO TokenSaleProposal helper auto-discovery from registry / deploy receipt so callers don't need to thread the address.
|
|
103
|
+
- State-override allowance for ERC20 sim path (currently flags `willNeedApprove`).
|
|
104
|
+
|
|
3
105
|
## 0.4.0
|
|
4
106
|
|
|
5
107
|
OTC DAO support. Adds the calldata builders, merkle utilities, and four
|
package/README.md
CHANGED
|
@@ -6,7 +6,7 @@ MCP server that gives AI agents **full DeXe Protocol DAO operations coverage**
|
|
|
6
6
|
|
|
7
7
|
**Two write modes, calldata-default.** Every write tool returns a ready-to-sign `TxPayload = { to, data, value, chainId, description }` that the agent's wallet (MetaMask, Safe, hardware, etc.) signs and submits — no key in the MCP. Power users who *want* the server to sign and broadcast can opt in by setting `DEXE_PRIVATE_KEY`; that unlocks `dexe_tx_send`, `dexe_tx_status`, and the auto-broadcast branch of `dexe_proposal_create` / `dexe_proposal_vote_and_execute`. Default stays calldata-only.
|
|
8
8
|
|
|
9
|
-
**
|
|
9
|
+
**125 tools** across 14 groups. Call `dexe_proposal_catalog` at runtime for the full proposal-type map, or browse the [catalog](#tool-catalog) below.
|
|
10
10
|
|
|
11
11
|
> **End-to-end coverage.** Every proposal-builder tool ships with a swarm-test scenario that exercises it on BSC testnet. Latest pass: **41/41 scenarios green**, ~200 broadcasts validated against two fixture DAOs (Glacier 50%-quorum + Sentinel 5%-quorum-with-validators). See [Swarm test harness](#swarm-test-harness) below.
|
|
12
12
|
|
|
@@ -113,7 +113,7 @@ All optional. Tools that need a missing variable fail with a clear message point
|
|
|
113
113
|
|
|
114
114
|
Full docs in [`docs/`](./docs):
|
|
115
115
|
|
|
116
|
-
- [`docs/TOOLS.md`](./docs/TOOLS.md) — complete catalog of all
|
|
116
|
+
- [`docs/TOOLS.md`](./docs/TOOLS.md) — complete catalog of all 125 tools, organized by category, with one-line descriptions and required envs per tool.
|
|
117
117
|
- [`docs/USAGE.md`](./docs/USAGE.md) — 10 worked examples (deploy DAO, create proposals, vote, delegate, validator chamber, decode calldata, off-chain proposals, multicall batching). Copy-pasteable JSON.
|
|
118
118
|
- [`docs/ENVIRONMENT.md`](./docs/ENVIRONMENT.md) — full env-var reference: minimum block to get started, per-category requirements, calldata vs signer mode, chain-specific config, IPFS gateway rationale, subgraph migration, swarm harness envs, common pitfalls.
|
|
119
119
|
|
|
@@ -127,14 +127,18 @@ Full docs in [`docs/`](./docs):
|
|
|
127
127
|
| IPFS | 6 | Pinata uploads, gateway fetch, CID computation |
|
|
128
128
|
| DAO deploy | 1 | `dexe_dao_build_deploy` (encodes `PoolFactory.deployGovPool` with full nested struct + predicted addr wiring) |
|
|
129
129
|
| Proposal catalog + primitives | 5 | `dexe_proposal_catalog` enumerates **all 33** types; primitives: `_build_external`, `_build_internal`, `_build_custom_abi`, `_build_offchain` |
|
|
130
|
-
| External proposal wrappers |
|
|
130
|
+
| External proposal wrappers | 20 | Token transfer / distribution / sale (single + multi-tier), treasury withdraw, validators, experts, staking tier, math model, blacklist, reward multiplier, apply to DAO, modify profile, change voting settings, new proposal type, addToWhitelist, etc. |
|
|
131
131
|
| Internal validator wrappers | 4 | `_change_validator_balances`, `_change_validator_settings`, `_monthly_withdraw`, `_offchain_internal_proposal` |
|
|
132
132
|
| Off-chain backend | 8 | `_offchain_single_option/_multi_option/_for_against/_settings`, auth flow (`_auth_request_nonce`, `_auth_login_request`), `_offchain_build_vote/_cancel_vote` |
|
|
133
133
|
| Vote / stake / delegate / execute / claim | 16 | `_vote_build_*` family — every direct EOA write on GovPool / Validators |
|
|
134
134
|
| Composite signing flows | 4 | `_proposal_create`, `_proposal_vote_and_execute`, `_tx_send`, `_tx_status` (all opt-in via `DEXE_PRIVATE_KEY`) |
|
|
135
|
-
| Subgraph reads |
|
|
135
|
+
| Subgraph reads | 7 | DAO list, members, experts, user activity, delegation map, distribution status, OTC sale tiers per DAO (decentralized network endpoints + RPC fallback) |
|
|
136
|
+
| Merkle utility | 2 | `dexe_merkle_build`, `dexe_merkle_proof` — OZ `StandardMerkleTree`-compatible (sorted-pair commutative keccak, double-hash leaf) |
|
|
137
|
+
| OTC composites | 4 | `dexe_otc_dao_open_sale`, `_buyer_status`, `_buyer_buy`, `_buyer_claim_all` — full project-owner + buyer flows over `TokenSaleProposal`. See [`docs/OTC.md`](./docs/OTC.md) |
|
|
138
|
+
| Simulator | 3 | `dexe_sim_calldata`, `_sim_proposal`, `_sim_buy` — `eth_call`-based preflight with revert-reason decoding. See [`docs/SIMULATOR.md`](./docs/SIMULATOR.md) |
|
|
139
|
+
| Multi-DAO inbox + forecast | 2 | `dexe_user_inbox` — pending items across N DAOs (unvoted proposals, claimable rewards, locked deposits). `_proposal_forecast` — pass-rate prediction with quorum projection + risk flags. See [`docs/INBOX.md`](./docs/INBOX.md) |
|
|
136
140
|
|
|
137
|
-
Total:
|
|
141
|
+
Total: **125**. Per-tool descriptions, args, return shapes → [`docs/TOOLS.md`](./docs/TOOLS.md).
|
|
138
142
|
|
|
139
143
|
## Swarm test harness
|
|
140
144
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inbox.d.ts","sourceRoot":"","sources":["../../src/tools/inbox.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAmFhD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,GAAG,IAAI,CA2M5E"}
|
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { Interface, isAddress, getAddress } from "ethers";
|
|
3
|
+
import { RpcProvider } from "../rpc.js";
|
|
4
|
+
import { multicall } from "../lib/multicall.js";
|
|
5
|
+
import { gqlRequest } from "../lib/subgraph.js";
|
|
6
|
+
import { proposalStateLabel } from "../lib/govEnums.js";
|
|
7
|
+
/**
|
|
8
|
+
* dexe_user_inbox — multi-DAO attention aggregator.
|
|
9
|
+
*
|
|
10
|
+
* Per DAO, surfaces three kinds of pending items for `user`:
|
|
11
|
+
* 1. unvotedProposal — proposal in Voting state where user has zero personal vote
|
|
12
|
+
* 2. claimableRewards — proposals user voted on with a positive pendingRewards balance
|
|
13
|
+
* 3. lockedDeposit — UserKeeper.tokenBalance(user, PersonalVote).balance > 0
|
|
14
|
+
* (i.e. tokens still parked in the DAO and reclaimable)
|
|
15
|
+
*
|
|
16
|
+
* When `daos` is omitted on mainnet, the pools subgraph is queried for DAOs
|
|
17
|
+
* the user has a `voterInPool` row in (limit 50). On testnet (no subgraph),
|
|
18
|
+
* `daos[]` is required.
|
|
19
|
+
*/
|
|
20
|
+
// ---------- ABI ----------
|
|
21
|
+
const GOV_POOL_ABI = new Interface([
|
|
22
|
+
"function getHelperContracts() view returns (address settings, address userKeeper, address validators, address poolRegistry, address votePower)",
|
|
23
|
+
"function getProposals(uint256 offset, uint256 limit) view returns (tuple(tuple(tuple(bool earlyCompletion, bool delegatedVotingAllowed, bool validatorsVote, uint64 duration, uint64 durationValidators, uint64 executionDelay, uint128 quorum, uint128 quorumValidators, uint256 minVotesForVoting, uint256 minVotesForCreating, tuple(address rewardToken, uint256 creationReward, uint256 executionReward, uint256 voteRewardsCoefficient) rewardsInfo, string executorDescription) settings, uint64 voteEnd, uint64 executeAfter, bool executed, uint256 votesFor, uint256 votesAgainst, uint256 rawVotesFor, uint256 rawVotesAgainst, uint256 givenRewards) core, string descriptionURL, tuple(address executor, uint256 value, bytes data)[] actionsOnFor, tuple(address executor, uint256 value, bytes data)[] actionsOnAgainst)[] proposals, tuple(uint256 proposalId, uint256 executeAfter, uint256 quorum, uint256 rawVotesFor, uint256 rawVotesAgainst, bool executed, tuple(bool earlyCompletion, bool delegatedVotingAllowed, bool validatorsVote, uint64 duration, uint64 durationValidators, uint64 executionDelay, uint128 quorum, uint128 quorumValidators, uint256 minVotesForVoting, uint256 minVotesForCreating, tuple(address rewardToken, uint256 creationReward, uint256 executionReward, uint256 voteRewardsCoefficient) rewardsInfo, string executorDescription) settings)[] validatorProposals, uint8[] proposalStates, uint256[] requiredQuorums, uint256[] requiredValidatorsQuorums)",
|
|
24
|
+
"function getTotalVotes(uint256 proposalId, address voter, uint8 voteType) view returns (uint256 totalVoted, uint256 totalRawVoted, uint256 votesForNow, bool isVoteFor)",
|
|
25
|
+
"function getPendingRewards(address user, uint256[] proposalIds) view returns (tuple(address[] tokens, uint256[] amounts, uint256[] proposalIds))",
|
|
26
|
+
]);
|
|
27
|
+
const USER_KEEPER_ABI = new Interface([
|
|
28
|
+
"function tokenAddress() view returns (address)",
|
|
29
|
+
"function tokenBalance(address voter, uint8 voteType) view returns (uint256 balance, uint256 ownedBalance)",
|
|
30
|
+
]);
|
|
31
|
+
// Tries to read pendingRewards using the canonical ABI; if the contract
|
|
32
|
+
// version doesn't expose it, we silently skip and only surface unvoted +
|
|
33
|
+
// lockedDeposit. The subgraph would be the next-best signal.
|
|
34
|
+
const PENDING_REWARDS_ABI = new Interface([
|
|
35
|
+
"function getPendingRewards(address user, uint256[] proposalIds) view returns (tuple(address[] tokens, uint256[] amounts, uint256[] proposalIds) rewards)",
|
|
36
|
+
]);
|
|
37
|
+
// ---------- subgraph ----------
|
|
38
|
+
const USER_DAOS_QUERY = /* GraphQL */ `
|
|
39
|
+
query UserDaos($user: String!, $first: Int!) {
|
|
40
|
+
voterInPools(where: { voter_: { id: $user } }, first: $first) {
|
|
41
|
+
pool {
|
|
42
|
+
id
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
`;
|
|
47
|
+
// ---------- helpers ----------
|
|
48
|
+
function err(message) {
|
|
49
|
+
return { content: [{ type: "text", text: message }], isError: true };
|
|
50
|
+
}
|
|
51
|
+
function ok(data) {
|
|
52
|
+
return {
|
|
53
|
+
content: [
|
|
54
|
+
{
|
|
55
|
+
type: "text",
|
|
56
|
+
text: JSON.stringify(data, (_k, v) => (typeof v === "bigint" ? v.toString() : v), 2),
|
|
57
|
+
},
|
|
58
|
+
],
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
// ---------- register ----------
|
|
62
|
+
export function registerInboxTools(server, ctx) {
|
|
63
|
+
const rpc = new RpcProvider(ctx.config);
|
|
64
|
+
server.registerTool("dexe_user_inbox", {
|
|
65
|
+
title: "Multi-DAO attention aggregator",
|
|
66
|
+
description: "Aggregates pending items across N DAOs for a user: unvoted proposals in Voting state, claimable rewards, and locked deposits. " +
|
|
67
|
+
"Mainnet: omits `daos` to auto-discover via the pools subgraph (limit 50). Testnet: `daos[]` required (no subgraph). " +
|
|
68
|
+
"Read-only.",
|
|
69
|
+
inputSchema: {
|
|
70
|
+
user: z.string().describe("User wallet address"),
|
|
71
|
+
daos: z
|
|
72
|
+
.array(z.string())
|
|
73
|
+
.optional()
|
|
74
|
+
.describe("Optional explicit DAO list. Required on testnet (chain 97)."),
|
|
75
|
+
proposalScanLimit: z
|
|
76
|
+
.number()
|
|
77
|
+
.int()
|
|
78
|
+
.min(1)
|
|
79
|
+
.max(100)
|
|
80
|
+
.default(20)
|
|
81
|
+
.describe("Per-DAO recent-proposal scan window for unvoted/rewards detection"),
|
|
82
|
+
},
|
|
83
|
+
}, async ({ user, daos, proposalScanLimit = 20 }) => {
|
|
84
|
+
if (!isAddress(user))
|
|
85
|
+
return err(`Invalid user: ${user}`);
|
|
86
|
+
const provider = rpc.requireProvider();
|
|
87
|
+
const userAddr = getAddress(user);
|
|
88
|
+
// ----- DAO list resolution -----
|
|
89
|
+
let resolvedDaos = [];
|
|
90
|
+
if (daos && daos.length > 0) {
|
|
91
|
+
for (const d of daos) {
|
|
92
|
+
if (!isAddress(d))
|
|
93
|
+
return err(`Invalid dao: ${d}`);
|
|
94
|
+
resolvedDaos.push(getAddress(d));
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
const url = ctx.config.subgraphPoolsUrl;
|
|
99
|
+
if (!url) {
|
|
100
|
+
return err("No `daos` supplied and DEXE_SUBGRAPH_POOLS_URL is not set (testnet has no subgraph). Pass `daos: [...]` explicitly.");
|
|
101
|
+
}
|
|
102
|
+
try {
|
|
103
|
+
const data = await gqlRequest(url, USER_DAOS_QUERY, {
|
|
104
|
+
user: userAddr.toLowerCase(),
|
|
105
|
+
first: 50,
|
|
106
|
+
});
|
|
107
|
+
resolvedDaos = data.voterInPools.map((v) => getAddress(v.pool.id));
|
|
108
|
+
}
|
|
109
|
+
catch (e) {
|
|
110
|
+
return err(`Subgraph DAO discovery failed: ${e instanceof Error ? e.message : String(e)}`);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
const pendingItems = [];
|
|
114
|
+
let daosWithItems = 0;
|
|
115
|
+
// ----- per-DAO scan -----
|
|
116
|
+
for (const dao of resolvedDaos) {
|
|
117
|
+
const items = [];
|
|
118
|
+
try {
|
|
119
|
+
// Step 1: fetch helpers + recent proposals in one multicall.
|
|
120
|
+
const [helpersR, proposalsR] = await multicall(provider, [
|
|
121
|
+
{ target: dao, iface: GOV_POOL_ABI, method: "getHelperContracts", args: [], allowFailure: true },
|
|
122
|
+
{
|
|
123
|
+
target: dao,
|
|
124
|
+
iface: GOV_POOL_ABI,
|
|
125
|
+
method: "getProposals",
|
|
126
|
+
args: [0n, BigInt(proposalScanLimit)],
|
|
127
|
+
allowFailure: true,
|
|
128
|
+
},
|
|
129
|
+
]);
|
|
130
|
+
if (!helpersR?.success)
|
|
131
|
+
continue;
|
|
132
|
+
const helpers = helpersR.value;
|
|
133
|
+
const userKeeper = helpers.userKeeper;
|
|
134
|
+
// Step 2: read deposit balance + token address.
|
|
135
|
+
const [tokenAddrR, balanceR] = await multicall(provider, [
|
|
136
|
+
{ target: userKeeper, iface: USER_KEEPER_ABI, method: "tokenAddress", args: [], allowFailure: true },
|
|
137
|
+
{
|
|
138
|
+
target: userKeeper,
|
|
139
|
+
iface: USER_KEEPER_ABI,
|
|
140
|
+
method: "tokenBalance",
|
|
141
|
+
args: [userAddr, 0],
|
|
142
|
+
allowFailure: true,
|
|
143
|
+
},
|
|
144
|
+
]);
|
|
145
|
+
const govToken = tokenAddrR?.success ? tokenAddrR.value : undefined;
|
|
146
|
+
if (balanceR?.success) {
|
|
147
|
+
const bal = balanceR.value;
|
|
148
|
+
if (bal.balance > 0n) {
|
|
149
|
+
items.push({
|
|
150
|
+
dao,
|
|
151
|
+
type: "lockedDeposit",
|
|
152
|
+
amount: bal.balance.toString(),
|
|
153
|
+
govToken,
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
// Step 3: walk recent proposals for unvoted in Voting state, and for
|
|
158
|
+
// claimable rewards on already-voted proposals.
|
|
159
|
+
if (proposalsR?.success) {
|
|
160
|
+
const raw = proposalsR.value;
|
|
161
|
+
const proposalIds = [];
|
|
162
|
+
const votingIds = [];
|
|
163
|
+
for (let i = 0; i < raw.proposals.length; i++) {
|
|
164
|
+
const id = String(i + 1);
|
|
165
|
+
proposalIds.push(id);
|
|
166
|
+
const stateIdx = Number(raw.proposalStates[i] ?? 9);
|
|
167
|
+
const stateName = proposalStateLabel(stateIdx);
|
|
168
|
+
if (stateName === "Voting" || stateName === "ValidatorVoting") {
|
|
169
|
+
votingIds.push({ id, deadline: raw.proposals[i].core.voteEnd.toString() });
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
// For each voting proposal, ask getTotalVotes → if voter has zero,
|
|
173
|
+
// surface as unvoted.
|
|
174
|
+
if (votingIds.length > 0) {
|
|
175
|
+
const calls = votingIds.map((p) => ({
|
|
176
|
+
target: dao,
|
|
177
|
+
iface: GOV_POOL_ABI,
|
|
178
|
+
method: "getTotalVotes",
|
|
179
|
+
args: [BigInt(p.id), userAddr, 0],
|
|
180
|
+
allowFailure: true,
|
|
181
|
+
}));
|
|
182
|
+
const res = await multicall(provider, calls);
|
|
183
|
+
for (let i = 0; i < votingIds.length; i++) {
|
|
184
|
+
const r = res[i];
|
|
185
|
+
if (!r?.success)
|
|
186
|
+
continue;
|
|
187
|
+
const v = r.value;
|
|
188
|
+
if (v.totalVoted === 0n) {
|
|
189
|
+
items.push({
|
|
190
|
+
dao,
|
|
191
|
+
type: "unvotedProposal",
|
|
192
|
+
proposalId: votingIds[i].id,
|
|
193
|
+
deadline: votingIds[i].deadline,
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
// Pending rewards across all scanned proposals (best-effort —
|
|
199
|
+
// contracts that don't expose `getPendingRewards` will silently
|
|
200
|
+
// produce an empty list).
|
|
201
|
+
if (proposalIds.length > 0) {
|
|
202
|
+
const [rewardsR] = await multicall(provider, [
|
|
203
|
+
{
|
|
204
|
+
target: dao,
|
|
205
|
+
iface: PENDING_REWARDS_ABI,
|
|
206
|
+
method: "getPendingRewards",
|
|
207
|
+
args: [userAddr, proposalIds.map((s) => BigInt(s))],
|
|
208
|
+
allowFailure: true,
|
|
209
|
+
},
|
|
210
|
+
]);
|
|
211
|
+
if (rewardsR?.success) {
|
|
212
|
+
const rw = rewardsR.value;
|
|
213
|
+
const r = rw.rewards;
|
|
214
|
+
if (r.amounts && r.amounts.length > 0) {
|
|
215
|
+
let total = 0n;
|
|
216
|
+
for (const a of r.amounts)
|
|
217
|
+
total += a;
|
|
218
|
+
if (total > 0n) {
|
|
219
|
+
items.push({
|
|
220
|
+
dao,
|
|
221
|
+
type: "claimableRewards",
|
|
222
|
+
proposalIds: r.proposalIds.map((p) => p.toString()),
|
|
223
|
+
totalAmount: total.toString(),
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
catch {
|
|
232
|
+
// Best-effort per DAO — skip on failure, don't poison the inbox.
|
|
233
|
+
continue;
|
|
234
|
+
}
|
|
235
|
+
if (items.length > 0)
|
|
236
|
+
daosWithItems++;
|
|
237
|
+
pendingItems.push(...items);
|
|
238
|
+
}
|
|
239
|
+
const criticalCount = pendingItems.filter((i) => i.type === "unvotedProposal").length;
|
|
240
|
+
return ok({
|
|
241
|
+
user: userAddr,
|
|
242
|
+
pendingItems,
|
|
243
|
+
summary: {
|
|
244
|
+
totalDaos: resolvedDaos.length,
|
|
245
|
+
daosWithItems,
|
|
246
|
+
criticalCount,
|
|
247
|
+
},
|
|
248
|
+
});
|
|
249
|
+
});
|
|
250
|
+
}
|
|
251
|
+
//# sourceMappingURL=inbox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inbox.js","sourceRoot":"","sources":["../../src/tools/inbox.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AA8B/C;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CA+BvE"}
|
package/dist/tools/index.js
CHANGED
|
@@ -21,6 +21,9 @@ import { registerTxTools } from "./txSend.js";
|
|
|
21
21
|
import { registerFlowTools } from "./flow.js";
|
|
22
22
|
import { registerMerkleTools } from "./merkle.js";
|
|
23
23
|
import { registerOtcTools } from "./otc.js";
|
|
24
|
+
import { registerSimulateTools } from "./simulate.js";
|
|
25
|
+
import { registerInboxTools } from "./inbox.js";
|
|
26
|
+
import { registerPredictTools } from "./predict.js";
|
|
24
27
|
import { SignerManager } from "../lib/signer.js";
|
|
25
28
|
/**
|
|
26
29
|
* Wire every dexe-mcp tool onto the given server instance. Builds the shared
|
|
@@ -49,9 +52,12 @@ export function registerAll(server, config) {
|
|
|
49
52
|
registerDaoDeployTools(server, ctx);
|
|
50
53
|
registerSubgraphTools(server, ctx);
|
|
51
54
|
registerMerkleTools(server, ctx);
|
|
55
|
+
registerInboxTools(server, ctx);
|
|
56
|
+
registerPredictTools(server, ctx);
|
|
52
57
|
const signer = new SignerManager(config);
|
|
53
58
|
registerTxTools(server, config, signer);
|
|
54
59
|
registerFlowTools(server, ctx, signer);
|
|
55
60
|
registerOtcTools(server, ctx, signer);
|
|
61
|
+
registerSimulateTools(server, ctx, signer);
|
|
56
62
|
}
|
|
57
63
|
//# sourceMappingURL=index.js.map
|
package/dist/tools/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/otc.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"otc.d.ts","sourceRoot":"","sources":["../../src/tools/otc.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"otc.d.ts","sourceRoot":"","sources":["../../src/tools/otc.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAgEjD,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,SAAS,EACjB,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,aAAa,GACpB,IAAI,CA+iBN"}
|
package/dist/tools/otc.js
CHANGED
|
@@ -5,6 +5,7 @@ import { multicall } from "../lib/multicall.js";
|
|
|
5
5
|
import { runProposalCreate, sendOrCollect } from "./flow.js";
|
|
6
6
|
import { buildTokenSaleMultiActions, tierSchema, } from "./proposalBuildComplex.js";
|
|
7
7
|
import { buildAddressMerkleTree, computeLeafHash, verifyProof, } from "../lib/merkleTree.js";
|
|
8
|
+
import { simulateCalldata } from "./simulate.js";
|
|
8
9
|
// ---------- ABI fragments ----------
|
|
9
10
|
const ERC20_ABI = new Interface([
|
|
10
11
|
"function balanceOf(address) view returns (uint256)",
|
|
@@ -281,6 +282,10 @@ export function registerOtcTools(server, ctx, signer) {
|
|
|
281
282
|
whitelistUsers: z.array(z.string()).default([]).describe("Optional whitelist for proof gen"),
|
|
282
283
|
user: z.string().optional(),
|
|
283
284
|
dryRun: z.boolean().default(false).describe("If true, return ordered TxPayloads even when DEXE_PRIVATE_KEY is set."),
|
|
285
|
+
simulateFirst: z
|
|
286
|
+
.boolean()
|
|
287
|
+
.default(false)
|
|
288
|
+
.describe("If true, eth_call-simulate the buy() against live state before broadcasting. Aborts with the revertReason if the sim fails."),
|
|
284
289
|
}, async (input) => {
|
|
285
290
|
if (!isAddress(input.tokenSaleProposal))
|
|
286
291
|
return err(`Invalid tokenSaleProposal`);
|
|
@@ -355,18 +360,35 @@ export function registerOtcTools(server, ctx, signer) {
|
|
|
355
360
|
}
|
|
356
361
|
}
|
|
357
362
|
// buy()
|
|
363
|
+
const buyData = TOKEN_SALE_ABI.encodeFunctionData("buy", [
|
|
364
|
+
tierIdBn,
|
|
365
|
+
input.tokenToBuyWith,
|
|
366
|
+
amountBn,
|
|
367
|
+
proof,
|
|
368
|
+
]);
|
|
358
369
|
payloads.push({
|
|
359
370
|
to: input.tokenSaleProposal,
|
|
360
|
-
data:
|
|
361
|
-
tierIdBn,
|
|
362
|
-
input.tokenToBuyWith,
|
|
363
|
-
amountBn,
|
|
364
|
-
proof,
|
|
365
|
-
]),
|
|
371
|
+
data: buyData,
|
|
366
372
|
value: native ? amountBn.toString() : "0",
|
|
367
373
|
chainId,
|
|
368
374
|
description: `TokenSaleProposal.buy(tier=${tierIdBn}, ${native ? "native" : input.tokenToBuyWith}, ${amountBn})`,
|
|
369
375
|
});
|
|
376
|
+
// Optional simulation gate: preflight the buy() against live state before
|
|
377
|
+
// we ever touch the broadcast path. Skipped on dryRun since dryRun
|
|
378
|
+
// already short-circuits to payload return.
|
|
379
|
+
let simulation;
|
|
380
|
+
if (input.simulateFirst && !input.dryRun) {
|
|
381
|
+
const sim = await simulateCalldata(rpc, {
|
|
382
|
+
to: input.tokenSaleProposal,
|
|
383
|
+
data: buyData,
|
|
384
|
+
value: native ? amountBn.toString() : undefined,
|
|
385
|
+
from: userAddr,
|
|
386
|
+
});
|
|
387
|
+
simulation = sim;
|
|
388
|
+
if (!sim.success) {
|
|
389
|
+
return err(`Simulation failed before broadcast: ${sim.revertReason ?? "unknown revert"}`);
|
|
390
|
+
}
|
|
391
|
+
}
|
|
370
392
|
const result = await sendOrCollect(signer, payloads, { dryRun: input.dryRun });
|
|
371
393
|
return ok({
|
|
372
394
|
mode: result.mode,
|
|
@@ -376,6 +398,7 @@ export function registerOtcTools(server, ctx, signer) {
|
|
|
376
398
|
amount: amountBn.toString(),
|
|
377
399
|
proofLength: proof.length,
|
|
378
400
|
preflight: native ? null : { balance: balance.toString(), allowance: allowance.toString() },
|
|
401
|
+
...(simulation ? { simulation } : {}),
|
|
379
402
|
steps: [...skipped, ...result.steps],
|
|
380
403
|
});
|
|
381
404
|
});
|
package/dist/tools/otc.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"otc.js","sourceRoot":"","sources":["../../src/tools/otc.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"otc.js","sourceRoot":"","sources":["../../src/tools/otc.ts"],"names":[],"mappings":"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"}
|