dexe-mcp 0.9.0 → 0.11.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 +109 -20
- package/README.md +6 -6
- package/dist/config.d.ts +22 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +30 -0
- package/dist/config.js.map +1 -1
- package/dist/env/schema.d.ts +21 -0
- package/dist/env/schema.d.ts.map +1 -1
- package/dist/env/schema.js +21 -0
- package/dist/env/schema.js.map +1 -1
- package/dist/lib/controllingVoters.d.ts +44 -0
- package/dist/lib/controllingVoters.d.ts.map +1 -0
- package/dist/lib/controllingVoters.js +152 -0
- package/dist/lib/controllingVoters.js.map +1 -0
- package/dist/lib/dangerousSelectors.d.ts +1 -1
- package/dist/lib/dangerousSelectors.d.ts.map +1 -1
- package/dist/lib/dangerousSelectors.js +12 -22
- package/dist/lib/dangerousSelectors.js.map +1 -1
- package/dist/lib/decoders.d.ts +4 -4
- package/dist/lib/decoders.d.ts.map +1 -1
- package/dist/lib/decoders.js +2 -2
- package/dist/lib/govProposalView.d.ts +37 -0
- package/dist/lib/govProposalView.d.ts.map +1 -0
- package/dist/lib/govProposalView.js +42 -0
- package/dist/lib/govProposalView.js.map +1 -0
- package/dist/lib/protocolAdvisories.d.ts +12 -13
- package/dist/lib/protocolAdvisories.d.ts.map +1 -1
- package/dist/lib/protocolAdvisories.js +23 -16
- package/dist/lib/protocolAdvisories.js.map +1 -1
- package/dist/lib/quorumRisk.d.ts +92 -0
- package/dist/lib/quorumRisk.d.ts.map +1 -0
- package/dist/lib/quorumRisk.js +159 -0
- package/dist/lib/quorumRisk.js.map +1 -0
- package/dist/lib/time.d.ts +16 -0
- package/dist/lib/time.d.ts.map +1 -0
- package/dist/lib/time.js +24 -0
- package/dist/lib/time.js.map +1 -0
- package/dist/tools/daoDeploy.d.ts.map +1 -1
- package/dist/tools/daoDeploy.js +32 -0
- package/dist/tools/daoDeploy.js.map +1 -1
- package/dist/tools/flow.d.ts.map +1 -1
- package/dist/tools/flow.js +90 -1
- package/dist/tools/flow.js.map +1 -1
- package/dist/tools/gov.js +2 -2
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +2 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/otc.d.ts +20 -0
- package/dist/tools/otc.d.ts.map +1 -1
- package/dist/tools/otc.js +191 -58
- package/dist/tools/otc.js.map +1 -1
- package/dist/tools/proposalBuild.d.ts.map +1 -1
- package/dist/tools/proposalBuild.js +19 -5
- package/dist/tools/proposalBuild.js.map +1 -1
- package/dist/tools/proposalBuildComplex.d.ts.map +1 -1
- package/dist/tools/proposalBuildComplex.js +12 -1
- package/dist/tools/proposalBuildComplex.js.map +1 -1
- package/dist/tools/proposalBuildMore.d.ts.map +1 -1
- package/dist/tools/proposalBuildMore.js +8 -5
- package/dist/tools/proposalBuildMore.js.map +1 -1
- package/dist/tools/risk.d.ts +4 -0
- package/dist/tools/risk.d.ts.map +1 -0
- package/dist/tools/risk.js +255 -0
- package/dist/tools/risk.js.map +1 -0
- package/dist/tools/subgraph.d.ts.map +1 -1
- package/dist/tools/subgraph.js +22 -15
- package/dist/tools/subgraph.js.map +1 -1
- package/dist/tools/voteBuild.d.ts.map +1 -1
- package/dist/tools/voteBuild.js +16 -4
- package/dist/tools/voteBuild.js.map +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,11 +1,108 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.11.1 — 2026-07-03
|
|
4
|
+
|
|
5
|
+
### OTC date clarity (UTC)
|
|
6
|
+
|
|
7
|
+
- **Human-readable UTC tier times** (`dexe_otc_buyer_status`,
|
|
8
|
+
`dexe_otc_list_sales_for_dao`): both tools now emit `saleStartTimeUTC` and
|
|
9
|
+
`saleEndTimeUTC` alongside the raw Unix `saleStartTime`/`saleEndTime`, e.g.
|
|
10
|
+
`"2026-07-03 17:45:59 UTC"`. Raw seconds are unambiguous to machines but
|
|
11
|
+
confuse people (and read as local time in some UIs); the explicit `UTC`
|
|
12
|
+
suffix removes any doubt. Verified against the live frontend, which labels
|
|
13
|
+
the same tier as "5:45 PM UTC". The `0` sentinel (unset time) renders as an
|
|
14
|
+
empty string rather than a misleading 1970 epoch. New `src/lib/time.ts`
|
|
15
|
+
helper `unixToUtc`, covered by `tests/lib/time.test.ts`. Additive only —
|
|
16
|
+
existing raw fields are unchanged. No tool-count change (154 tools).
|
|
17
|
+
|
|
18
|
+
## 0.11.0 — 2026-07-03
|
|
19
|
+
|
|
20
|
+
### OTC contract/frontend alignment (audit 2026-07-03)
|
|
21
|
+
|
|
22
|
+
Cross-checked every OTC tool against `ITokenSaleProposal.sol` and the
|
|
23
|
+
app.dexe.io frontend (`investing-dashboard`). Four bugs fixed, one guard and
|
|
24
|
+
one compat gap closed:
|
|
25
|
+
|
|
26
|
+
- **Native-coin sentinel** (`dexe_otc_buyer_buy`,
|
|
27
|
+
`dexe_vote_build_token_sale_buy`): the contract keys exchange rates by
|
|
28
|
+
`Globals.sol::ETHEREUM_ADDRESS` (`0xEeee…EEeE`); the tools previously
|
|
29
|
+
encoded the zero address, which reverts `TSP: incorrect token`. The zero
|
|
30
|
+
address is still accepted as caller input but calldata now always carries
|
|
31
|
+
`ETHEREUM_ADDRESS`; the low-level builder also auto-sets `value = amount`
|
|
32
|
+
for native buys (contract requires `msg.value == amount`).
|
|
33
|
+
- **`getTierViews` decode ABI** (`dexe_otc_buyer_status`,
|
|
34
|
+
`dexe_otc_list_sales_for_dao`): the contract returns the nested
|
|
35
|
+
`TierView { tierInitParams, tierInfo, tierAdditionalInfo }`; the tools
|
|
36
|
+
declared a flat pre-Bug-#25 layout that decoded garbage on live tiers.
|
|
37
|
+
Both now share one canonical fragment (`TIER_VIEW_TUPLE`), and
|
|
38
|
+
`list_sales_for_dao` gains real `totalSold` plus an `off` status from the
|
|
39
|
+
tier's on-chain `isOff` flag.
|
|
40
|
+
- **Merkle proofs in `dexe_otc_buyer_status`**: supplied whitelists are now
|
|
41
|
+
turned into proofs *before* the read and passed into
|
|
42
|
+
`getUserViews(user, tierIds, proofs)` — previously empty proofs made
|
|
43
|
+
`canParticipate` false for whitelisted users of merkle tiers. The response
|
|
44
|
+
also surfaces the on-chain merkle root and a `rootMatchesOnchain` check.
|
|
45
|
+
- **Zero-address purchase token rejected** in the tier builders: such a tier
|
|
46
|
+
is unbuyable on-chain; the error points at `ETHEREUM_ADDRESS`.
|
|
47
|
+
- **Merkle whitelist IPFS upload** in `dexe_otc_dao_open_sale`: app.dexe.io
|
|
48
|
+
buyers regenerate proofs from the `{ list }` JSON behind the tier's merkle
|
|
49
|
+
`uri`; tiers created with an empty uri were unbuyable through the frontend.
|
|
50
|
+
The composite now auto-uploads the list (`ipfs://<cid>`, frontend
|
|
51
|
+
`IpfsEntity.path` format) and reports it under `otc.merkleWhitelistUploads`.
|
|
52
|
+
- **Compat harness un-rotted**: the H-10 human-percent `vestingPercentage`
|
|
53
|
+
change had broken `tests/compat` fixture replay unnoticed (the script was
|
|
54
|
+
not in CI). Generator + fixture updated; `npm run test:compat` now runs in
|
|
55
|
+
the CI build job.
|
|
56
|
+
|
|
57
|
+
## 0.10.0 — 2026-06-03
|
|
58
|
+
|
|
59
|
+
### Treasury-safety advisory (low-quorum governance check)
|
|
60
|
+
|
|
61
|
+
Low quorum reduces the participation required to pass a proposal, which is a
|
|
62
|
+
governance-safety risk for a DAO that holds treasury assets. The durable control
|
|
63
|
+
is an adequate on-chain quorum threshold configured per DAO; this release adds an
|
|
64
|
+
**advisory-only** layer in the MCP that flags treasury-moving proposals under a
|
|
65
|
+
low quorum so an operator/agent verifies the setting and stakeholder
|
|
66
|
+
participation before executing.
|
|
67
|
+
|
|
68
|
+
The MCP layer **never blocks** — it surfaces a clear alert and proceeds. It is
|
|
69
|
+
harm-reduction for a legit operator/agent configuring a DAO, not an access
|
|
70
|
+
control.
|
|
71
|
+
|
|
72
|
+
- **New** `src/lib/quorumRisk.ts` — pure logic: treasury-action classifier
|
|
73
|
+
(approve/transfer/transferFrom/increaseAllowance/nft/native), quorum-pct math
|
|
74
|
+
(1e27 scale), `judgeQuorum`/`quorumConcentration` verdicts, advisory strings.
|
|
75
|
+
- **New env** `DEXE_MIN_SAFE_QUORUM_PCT` (default 50) + `DEXE_TREASURY_GUARD`
|
|
76
|
+
(`off`|`warn`, default `warn`; `warn` = advisories everywhere, `off` = silent).
|
|
77
|
+
- **DAO deploy** (`dexe_dao_build_deploy`), **`change_voting_settings`**, and the
|
|
78
|
+
**treasury builders** (`withdraw_treasury`, `token_transfer`, `apply_to_dao`,
|
|
79
|
+
`custom_abi`, `build_external`) attach a below-floor / treasury-risk advisory.
|
|
80
|
+
- **`dexe_proposal_vote_and_execute`** attaches a treasury-risk advisory to the
|
|
81
|
+
execute step when the proposal moves treasury value and quorum is below the
|
|
82
|
+
floor (or no controlling member voted For). It **executes regardless** — the
|
|
83
|
+
alert is informational; fail-soft on read errors.
|
|
84
|
+
- **New tool** `dexe_proposal_risk_assess` (153 → **154**) — quorum %, treasury
|
|
85
|
+
at risk, the indicative share of supply required to meet quorum, verdict
|
|
86
|
+
(SAFE/CAUTION/DANGER) + recommendation, for an on-chain proposal or hypothetical
|
|
87
|
+
actions.
|
|
88
|
+
- **Phase B** — founder/validator participation signal. **New**
|
|
89
|
+
`src/lib/controllingVoters.ts` (`resolveControllingHoldersVotedFor`): enumerates
|
|
90
|
+
the "controlling set" (validators ∪ top-N token holders by voting weight) via
|
|
91
|
+
subgraph, then confirms each member's vote direction **on-chain** via
|
|
92
|
+
`GovPool.getTotalVotes` (OR across Personal/Micropool/Delegated). Surfaced in
|
|
93
|
+
`dexe_proposal_risk_assess` and the execute advisory as an informational flag
|
|
94
|
+
when **no** controlling member voted For (even at healthy quorum). **New env**
|
|
95
|
+
`DEXE_CONTROLLING_TOPN` (default 5). Subgraph + mainnet (56) only; off-chain/
|
|
96
|
+
testnet/error ⇒ `null` (unknown). **Never blocks.**
|
|
97
|
+
- No `acknowledgeRisk` override anywhere — there is nothing to acknowledge; the
|
|
98
|
+
guard does not block. Tool count unchanged (**154**).
|
|
99
|
+
|
|
3
100
|
## 0.9.0 — 2026-06-02
|
|
4
101
|
|
|
5
102
|
### Security hardening (red-team audit remediation)
|
|
6
103
|
|
|
7
|
-
Remediates the `dexe-mcp@0.7.2` red-team audit. The
|
|
8
|
-
in 0.8.3; this release closes the MCP-fixable
|
|
104
|
+
Remediates the `dexe-mcp@0.7.2` red-team audit. The most severe finding was
|
|
105
|
+
guarded in 0.8.3; this release closes the remaining MCP-fixable findings. Each fix
|
|
9
106
|
shipped as its own PR with a locking regression test, CI green throughout.
|
|
10
107
|
|
|
11
108
|
#### Fixed — builders & numeric safety
|
|
@@ -30,9 +127,9 @@ shipped as its own PR with a locking regression test, CI green throughout.
|
|
|
30
127
|
before rendering (`src/lib/sanitize.ts`): control chars escaped, NFKC
|
|
31
128
|
normalized, non-ASCII flagged — defeats prompt-injection / newline-forgery /
|
|
32
129
|
homoglyph spoofing.
|
|
33
|
-
- **
|
|
34
|
-
|
|
35
|
-
|
|
130
|
+
- **Recursive decode** — `decode_calldata` / `decode_proposal` recursively
|
|
131
|
+
unwrap nested `multicall` / `createProposal` / … and flag privileged selectors
|
|
132
|
+
so a reviewer sees hidden inner calls.
|
|
36
133
|
- **W20** — `ipfs_fetch` verifies fetched bytes against the requested CID
|
|
37
134
|
(raw/json codecs) and rejects a mismatch.
|
|
38
135
|
- **W21 / L-6** — the Graph API key is only sent as a Bearer to trusted
|
|
@@ -58,9 +155,6 @@ shipped as its own PR with a locking regression test, CI green throughout.
|
|
|
58
155
|
- New env vars: `DEXE_PROTOCOL_REF`, `DEXE_MAX_DESCRIPTION_LEN`.
|
|
59
156
|
|
|
60
157
|
### Docs
|
|
61
|
-
- **`docs/ESCALATION-DEXE.md`** — contract-level findings (C-2, H-11,
|
|
62
|
-
`executionDelay=0`, `changeVotePower`, PolynomialPower) for the DeXe protocol
|
|
63
|
-
team, with root cause, contract fix, and MCP mitigation.
|
|
64
158
|
- **`docs/SECURITY.md`** — security posture and remediation summary.
|
|
65
159
|
|
|
66
160
|
### Notes
|
|
@@ -72,16 +166,12 @@ shipped as its own PR with a locking regression test, CI green throughout.
|
|
|
72
166
|
|
|
73
167
|
## 0.8.3 — 2026-06-01
|
|
74
168
|
|
|
75
|
-
### Security: guardrail
|
|
169
|
+
### Security: guardrail for privileged proposal-action selectors
|
|
76
170
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
in the **DeXe protocol contracts** (settings keyed on the last action only;
|
|
82
|
-
`withdrawTokens` takes an unbound `payer`) and is **not fixable from the MCP** —
|
|
83
|
-
only a contract upgrade closes it. dexe-mcp was an amplifier: the proposal
|
|
84
|
-
builders encoded the malicious action with zero checks.
|
|
171
|
+
Hardening from the `0.7.2` red-team audit. Certain `GovUserKeeper` `onlyOwner`
|
|
172
|
+
accounting functions are privileged and must never be encoded as a governance
|
|
173
|
+
proposal action. This release adds an MCP-side guard so the proposal builders
|
|
174
|
+
refuse to construct such actions. Defense-in-depth at the MCP layer.
|
|
85
175
|
|
|
86
176
|
### Added
|
|
87
177
|
|
|
@@ -93,9 +183,8 @@ builders encoded the malicious action with zero checks.
|
|
|
93
183
|
|
|
94
184
|
- **`dexe_proposal_build_custom_abi` and `dexe_proposal_build_external` now
|
|
95
185
|
hard-refuse** (no override) any action whose calldata carries a denylisted
|
|
96
|
-
selector.
|
|
97
|
-
|
|
98
|
-
`docs/security/C2-default-routing-bypass.md`.
|
|
186
|
+
selector. Defense-in-depth at the MCP layer — users move their own funds
|
|
187
|
+
through the GovPool entrypoints, never via a proposal action.
|
|
99
188
|
|
|
100
189
|
### Notes
|
|
101
190
|
|
package/README.md
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
<a href="https://nodejs.org"><img alt="node" src="https://img.shields.io/node/v/dexe-mcp.svg?style=flat-square&labelColor=0b0f1e&color=E07AFF"></a>
|
|
10
10
|
<a href="https://github.com/edward-arinin-web-dev/dexe-mcp/blob/main/LICENSE"><img alt="license" src="https://img.shields.io/npm/l/dexe-mcp.svg?style=flat-square&labelColor=0b0f1e&color=FFC878"></a>
|
|
11
11
|
<a href="https://modelcontextprotocol.io"><img alt="MCP-compatible" src="https://img.shields.io/badge/MCP-compatible-9BB4FF?style=flat-square&labelColor=0b0f1e"></a>
|
|
12
|
-
<a href="https://github.com/edward-arinin-web-dev/dexe-mcp"><img alt="tools" src="https://img.shields.io/badge/tools-
|
|
12
|
+
<a href="https://github.com/edward-arinin-web-dev/dexe-mcp"><img alt="tools" src="https://img.shields.io/badge/tools-154-7CF2D1?style=flat-square&labelColor=0b0f1e"></a>
|
|
13
13
|
<a href="https://github.com/edward-arinin-web-dev/dexe-mcp"><img alt="proposal types" src="https://img.shields.io/badge/proposal--types-33-E07AFF?style=flat-square&labelColor=0b0f1e"></a>
|
|
14
14
|
</p>
|
|
15
15
|
|
|
@@ -40,7 +40,7 @@ That era is ending.
|
|
|
40
40
|
|
|
41
41
|
LLMs can now reason about voting power, weigh proposals against a mandate, draft calldata, simulate execution, and ask your wallet to sign — **continuously, across every DAO you care about, all at once.** What was a UI is becoming a conversation. What was a treasurer's spreadsheet is becoming an always-on agent.
|
|
42
42
|
|
|
43
|
-
**`dexe-mcp` is the substrate that makes it real for the DeXe stack — and now for external OpenZeppelin Governor DAOs as well.** One MCP server.
|
|
43
|
+
**`dexe-mcp` is the substrate that makes it real for the DeXe stack — and now for external OpenZeppelin Governor DAOs as well.** One MCP server. 154 typed tools across 19 groups. Every flow the DeXe frontend exposes — plus a generic `dexe_gov_*` surface targeting Uniswap, Compound, and Optimism.
|
|
44
44
|
|
|
45
45
|
| | What you get |
|
|
46
46
|
|-----|------|
|
|
@@ -194,7 +194,7 @@ All optional. Tools that need a missing variable fail with a clear, actionable m
|
|
|
194
194
|
|
|
195
195
|
Full docs in [`docs/`](https://github.com/edward-arinin-web-dev/dexe-mcp/tree/main/docs):
|
|
196
196
|
|
|
197
|
-
- [**`docs/TOOLS.md`**](https://github.com/edward-arinin-web-dev/dexe-mcp/blob/main/docs/TOOLS.md) — complete catalog of all
|
|
197
|
+
- [**`docs/TOOLS.md`**](https://github.com/edward-arinin-web-dev/dexe-mcp/blob/main/docs/TOOLS.md) — complete catalog of all 154 tools, grouped, with one-line descriptions and required envs.
|
|
198
198
|
- [**`docs/GOVERNOR.md`**](https://github.com/edward-arinin-web-dev/dexe-mcp/blob/main/docs/GOVERNOR.md) — external OpenZeppelin / Bravo Governor surface (Uniswap, Compound, Optimism). Family branching, fixture map, paste-able JSON examples, Tally parity harness.
|
|
199
199
|
- [**`docs/WALLETCONNECT.md`**](https://github.com/edward-arinin-web-dev/dexe-mcp/blob/main/docs/WALLETCONNECT.md) — `walletconnect` signer mode: phone-approved broadcast with no hot key. Phase A (config) + Phase B (live relay, `dexe_wc_connect` / `dexe_wc_disconnect`, per-tx phone approval) shipped in v0.7.0, validated end-to-end with a live MetaMask-mobile round-trip on BSC testnet.
|
|
200
200
|
- [**`docs/USAGE.md`**](https://github.com/edward-arinin-web-dev/dexe-mcp/blob/main/docs/USAGE.md) — 10 worked examples (deploy DAO, create/vote/execute proposals, delegate, validator chamber, decode calldata, off-chain proposals, multicall batching). Copy-pasteable JSON.
|
|
@@ -207,13 +207,13 @@ Full docs in [`docs/`](https://github.com/edward-arinin-web-dev/dexe-mcp/tree/ma
|
|
|
207
207
|
|
|
208
208
|
## Tool catalog
|
|
209
209
|
|
|
210
|
-
**
|
|
210
|
+
**154 tools, 19 groups.** Run `dexe_proposal_catalog` at runtime for the live proposal-type map. Full per-tool reference → [`docs/TOOLS.md`](https://github.com/edward-arinin-web-dev/dexe-mcp/blob/main/docs/TOOLS.md).
|
|
211
211
|
|
|
212
212
|
| Group | # | What it gives you |
|
|
213
213
|
|-------|---|------|
|
|
214
214
|
| **Dev tooling** | 4 | One-command Hardhat lifecycle for the DeXe-Protocol monorepo — `dexe_compile`, `_test`, `_coverage`, `_lint`. Auto-clones the repo on first call. |
|
|
215
215
|
| **Contract introspection** | 10 | Ask the protocol about itself — list contracts, fetch ABIs, look up selectors, read NatSpec, view source, decode arbitrary calldata or full proposal payloads. The agent's reverse-engineer toolkit. |
|
|
216
|
-
| **DAO reads** |
|
|
216
|
+
| **DAO reads** | 20 | Everything you'd see on a DAO dashboard, returned as JSON — `dao_info`, predicted helper addresses, proposal state/list/voters, voting power, treasury, settings, validators, staking, distributions, privacy policy, plus `dexe_proposal_risk_assess` (treasury-safety risk readout). |
|
|
217
217
|
| **IPFS** | 9 | Pinata uploads for files / avatars / DAO + proposal metadata, smart metadata updates, deterministic identicon generation, gateway-fallback fetch, CID computation without uploading. |
|
|
218
218
|
| **DAO deploy** | 1 | `dexe_dao_build_deploy` — encodes the full nested `PoolFactory.deployGovPool` struct with predicted helper addresses pre-wired. From idea to a live DAO in one signed tx. |
|
|
219
219
|
| **Proposal catalog + primitives** | 5 | `dexe_proposal_catalog` enumerates **all 33** proposal types with metadata + gating. Primitives `_build_external`, `_build_internal`, `_build_custom_abi`, `_build_offchain` cover anything not in a named wrapper. |
|
|
@@ -296,7 +296,7 @@ Supply-chain hardening is enforced in CI. See [SECURITY.md](SECURITY.md) for the
|
|
|
296
296
|
- **npm provenance.** Releases publish with `npm publish --provenance`; verify with `npm audit signatures` against an installed copy.
|
|
297
297
|
- **Reproducible installs.** A `verify-lockfile` CI job installs strictly from the committed `package-lock.json` and fails on any drift.
|
|
298
298
|
- **Continuous scanning.** CodeQL (SAST) runs on every PR and weekly; OSSF Scorecard runs weekly and on push to `main`; Dependency Review runs on every PR.
|
|
299
|
-
- **Audit remediation (v0.9.0).** Closes the MCP-fixable findings from an independent red-team audit — numeric-input guards, RPC-key redaction, untrusted-data sanitization, recursive decode, exact-amount approvals, per-chain nonce serialization, IPFS content-hash verification, and an `--ignore-scripts` bootstrap.
|
|
299
|
+
- **Audit remediation (v0.9.0).** Closes the MCP-fixable findings from an independent red-team audit — numeric-input guards, RPC-key redaction, untrusted-data sanitization, recursive decode, exact-amount approvals, per-chain nonce serialization, IPFS content-hash verification, and an `--ignore-scripts` bootstrap. Per-finding detail in [`CHANGELOG.md`](https://github.com/edward-arinin-web-dev/dexe-mcp/blob/main/CHANGELOG.md).
|
|
300
300
|
|
|
301
301
|
## License
|
|
302
302
|
|
package/dist/config.d.ts
CHANGED
|
@@ -34,6 +34,28 @@ export interface DexeConfig {
|
|
|
34
34
|
forkBlock?: number;
|
|
35
35
|
/** Private key for tx signing. When set, `dexe_tx_send` can broadcast. */
|
|
36
36
|
privateKey?: string;
|
|
37
|
+
/**
|
|
38
|
+
* Minimum safe quorum percent (0–100). A DAO whose quorum setting is below
|
|
39
|
+
* this is flagged as a governance-safety risk for treasury-moving proposals
|
|
40
|
+
* (low quorum reduces the participation required to pass). Default 50.
|
|
41
|
+
* See src/lib/quorumRisk.ts.
|
|
42
|
+
*/
|
|
43
|
+
minSafeQuorumPct: number;
|
|
44
|
+
/**
|
|
45
|
+
* Treasury-safety advisory posture. `off` = silent; `warn` (default) =
|
|
46
|
+
* advisories / alerts everywhere (build, deploy, execute, risk_assess).
|
|
47
|
+
* **Advisory only — it never blocks.** Harm-reduction for an operator/agent
|
|
48
|
+
* configuring a DAO; the durable control is an adequate on-chain quorum
|
|
49
|
+
* threshold configured per DAO.
|
|
50
|
+
*/
|
|
51
|
+
treasuryGuard: "off" | "warn";
|
|
52
|
+
/**
|
|
53
|
+
* Number of top token holders (by voting weight) included in the treasury-
|
|
54
|
+
* safety "controlling set" (alongside validators). The advisory checks whether
|
|
55
|
+
* ≥1 controlling member voted For. Default 5. Subgraph/mainnet-only.
|
|
56
|
+
* See src/lib/controllingVoters.ts.
|
|
57
|
+
*/
|
|
58
|
+
controllingTopN: number;
|
|
37
59
|
/**
|
|
38
60
|
* B6 — destination allowlist for `dexe_tx_send`. Lowercased, checksummed-then-
|
|
39
61
|
* lowercased addresses. Undefined/empty = no restriction.
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,kEAAkE;IAClE,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,UAAU;IACzB,mFAAmF;IACnF,YAAY,EAAE,MAAM,CAAC;IAErB,uEAAuE;IACvE,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACzC;;;;OAIG;IACH,cAAc,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8CAA8C;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,yEAAyE;IACzE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,uEAAuE;IACvE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6EAA6E;IAC7E,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,yCAAyC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0EAA0E;IAC1E,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,4DAA4D;IAC5D,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,qEAAqE;IACrE,yBAAyB,CAAC,EAAE,MAAM,CAAC;IAEnC;;;;OAIG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,+EAA+E;IAC/E,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,iEAAiE;IACjE,8BAA8B,CAAC,EAAE,MAAM,CAAC;CACzC;AAED;;;;;GAKG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,kEAAkE;IAClE,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,UAAU;IACzB,mFAAmF;IACnF,YAAY,EAAE,MAAM,CAAC;IAErB,uEAAuE;IACvE,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACzC;;;;OAIG;IACH,cAAc,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8CAA8C;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,yEAAyE;IACzE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,uEAAuE;IACvE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6EAA6E;IAC7E,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,yCAAyC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0EAA0E;IAC1E,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;;;OAKG;IACH,gBAAgB,EAAE,MAAM,CAAC;IACzB;;;;;;OAMG;IACH,aAAa,EAAE,KAAK,GAAG,MAAM,CAAC;IAE9B;;;;;OAKG;IACH,eAAe,EAAE,MAAM,CAAC;IAExB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,4DAA4D;IAC5D,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,qEAAqE;IACrE,yBAAyB,CAAC,EAAE,MAAM,CAAC;IAEnC;;;;OAIG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,+EAA+E;IAC/E,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,iEAAiE;IACjE,8BAA8B,CAAC,EAAE,MAAM,CAAC;CACzC;AAED;;;;;GAKG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,CA8PtD;AAcD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,WAAW,CAW9E"}
|
package/dist/config.js
CHANGED
|
@@ -179,6 +179,33 @@ export async function loadConfig() {
|
|
|
179
179
|
if (walletConnectProjectId) {
|
|
180
180
|
process.stderr.write(`[dexe-mcp] WalletConnect project id configured${privateKey ? " (inactive — DEXE_PRIVATE_KEY takes precedence)" : ""}\n`);
|
|
181
181
|
}
|
|
182
|
+
// ---- treasury-safety advisory (low-quorum) -----------------------------
|
|
183
|
+
let minSafeQuorumPct = 50;
|
|
184
|
+
const minQuorumRaw = process.env.DEXE_MIN_SAFE_QUORUM_PCT?.trim();
|
|
185
|
+
if (minQuorumRaw) {
|
|
186
|
+
const n = Number(minQuorumRaw);
|
|
187
|
+
if (!Number.isFinite(n) || n < 0 || n > 100) {
|
|
188
|
+
fatal(`DEXE_MIN_SAFE_QUORUM_PCT must be a number between 0 and 100, got: ${minQuorumRaw}`);
|
|
189
|
+
}
|
|
190
|
+
minSafeQuorumPct = n;
|
|
191
|
+
}
|
|
192
|
+
let treasuryGuard = "warn";
|
|
193
|
+
const treasuryGuardRaw = process.env.DEXE_TREASURY_GUARD?.trim().toLowerCase();
|
|
194
|
+
if (treasuryGuardRaw) {
|
|
195
|
+
if (treasuryGuardRaw !== "off" && treasuryGuardRaw !== "warn") {
|
|
196
|
+
fatal(`DEXE_TREASURY_GUARD must be one of off|warn, got: ${treasuryGuardRaw}`);
|
|
197
|
+
}
|
|
198
|
+
treasuryGuard = treasuryGuardRaw;
|
|
199
|
+
}
|
|
200
|
+
let controllingTopN = 5;
|
|
201
|
+
const controllingTopNRaw = process.env.DEXE_CONTROLLING_TOPN?.trim();
|
|
202
|
+
if (controllingTopNRaw) {
|
|
203
|
+
const n = Number(controllingTopNRaw);
|
|
204
|
+
if (!Number.isInteger(n) || n <= 0) {
|
|
205
|
+
fatal(`DEXE_CONTROLLING_TOPN must be a positive integer, got: ${controllingTopNRaw}`);
|
|
206
|
+
}
|
|
207
|
+
controllingTopN = n;
|
|
208
|
+
}
|
|
182
209
|
let forkBlock;
|
|
183
210
|
if (process.env.DEXE_FORK_BLOCK) {
|
|
184
211
|
const n = Number(process.env.DEXE_FORK_BLOCK);
|
|
@@ -201,6 +228,9 @@ export async function loadConfig() {
|
|
|
201
228
|
subgraphInteractionsUrl,
|
|
202
229
|
forkBlock,
|
|
203
230
|
privateKey,
|
|
231
|
+
minSafeQuorumPct,
|
|
232
|
+
treasuryGuard,
|
|
233
|
+
controllingTopN,
|
|
204
234
|
signerAllowlist,
|
|
205
235
|
signerMaxValueWei,
|
|
206
236
|
signerMaxBroadcastsPerMin,
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/env/schema.d.ts
CHANGED
|
@@ -40,6 +40,27 @@ export declare const ENV_SPEC: {
|
|
|
40
40
|
readonly example: "";
|
|
41
41
|
readonly doc: "Override the DeXe-Protocol checkout path. Auto-managed when unset.";
|
|
42
42
|
};
|
|
43
|
+
readonly DEXE_MIN_SAFE_QUORUM_PCT: {
|
|
44
|
+
readonly schema: z.ZodOptional<z.ZodString>;
|
|
45
|
+
readonly category: "core";
|
|
46
|
+
readonly required: false;
|
|
47
|
+
readonly example: "50";
|
|
48
|
+
readonly doc: "Minimum safe quorum percent (0–100). Quorum below this is flagged as a governance-safety risk for treasury-moving proposals. Default 50.";
|
|
49
|
+
};
|
|
50
|
+
readonly DEXE_TREASURY_GUARD: {
|
|
51
|
+
readonly schema: z.ZodOptional<z.ZodEnum<["off", "warn"]>>;
|
|
52
|
+
readonly category: "core";
|
|
53
|
+
readonly required: false;
|
|
54
|
+
readonly example: "warn";
|
|
55
|
+
readonly doc: "Treasury-safety advisory posture: off | warn. 'warn' (default) emits advisories/alerts everywhere (build, deploy, execute, risk_assess) but NEVER blocks; 'off' silences them.";
|
|
56
|
+
};
|
|
57
|
+
readonly DEXE_CONTROLLING_TOPN: {
|
|
58
|
+
readonly schema: z.ZodOptional<z.ZodString>;
|
|
59
|
+
readonly category: "core";
|
|
60
|
+
readonly required: false;
|
|
61
|
+
readonly example: "5";
|
|
62
|
+
readonly doc: "Top-N token holders (by voting weight) in the treasury-guard controlling set, alongside validators. The guard checks whether ≥1 member voted For. Subgraph/mainnet-only. Default 5.";
|
|
63
|
+
};
|
|
43
64
|
readonly DEXE_RPC_URL: {
|
|
44
65
|
readonly schema: z.ZodOptional<z.ZodString>;
|
|
45
66
|
readonly category: "rpc";
|
package/dist/env/schema.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/env/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;;;;;GAYG;AAEH,MAAM,MAAM,WAAW,GACnB,MAAM,GACN,KAAK,GACL,QAAQ,GACR,MAAM,GACN,UAAU,GACV,eAAe,GACf,MAAM,GACN,SAAS,GACT,KAAK,CAAC;AAEV;;;GAGG;AACH,MAAM,MAAM,OAAO,GACf,MAAM,GACN,WAAW,GACX,aAAa,GACb,WAAW,GACX,eAAe,GACf,YAAY,GACZ,SAAS,GACT,oBAAoB,GACpB,kBAAkB,CAAC;AAEvB,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3B,QAAQ,EAAE,WAAW,CAAC;IACtB,yEAAyE;IACzE,QAAQ,EAAE,OAAO,CAAC;IAClB,2CAA2C;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,GAAG,EAAE,MAAM,CAAC;IACZ,8EAA8E;IAC9E,YAAY,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;IAClC,6DAA6D;IAC7D,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAOD,eAAO,MAAM,QAAQ
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/env/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;;;;;GAYG;AAEH,MAAM,MAAM,WAAW,GACnB,MAAM,GACN,KAAK,GACL,QAAQ,GACR,MAAM,GACN,UAAU,GACV,eAAe,GACf,MAAM,GACN,SAAS,GACT,KAAK,CAAC;AAEV;;;GAGG;AACH,MAAM,MAAM,OAAO,GACf,MAAM,GACN,WAAW,GACX,aAAa,GACb,WAAW,GACX,eAAe,GACf,YAAY,GACZ,SAAS,GACT,oBAAoB,GACpB,kBAAkB,CAAC;AAEvB,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3B,QAAQ,EAAE,WAAW,CAAC;IACtB,yEAAyE;IACzE,QAAQ,EAAE,OAAO,CAAC;IAClB,2CAA2C;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,GAAG,EAAE,MAAM,CAAC;IACZ,8EAA8E;IAC9E,YAAY,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;IAClC,6DAA6D;IAC7D,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAOD,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqPwB,CAAC;AAE9C;;;;GAIG;AACH,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAY,CAAC;AAE/D,MAAM,MAAM,MAAM,GAAG,MAAM,OAAO,QAAQ,CAAC;AAE3C,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,IAAI,MAAM,CAEpD;AAED,wBAAgB,OAAO,IAAI,MAAM,EAAE,CAElC;AAED;;;GAGG;AACH,eAAO,MAAM,wBAAwB,QAAyB,CAAC"}
|
package/dist/env/schema.js
CHANGED
|
@@ -12,6 +12,27 @@ export const ENV_SPEC = {
|
|
|
12
12
|
example: "",
|
|
13
13
|
doc: "Override the DeXe-Protocol checkout path. Auto-managed when unset.",
|
|
14
14
|
},
|
|
15
|
+
DEXE_MIN_SAFE_QUORUM_PCT: {
|
|
16
|
+
schema: intStr.optional(),
|
|
17
|
+
category: "core",
|
|
18
|
+
required: false,
|
|
19
|
+
example: "50",
|
|
20
|
+
doc: "Minimum safe quorum percent (0–100). Quorum below this is flagged as a governance-safety risk for treasury-moving proposals. Default 50.",
|
|
21
|
+
},
|
|
22
|
+
DEXE_TREASURY_GUARD: {
|
|
23
|
+
schema: z.enum(["off", "warn"]).optional(),
|
|
24
|
+
category: "core",
|
|
25
|
+
required: false,
|
|
26
|
+
example: "warn",
|
|
27
|
+
doc: "Treasury-safety advisory posture: off | warn. 'warn' (default) emits advisories/alerts everywhere (build, deploy, execute, risk_assess) but NEVER blocks; 'off' silences them.",
|
|
28
|
+
},
|
|
29
|
+
DEXE_CONTROLLING_TOPN: {
|
|
30
|
+
schema: intStr.optional(),
|
|
31
|
+
category: "core",
|
|
32
|
+
required: false,
|
|
33
|
+
example: "5",
|
|
34
|
+
doc: "Top-N token holders (by voting weight) in the treasury-guard controlling set, alongside validators. The guard checks whether ≥1 member voted For. Subgraph/mainnet-only. Default 5.",
|
|
35
|
+
},
|
|
15
36
|
// ─── rpc ──────────────────────────────────────────────────────────────────
|
|
16
37
|
DEXE_RPC_URL: {
|
|
17
38
|
schema: optionalUrl,
|
package/dist/env/schema.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/env/schema.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/env/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Controlling-holder participation signal for the treasury-safety advisory.
|
|
3
|
+
*
|
|
4
|
+
* Resolves whether at least one member of a DAO's "controlling set" voted For a
|
|
5
|
+
* given proposal. The controlling set (a product decision) is:
|
|
6
|
+
* validators ∪ top-N token holders by voting weight.
|
|
7
|
+
* "Voted For" is lenient: ≥1 member among the For-voters ⇒ `true`.
|
|
8
|
+
*
|
|
9
|
+
* Posture: **fail-soft, never throws.** Any missing subgraph, non-mainnet chain,
|
|
10
|
+
* empty set, or subgraph/RPC error ⇒ `null` (unknown). Informational only — a
|
|
11
|
+
* `false` (set non-empty, nobody voted For) adds an advisory note; it never
|
|
12
|
+
* blocks. We only return `false` when we positively enumerated the set AND
|
|
13
|
+
* confirmed no member voted For on-chain.
|
|
14
|
+
*
|
|
15
|
+
* The set is enumerated via subgraph (cheap, but untrusted for vote direction);
|
|
16
|
+
* each member's vote direction is then confirmed ON-CHAIN via
|
|
17
|
+
* `GovPool.getTotalVotes` (authoritative). We OR across PersonalVote /
|
|
18
|
+
* MicropoolVote / DelegatedVote so a member who voted via delegation or a
|
|
19
|
+
* micropool is not mistaken for a non-voter.
|
|
20
|
+
*/
|
|
21
|
+
import { type JsonRpcProvider } from "ethers";
|
|
22
|
+
import type { DexeConfig } from "../config.js";
|
|
23
|
+
/**
|
|
24
|
+
* Identical to the fragment in src/tools/vote.ts / src/tools/inbox.ts. Kept
|
|
25
|
+
* local + exported so the unit test can assert ethers parses it (ethers
|
|
26
|
+
* silently drops malformed fragments — see govProposalView Phase-A gotcha).
|
|
27
|
+
*/
|
|
28
|
+
export declare const GET_TOTAL_VOTES_FRAGMENT = "function getTotalVotes(uint256 proposalId, address voter, uint8 voteType) view returns (uint256 totalVoted, uint256 totalRawVoted, uint256 votesForNow, bool isVoteFor)";
|
|
29
|
+
/**
|
|
30
|
+
* Did ≥1 controlling-set member vote For proposal `proposalId`?
|
|
31
|
+
* - `true` — at least one member voted For (any vote type).
|
|
32
|
+
* - `false` — set was enumerated, non-empty, and NONE voted For.
|
|
33
|
+
* - `null` — cannot determine (no subgraph / non-mainnet / empty set / error).
|
|
34
|
+
* Never throws.
|
|
35
|
+
*/
|
|
36
|
+
export declare function resolveControllingHoldersVotedFor(args: {
|
|
37
|
+
provider: JsonRpcProvider;
|
|
38
|
+
govPool: string;
|
|
39
|
+
proposalId: number;
|
|
40
|
+
cfg: DexeConfig;
|
|
41
|
+
chainId: number;
|
|
42
|
+
topN?: number;
|
|
43
|
+
}): Promise<boolean | null>;
|
|
44
|
+
//# sourceMappingURL=controllingVoters.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"controllingVoters.d.ts","sourceRoot":"","sources":["../../src/lib/controllingVoters.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,EAAa,KAAK,eAAe,EAAE,MAAM,QAAQ,CAAC;AAGzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,4KACsI,CAAC;AA+E5K;;;;;;GAMG;AACH,wBAAsB,iCAAiC,CAAC,IAAI,EAAE;IAC5D,QAAQ,EAAE,eAAe,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,UAAU,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CA6C1B"}
|