dexe-mcp 0.21.0 → 0.23.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.
Files changed (105) hide show
  1. package/CHANGELOG.md +108 -0
  2. package/README.md +2 -1
  3. package/dexe-plugin/skills/dexe-create-dao/SKILL.md +11 -1
  4. package/dexe-plugin/skills/dexe-create-proposal/SKILL.md +26 -5
  5. package/dexe-plugin/skills/dexe-otc/SKILL.md +5 -0
  6. package/dexe-plugin/skills/dexe-vote-execute/SKILL.md +16 -3
  7. package/dist/config.d.ts +7 -0
  8. package/dist/config.d.ts.map +1 -1
  9. package/dist/config.js +49 -9
  10. package/dist/config.js.map +1 -1
  11. package/dist/env/schema.d.ts +27 -6
  12. package/dist/env/schema.d.ts.map +1 -1
  13. package/dist/env/schema.js +36 -6
  14. package/dist/env/schema.js.map +1 -1
  15. package/dist/index.js +33 -6
  16. package/dist/index.js.map +1 -1
  17. package/dist/lib/errors.d.ts +33 -0
  18. package/dist/lib/errors.d.ts.map +1 -0
  19. package/dist/lib/errors.js +65 -0
  20. package/dist/lib/errors.js.map +1 -0
  21. package/dist/lib/params.d.ts +8 -0
  22. package/dist/lib/params.d.ts.map +1 -0
  23. package/dist/lib/params.js +14 -0
  24. package/dist/lib/params.js.map +1 -0
  25. package/dist/lib/proposalBuilders.d.ts +30 -2
  26. package/dist/lib/proposalBuilders.d.ts.map +1 -1
  27. package/dist/lib/proposalBuilders.js +583 -17
  28. package/dist/lib/proposalBuilders.js.map +1 -1
  29. package/dist/lib/requireEnv.d.ts.map +1 -1
  30. package/dist/lib/requireEnv.js +7 -4
  31. package/dist/lib/requireEnv.js.map +1 -1
  32. package/dist/lib/signer.d.ts.map +1 -1
  33. package/dist/lib/signer.js +7 -2
  34. package/dist/lib/signer.js.map +1 -1
  35. package/dist/lib/txWait.d.ts +28 -0
  36. package/dist/lib/txWait.d.ts.map +1 -0
  37. package/dist/lib/txWait.js +63 -0
  38. package/dist/lib/txWait.js.map +1 -0
  39. package/dist/lib/units.d.ts +32 -0
  40. package/dist/lib/units.d.ts.map +1 -0
  41. package/dist/lib/units.js +64 -0
  42. package/dist/lib/units.js.map +1 -0
  43. package/dist/rpc.d.ts +29 -1
  44. package/dist/rpc.d.ts.map +1 -1
  45. package/dist/rpc.js +86 -22
  46. package/dist/rpc.js.map +1 -1
  47. package/dist/tools/dao.d.ts.map +1 -1
  48. package/dist/tools/dao.js +16 -12
  49. package/dist/tools/dao.js.map +1 -1
  50. package/dist/tools/daoCreate.d.ts +2 -0
  51. package/dist/tools/daoCreate.d.ts.map +1 -1
  52. package/dist/tools/daoCreate.js +32 -7
  53. package/dist/tools/daoCreate.js.map +1 -1
  54. package/dist/tools/flow.d.ts +28 -1
  55. package/dist/tools/flow.d.ts.map +1 -1
  56. package/dist/tools/flow.js +368 -111
  57. package/dist/tools/flow.js.map +1 -1
  58. package/dist/tools/gate.js +2 -2
  59. package/dist/tools/gov.d.ts.map +1 -1
  60. package/dist/tools/gov.js +17 -4
  61. package/dist/tools/gov.js.map +1 -1
  62. package/dist/tools/inbox.d.ts.map +1 -1
  63. package/dist/tools/inbox.js +4 -2
  64. package/dist/tools/inbox.js.map +1 -1
  65. package/dist/tools/operationalContext.d.ts.map +1 -1
  66. package/dist/tools/operationalContext.js +39 -5
  67. package/dist/tools/operationalContext.js.map +1 -1
  68. package/dist/tools/otc.d.ts.map +1 -1
  69. package/dist/tools/otc.js +53 -13
  70. package/dist/tools/otc.js.map +1 -1
  71. package/dist/tools/predict.d.ts.map +1 -1
  72. package/dist/tools/predict.js +7 -4
  73. package/dist/tools/predict.js.map +1 -1
  74. package/dist/tools/proposal.d.ts.map +1 -1
  75. package/dist/tools/proposal.js +8 -4
  76. package/dist/tools/proposal.js.map +1 -1
  77. package/dist/tools/proposalBuild.d.ts +1 -0
  78. package/dist/tools/proposalBuild.d.ts.map +1 -1
  79. package/dist/tools/proposalBuild.js +2 -1
  80. package/dist/tools/proposalBuild.js.map +1 -1
  81. package/dist/tools/proposalBuildComplex.d.ts +7 -0
  82. package/dist/tools/proposalBuildComplex.d.ts.map +1 -1
  83. package/dist/tools/proposalBuildComplex.js +7 -7
  84. package/dist/tools/proposalBuildComplex.js.map +1 -1
  85. package/dist/tools/proposalBuildInternal.d.ts +21 -0
  86. package/dist/tools/proposalBuildInternal.d.ts.map +1 -1
  87. package/dist/tools/proposalBuildInternal.js +1 -1
  88. package/dist/tools/proposalBuildInternal.js.map +1 -1
  89. package/dist/tools/proposalBuildMore.d.ts +2 -0
  90. package/dist/tools/proposalBuildMore.d.ts.map +1 -1
  91. package/dist/tools/proposalBuildMore.js +2 -2
  92. package/dist/tools/proposalBuildMore.js.map +1 -1
  93. package/dist/tools/read.d.ts.map +1 -1
  94. package/dist/tools/read.js +25 -16
  95. package/dist/tools/read.js.map +1 -1
  96. package/dist/tools/subgraph.d.ts.map +1 -1
  97. package/dist/tools/subgraph.js +5 -3
  98. package/dist/tools/subgraph.js.map +1 -1
  99. package/dist/tools/txSend.d.ts.map +1 -1
  100. package/dist/tools/txSend.js +46 -6
  101. package/dist/tools/txSend.js.map +1 -1
  102. package/dist/tools/vote.d.ts.map +1 -1
  103. package/dist/tools/vote.js +7 -4
  104. package/dist/tools/vote.js.map +1 -1
  105. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,113 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.23.0 — 2026-07-08
4
+
5
+ ### SIMPLE-mode DAO creation: configurable min-votes and early completion
6
+
7
+ `dexe_dao_create` SIMPLE mode gains two optional fields, so common governance
8
+ requirements no longer force a hand-built ADVANCED `params` struct:
9
+
10
+ - **`minVotesTokens`** (whole tokens, default `"1"`) — the minimum token balance
11
+ to both vote and create proposals (sets `minVotesForVoting` =
12
+ `minVotesForCreating`). Scaled to 18-dec wei. The deploy's existing min-votes
13
+ guard still rejects a value above the largest holder's allocation, with
14
+ remediation. The default `"1"` is clamped to the distributed amount on dust
15
+ supplies — unchanged behavior.
16
+ - **`earlyCompletion`** (default `true`) — end voting as soon as quorum is
17
+ reached.
18
+
19
+ Both thread through the synthesized, coherence-checked config; the reachable-
20
+ quorum and ≥50%-floor safety proofs are unchanged. ADVANCED mode already exposed
21
+ these via the full `params` struct. No tool-count change (159 / 19 groups).
22
+
23
+ ## 0.22.0 — 2026-07-07
24
+
25
+ ### "Works like charm": full proposal-type coverage, auto-deposit voting, reliability hardening, AI playbook
26
+
27
+ The production-readiness release. Goal: an AI assistant serves "create a DAO /
28
+ create a proposal / vote / run an OTC sale" without investigating anything —
29
+ and every failure tells you exactly what to do next.
30
+
31
+ **Every proposal type, one call**
32
+ - `dexe_proposal_create` now wires **all 33 catalog types** (was 10):
33
+ new external builders `manage_validators`, `validators_allocation`,
34
+ `delegate_to_expert`/`revoke_from_expert` (+ catalog-style aliases),
35
+ `add/remove_local/global_expert`, `token_sale_recover`, `token_sale_whitelist`,
36
+ `create_staking_tier`, `change_math_model`, `blacklist`, `reward_multiplier`,
37
+ `apply_to_dao`, `new_proposal_type`/`enable_staking` — byte-parity with the
38
+ `dexe_proposal_build_*` tools (shared ABI fragments, no copies).
39
+ - Internal proposals (`change_validator_balances`, `change_validator_settings`,
40
+ `monthly_withdraw`, `offchain_internal_proposal`) auto-route to
41
+ `GovValidators.createInternalProposal` — the correct validators-only path.
42
+ - Off-chain types are rejected with the exact backend flow to run instead.
43
+ - `proposalType` is a **strict enum**: unknown values fail at validation with
44
+ the full valid list (previously errored mid-flow).
45
+
46
+ **Voting that just works**
47
+ - `dexe_proposal_vote_and_execute`: `depositFirst` is now `boolean|'auto'`,
48
+ **default `'auto'`** — deposits exactly the missing amount from the wallet
49
+ (approve UserKeeper → deposit → vote), matching the frontend's bundled flow.
50
+ `false` restores never-deposit.
51
+ - Non-Voting state errors name the per-state remedy (Defeated → new proposal;
52
+ Succeeded/Locked → re-run with autoExecute; Executed → done).
53
+
54
+ **Human units everywhere**
55
+ - Every amount accepts raw smallest units (digits-only, unchanged) **or**
56
+ human units with a decimal point (`"12.5"`), scaled by the token's REAL
57
+ on-chain decimals — `voteAmount`, `token_transfer`/`withdraw_treasury`/
58
+ `apply_to_dao` params, OTC buy.
59
+ - OTC `dexe_otc_buyer_buy` now converts the 18-dec-normalized amount to the
60
+ payment token's native decimals for the balance check and the exact-amount
61
+ approve — a <18-decimals payment token can no longer silently under-pay.
62
+
63
+ **Protocol compatibility**
64
+ - **SphereX fix (bug #35)**: newly deployed GovPools ship with SphereX
65
+ protection that rejects the old `multicall([deposit, createProposalAndVote])`
66
+ bundle with `"SphereX error: disallowed tx pattern"` — proposal creation on
67
+ any fresh DAO was broken. `dexe_proposal_create` (and the OTC open-sale
68
+ composite that rides it) now sends deposit and createProposalAndVote as
69
+ separate sequential transactions; the partial-failure ledger makes the
70
+ two-step sequence safely resumable. Caught by the new testnet golden-path
71
+ E2E (`scripts/e2e-testnet.mjs`), verified live on chain 97.
72
+
73
+ **Reliability (the P1 batch)**
74
+ - Transport-level **RPC retry + fallback rotation**: all RPC env vars accept
75
+ comma-separated URL lists; the zero-config public fallback ships multiple
76
+ endpoints per chain; the signer path uses the same resilient factory (it
77
+ previously bypassed even the flaky-RPC hint).
78
+ - **Mining-wait timeout** (`DEXE_TX_WAIT_TIMEOUT_MS`, default 180 s): a stuck
79
+ tx returns "check dexe_tx_status" instead of hanging the tool forever.
80
+ - **Reverted ≠ success**: `receipt.status === 0` now surfaces as a failure
81
+ everywhere (`dexe_tx_send` sets `isError` + `reverted:true`; composites stop
82
+ before dependent steps run on unchanged state).
83
+ - **Partial-failure ledger**: composite flows return `mode:"failed"` with
84
+ `failure.{failedStep, error, landedSteps, resume}` — fix the cause and
85
+ re-run the same call; completed steps are detected on-chain and skipped.
86
+ - **Startup env validation**: invalid `DEXE_*` values now fail fast at boot
87
+ with the var name (doctor already flagged them). New schema vars:
88
+ `DEXE_TX_WAIT_TIMEOUT_MS`, `DEXE_MAX_DESCRIPTION_LEN`, `DEXE_PROTOCOL_REF`.
89
+ - **`chainId` on every read**: 19 read tools no longer hardcode the default
90
+ chain (proposal/vote/read_*/gov/inbox/dao/forecast/OTC status + list).
91
+
92
+ **AI ergonomics**
93
+ - **`docs/PLAYBOOK.md`** (new): intent → exact-call table, all-33 proposalType
94
+ params reference, error → remedy table, unit conventions, toolset map,
95
+ signer bootstrap + faucets. Served as MCP resource `dexe://playbook`;
96
+ drift-guarded by tests.
97
+ - `dexe_context` reports enabled vs hidden toolsets and what each hidden set
98
+ unlocks, plus the exact `DEXE_TOOLSETS` fix.
99
+ - MCP handshake now reports the real package version (was hardcoded `0.1.5`).
100
+ - Missing-Pinata errors are a numbered 3-step guide; the OTC open-sale
101
+ description stops pointing at a dev-gated tool.
102
+
103
+ **Migration notes** (details in `docs/MIGRATION.md`)
104
+ - Unknown `proposalType` strings are rejected at validation.
105
+ - Scripts that treated mined-but-reverted txs as success must check
106
+ `isError`/`reverted`.
107
+ - `depositFirst` default changed `false` → `'auto'` (may broadcast
108
+ approve+deposit when power is short; pass `false` for the old behavior).
109
+ - Invalid `.env` values now stop startup.
110
+
3
111
  ## 0.21.0 — 2026-07-06
4
112
 
5
113
  ### One-call avatar updates + file-path uploads
package/README.md CHANGED
@@ -177,8 +177,9 @@ No variable is required to start the server; tools that need a missing one fail
177
177
 
178
178
  ## Documentation
179
179
 
180
+ - [docs/PLAYBOOK.md](./docs/PLAYBOOK.md) — the AI playbook: intent → exact call, per-type params, error → remedy. Also served as the MCP resource `dexe://playbook`.
180
181
  - [docs/TOOLS.md](./docs/TOOLS.md) — all 159 tools, grouped, with one-line descriptions and required env vars.
181
- - [docs/USAGE.md](./docs/USAGE.md) — ten worked examples with copy-pasteable JSON.
182
+ - [docs/USAGE.md](./docs/USAGE.md) — worked examples with copy-pasteable JSON.
182
183
  - [docs/ENVIRONMENT.md](./docs/ENVIRONMENT.md) — full env-var reference and common pitfalls.
183
184
  - [docs/INSTALL.md](./docs/INSTALL.md) — install instructions per MCP client.
184
185
  - [docs/SETUP.md](./docs/SETUP.md) / [docs/DOCTOR.md](./docs/DOCTOR.md) — setup wizard and diagnostic reference.
@@ -64,8 +64,10 @@ dexe_dao_create({
64
64
  quorumPercent: 51, // must be ≥50 AND ≤ (100 − treasuryPercent)
65
65
  voteModel: "LINEAR", // 1 token = 1 vote (default); or "POLYNOMIAL"
66
66
  durationSeconds: 86400, // 1 day
67
+ minVotesTokens: "1", // min balance to vote AND create, whole tokens (≤ largest holder)
68
+ earlyCompletion: true, // end voting as soon as quorum is reached
67
69
  daoDescription: "A community treasury DAO.",
68
- avatarCID: "bafy…" // optional
70
+ avatarCID: "bafy…" // optional; or avatarPath: local image path the server uploads
69
71
  })
70
72
  ```
71
73
 
@@ -75,6 +77,9 @@ This returns `mode: "preview"` with the **resolved config** (who holds what) and
75
77
  4. **Confirm:** re-call with the **same arguments plus `confirm: true`** to broadcast.
76
78
  The deployer holds the entire distributed portion; the treasury is an **implicit
77
79
  remainder** (the govPool address is never a token recipient).
80
+ When the user has **already approved** the deploy up front, pass
81
+ `confirm: true` on the **first** call — preview and broadcast collapse into
82
+ one call.
78
83
 
79
84
  ## Recipe — ADVANCED mode (full control)
80
85
 
@@ -122,4 +127,9 @@ SIMPLE fields. The coherence guards still run. Key rules for hand-built params:
122
127
  The result includes `predictedGovPool` — the DAO's GovPool address once the tx
123
128
  confirms. Use it for `dexe_proposal_create` / `dexe_proposal_vote_and_execute`.
124
129
 
130
+ DAOs deployed by `dexe_dao_create` have the **TokenSale + Distribution
131
+ executors and all 5 settings groups auto-wired** (since v0.19) — the OTC
132
+ journey ([[dexe-otc]]) works immediately after deploy, no extra settings
133
+ proposal needed.
134
+
125
135
  Related: [[dexe-create-proposal]], [[dexe-vote-execute]].
@@ -23,8 +23,13 @@ When the user already told you the DAO and what to do, go straight to
23
23
 
24
24
  **Do not hand-sequence** approve/deposit/create, and do not hand-build the IPFS
25
25
  metadata — the composite does both correctly. **Do not guess ABIs/selectors**;
26
- the wired builders encode canonical calldata. Only reach for `dexe_get_methods`
27
- when composing a truly custom call.
26
+ the wired builders encode canonical calldata. For a truly custom call use the
27
+ `custom_abi` type; `dexe_proposal_catalog` (or the playbook — MCP resource
28
+ `dexe://playbook`, `docs/PLAYBOOK.md`) lists every type and its params.
29
+
30
+ **Amounts:** a digits-only string is raw wei; a string with a decimal point
31
+ (`"1000.0"`) is human units, scaled by the token's **real on-chain decimals**
32
+ (never assumed 18). Both forms work in every `params` amount and `voteAmount`.
28
33
 
29
34
  ## Pick a proposalType
30
35
 
@@ -43,8 +48,24 @@ Pass `proposalType` + the type's inputs in `params`:
43
48
  | `modify_dao_profile` | top-level `newDaoName/newDaoDescription/newWebsiteUrl/newSocialLinks`; avatar via `newAvatarPath` (local image path — the server uploads + validates it; do NOT read the file yourself) or `newAvatarCID` |
44
49
  | `custom` | top-level `actionsOnFor:[{executor,value,data}]` (+ optional `category`) |
45
50
 
46
- Any other catalog type the tool errors and names the dedicated
47
- `dexe_proposal_build_*` tool. Discover all 33 types with `dexe_proposal_catalog`.
51
+ **All 33 catalog types are wired** `proposalType` is a strict enum; an
52
+ unknown string is rejected at validation with the list of valid types. Beyond
53
+ the table above: treasury/tokens (`apply_to_dao`, `token_sale_recover`,
54
+ `token_sale_whitelist`), governance config (`new_proposal_type`,
55
+ `enable_staking`, `change_math_model`, `manage_validators` /
56
+ `validators_allocation`), experts/delegation (`delegate_to_expert` /
57
+ `revoke_from_expert`, plus catalog-style aliases like
58
+ `delegate_tokens_to_expert` and `add_local_expert` / `add_global_expert`),
59
+ token controls (`blacklist`, `reward_multiplier`), and staking
60
+ (`create_staking_tier`).
61
+
62
+ Internal validator types (`change_validator_balances`,
63
+ `change_validator_settings`, `monthly_withdraw`, `offchain_internal_proposal`)
64
+ **auto-route to `GovValidators.createInternalProposal`** — validators only, no
65
+ deposit or UserKeeper approve. Off-chain types (`offchain_single_option` /
66
+ `_multi_option` / `_for_against`) are rejected with the exact backend flow
67
+ (`dexe_proposal_build_offchain_*` → auth nonce/login → authorized POST).
68
+ Discover every type + params with `dexe_proposal_catalog`.
48
69
 
49
70
  ## Example: transfer treasury tokens
50
71
 
@@ -55,7 +76,7 @@ dexe_proposal_create({
55
76
  proposalType: "token_transfer",
56
77
  title: "Pay contributor grant",
57
78
  description: "Q3 grant to @alice.",
58
- params: { token: "0xGovToken", recipient: "0xAlice", amount: "1000000000000000000" }
79
+ params: { token: "0xGovToken", recipient: "0xAlice", amount: "1000.0" } // human units
59
80
  })
60
81
  ```
61
82
 
@@ -41,6 +41,11 @@ Validate on **BSC testnet (chain 97)** first. Full recipe + runnable proof:
41
41
 
42
42
  ## Critical gotchas
43
43
 
44
+ - **Buyer amounts accept human units** — a decimal string (`"50.0"`) is scaled
45
+ by the token's real on-chain decimals; digits-only stays raw wei.
46
+ `dexe_otc_buyer_buy` converts the 18-dec-normalized buy amount to the
47
+ **payment token's native decimals** for the balance check and the exact
48
+ approve — no silent under-pay on <18-dec payment tokens.
44
49
  - **Exchange rate is PRECISION 1e25**, not 1e18. 1:1 = `"10000000000000000000000000"`.
45
50
  - **Native BNB = `0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE`** (ETHEREUM_ADDRESS),
46
51
  never `0x0…0` — a zero-address purchase token makes the tier unbuyable. Buy
@@ -24,14 +24,27 @@ dexe_proposal_vote_and_execute({
24
24
  chainId: 97,
25
25
  proposalId: 1, // 1-indexed
26
26
  isVoteFor: true,
27
- depositFirst: false, // set true to deposit wallet tokens before voting
27
+ depositFirst: "auto", // the default deposits the shortfall automatically
28
28
  autoExecute: true // execute automatically once it passes
29
29
  })
30
30
  ```
31
31
 
32
+ - **`depositFirst` is `boolean | "auto"`, default `"auto"`:** when your deposited
33
+ power is short of `voteAmount`, the tool deposits **exactly the missing
34
+ amount** from your wallet (approve UserKeeper → deposit → vote). Pass `false`
35
+ to never deposit (the old behavior), `true` to force a deposit.
32
36
  - Already past voting (state `SucceededFor` / `SucceededAgainst` / `Locked`) →
33
- the tool skips the vote and goes straight to execute.
34
- - `voteAmount` defaults to all available deposited power. Pass it to vote with less.
37
+ the tool skips the vote and goes straight to execute. Any other non-`Voting`
38
+ state errors with a **per-state remedy** (execute / wait / new proposal).
39
+ - `voteAmount` defaults to all available deposited power. Pass it to vote with
40
+ less — human units (`"250.5"`) or raw wei both work.
41
+
42
+ ## Partial failure → fix and re-run the SAME call
43
+
44
+ A failed step returns `mode: "failed"` with a `failure` ledger:
45
+ `failedStep`, an actionable `error`, `landedSteps` (txs that DID land — gas
46
+ already spent), and `resume` guidance. Fix the cause and re-run the same call —
47
+ completed steps (approve/deposit) are detected on-chain and skipped.
35
48
 
36
49
  ## Canonical ProposalState ordering (failure mode 9)
37
50
 
package/dist/config.d.ts CHANGED
@@ -21,7 +21,14 @@ export declare const DEFAULTS: {
21
21
  };
22
22
  export interface ChainConfig {
23
23
  chainId: number;
24
+ /** Primary RPC endpoint — always `rpcUrls[0]`. Kept for back-compat reads. */
24
25
  rpcUrl: string;
26
+ /**
27
+ * Full endpoint list for this chain: primary first, then transport-failure
28
+ * fallbacks (comma-separated in env, or the baked public list). Consumed by
29
+ * `createChainProvider` (src/rpc.ts) for retry + rotation.
30
+ */
31
+ rpcUrls: string[];
25
32
  /** Optional `ContractsRegistry` override scoped to this chain. */
26
33
  registryOverride?: string;
27
34
  }
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,QAAQ;;;;;;CAUX,CAAC;AAEX,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;;;;;;OAMG;IACH,sBAAsB,EAAE,OAAO,CAAC;IAEhC;;;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;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC;;;;OAIG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB,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;IAExC;;;;OAIG;IACH,QAAQ,EAAE,MAAM,EAAE,CAAC;IAEnB;;;;;OAKG;IACH,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;GAKG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,CA6TtD;AAcD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,WAAW,CAW9E"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAcA;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,QAAQ;;;;;;CAUX,CAAC;AAEX,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,8EAA8E;IAC9E,MAAM,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,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;;;;;;OAMG;IACH,sBAAsB,EAAE,OAAO,CAAC;IAEhC;;;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;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC;;;;OAIG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB,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;IAExC;;;;OAIG;IACH,QAAQ,EAAE,MAAM,EAAE,CAAC;IAEnB;;;;;OAKG;IACH,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;GAKG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,CAgWtD;AAcD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,WAAW,CAW9E"}
package/dist/config.js CHANGED
@@ -2,6 +2,14 @@ import { existsSync } from "node:fs";
2
2
  import { resolve } from "node:path";
3
3
  import { resolveProtocolPath, isBuildReady } from "./bootstrap.js";
4
4
  import { resolveStatePath } from "./lib/stateStore.js";
5
+ import { parseEnv } from "./env/parse.js";
6
+ /**
7
+ * Split an RPC env value into its endpoint list: `url` or `url1,url2,…`.
8
+ * First entry is the primary; the rest are transport-failure fallbacks.
9
+ */
10
+ function splitRpcUrls(raw) {
11
+ return raw.split(",").map((s) => s.trim()).filter(Boolean);
12
+ }
5
13
  /**
6
14
  * Baked zero-config defaults — public, non-secret endpoints (plus a semi-public
7
15
  * WalletConnect project id) so a fresh install works cold with no `.env`. A user
@@ -31,6 +39,21 @@ export const DEFAULTS = {
31
39
  * that lazily from inside build/test tools.
32
40
  */
33
41
  export async function loadConfig() {
42
+ // ---- schema-validate the DEXE_* env surface up front (R5) ---------------
43
+ // parse.ts walks ENV_SPEC; an invalid value (malformed URL, non-integer,
44
+ // bad enum) is a config error the user should see at startup, not a
45
+ // confusing late failure deep inside a tool call. Doctor performs the same
46
+ // validation; this makes startup honest about it too.
47
+ {
48
+ const { issues } = parseEnv();
49
+ const errors = issues.filter((i) => i.severity === "error");
50
+ for (const issue of issues) {
51
+ process.stderr.write(`[dexe-mcp] env ${issue.severity}: ${issue.message}\n`);
52
+ }
53
+ if (errors.length > 0) {
54
+ fatal(`invalid environment: ${errors.map((i) => i.key).join(", ")} — fix the value(s) in .env and restart. Run 'npx dexe-mcp doctor' for details.`);
55
+ }
56
+ }
34
57
  const protocolPath = resolve(resolveProtocolPath());
35
58
  // Soft warning only — don't block startup. The lazy bootstrap will either
36
59
  // create the checkout (auto-managed path) or surface a clear error when a
@@ -51,11 +74,13 @@ export async function loadConfig() {
51
74
  const registryOverride = process.env.DEXE_CONTRACTS_REGISTRY?.trim() || undefined;
52
75
  const rpcTestnet = process.env.DEXE_RPC_URL_TESTNET?.trim() || undefined;
53
76
  if (rpcTestnet) {
54
- chains.set(97, { chainId: 97, rpcUrl: rpcTestnet });
77
+ const urls = splitRpcUrls(rpcTestnet);
78
+ chains.set(97, { chainId: 97, rpcUrl: urls[0], rpcUrls: urls });
55
79
  }
56
80
  const rpcMainnet = process.env.DEXE_RPC_URL_MAINNET?.trim() || undefined;
57
81
  if (rpcMainnet) {
58
- chains.set(56, { chainId: 56, rpcUrl: rpcMainnet });
82
+ const urls = splitRpcUrls(rpcMainnet);
83
+ chains.set(56, { chainId: 56, rpcUrl: urls[0], rpcUrls: urls });
59
84
  }
60
85
  // Generic per-chain RPC: DEXE_RPC_URL_<chainId> (e.g. DEXE_RPC_URL_1,
61
86
  // DEXE_RPC_URL_10). Enables chains beyond BSC — notably the external
@@ -69,7 +94,8 @@ export async function loadConfig() {
69
94
  if (!url)
70
95
  continue;
71
96
  const cid = Number(m[1]);
72
- chains.set(cid, { chainId: cid, rpcUrl: url });
97
+ const urls = splitRpcUrls(url);
98
+ chains.set(cid, { chainId: cid, rpcUrl: urls[0], rpcUrls: urls });
73
99
  }
74
100
  // Legacy single-chain env (still supported)
75
101
  const legacyRpc = process.env.DEXE_RPC_URL?.trim() || undefined;
@@ -82,13 +108,15 @@ export async function loadConfig() {
82
108
  legacyChainId = n;
83
109
  }
84
110
  if (legacyRpc) {
111
+ const legacyUrls = splitRpcUrls(legacyRpc);
85
112
  // Resolve legacy chainId. If unset, infer from URL hostname; fall back to 56.
86
- const inferred = legacyChainId ?? inferChainIdFromRpcUrl(legacyRpc) ?? 56;
113
+ const inferred = legacyChainId ?? inferChainIdFromRpcUrl(legacyUrls[0]) ?? 56;
87
114
  // Apply registryOverride only when this is the legacy chain (per-chain
88
115
  // override via DEXE_CONTRACTS_REGISTRY has always been single-chain).
89
116
  chains.set(inferred, {
90
117
  chainId: inferred,
91
- rpcUrl: legacyRpc,
118
+ rpcUrl: legacyUrls[0],
119
+ rpcUrls: legacyUrls,
92
120
  registryOverride,
93
121
  });
94
122
  }
@@ -100,14 +128,26 @@ export async function loadConfig() {
100
128
  // rate-limit and lack archive history, so we surface a hint (below) nudging
101
129
  // the user to set their own RPC for anything serious. Opt out entirely with
102
130
  // DEXE_DISABLE_PUBLIC_RPC=1. When the user set any RPC, this does nothing.
131
+ // Multiple public endpoints per chain: ResilientRpcProvider rotates to the
132
+ // next one when the primary rate-limits (R1), so zero-config reads survive a
133
+ // single flaky dataseed node.
103
134
  const PUBLIC_RPC_FALLBACK = {
104
- 56: "https://bsc-dataseed.bnbchain.org",
105
- 97: "https://data-seed-prebsc-1-s1.bnbchain.org:8545",
135
+ 56: [
136
+ "https://bsc-dataseed.bnbchain.org",
137
+ "https://bsc-dataseed1.bnbchain.org",
138
+ "https://bsc-dataseed2.bnbchain.org",
139
+ "https://bsc-rpc.publicnode.com",
140
+ ],
141
+ 97: [
142
+ "https://data-seed-prebsc-1-s1.bnbchain.org:8545",
143
+ "https://data-seed-prebsc-2-s1.bnbchain.org:8545",
144
+ "https://bsc-testnet-rpc.publicnode.com",
145
+ ],
106
146
  };
107
147
  let usedPublicFallback = false;
108
148
  if (process.env.DEXE_DISABLE_PUBLIC_RPC?.trim() !== "1" && chains.size === 0) {
109
- for (const [cid, url] of Object.entries(PUBLIC_RPC_FALLBACK)) {
110
- chains.set(Number(cid), { chainId: Number(cid), rpcUrl: url });
149
+ for (const [cid, urls] of Object.entries(PUBLIC_RPC_FALLBACK)) {
150
+ chains.set(Number(cid), { chainId: Number(cid), rpcUrl: urls[0], rpcUrls: urls });
111
151
  }
112
152
  usedPublicFallback = true;
113
153
  }
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
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;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C;;;GAGG;AACH,SAAS,YAAY,CAAC,GAAW;IAC/B,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC7D,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,aAAa,EAAE,qBAAqB;IACpC,sBAAsB,EAAE,kCAAkC;IAC1D,2EAA2E;IAC3E,gBAAgB,EACd,6HAA6H;IAC/H,uBAAuB,EACrB,6HAA6H;IAC/H,qBAAqB,EACnB,6HAA6H;CACvH,CAAC;AAkIX;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,4EAA4E;IAC5E,yEAAyE;IACzE,oEAAoE;IACpE,2EAA2E;IAC3E,sDAAsD;IACtD,CAAC;QACC,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC;QAC5D,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;QAC/E,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,KAAK,CACH,wBAAwB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,iFAAiF,CAC7I,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,YAAY,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAEpD,0EAA0E;IAC1E,0EAA0E;IAC1E,gEAAgE;IAChE,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,kDAAkD,YAAY,mDAAmD,CAClH,CAAC;IACJ,CAAC;SAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,CAAC;QACvC,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,wCAAwC,YAAY,0GAA0G,CAC/J,CAAC;IACJ,CAAC;IAED,2EAA2E;IAC3E,YAAY;IACZ,uCAAuC;IACvC,uCAAuC;IACvC,iEAAiE;IACjE,+EAA+E;IAC/E,MAAM,MAAM,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC9C,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC;IAElF,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC;IACzE,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,IAAI,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;QACtC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IACnE,CAAC;IACD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC;IACzE,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,IAAI,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;QACtC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,sEAAsE;IACtE,qEAAqE;IACrE,2EAA2E;IAC3E,yEAAyE;IACzE,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACrD,MAAM,CAAC,GAAG,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3C,IAAI,CAAC,CAAC;YAAE,SAAS;QACjB,MAAM,GAAG,GAAG,GAAG,EAAE,IAAI,EAAE,CAAC;QACxB,IAAI,CAAC,GAAG;YAAE,SAAS;QACnB,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzB,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;QAC/B,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IACrE,CAAC;IAED,4CAA4C;IAC5C,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC;IAChE,IAAI,aAAiC,CAAC;IACtC,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;QAC9B,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,KAAK,CAAC,kDAAkD,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC;QACvF,CAAC;QACD,aAAa,GAAG,CAAC,CAAC;IACpB,CAAC;IACD,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,UAAU,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;QAC3C,8EAA8E;QAC9E,MAAM,QAAQ,GAAG,aAAa,IAAI,sBAAsB,CAAC,UAAU,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,CAAC;QAC/E,uEAAuE;QACvE,sEAAsE;QACtE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE;YACnB,OAAO,EAAE,QAAQ;YACjB,MAAM,EAAE,UAAU,CAAC,CAAC,CAAE;YACtB,OAAO,EAAE,UAAU;YACnB,gBAAgB;SACjB,CAAC,CAAC;IACL,CAAC;IAED,2EAA2E;IAC3E,6EAA6E;IAC7E,2EAA2E;IAC3E,4EAA4E;IAC5E,uEAAuE;IACvE,4EAA4E;IAC5E,4EAA4E;IAC5E,2EAA2E;IAC3E,2EAA2E;IAC3E,6EAA6E;IAC7E,8BAA8B;IAC9B,MAAM,mBAAmB,GAA6B;QACpD,EAAE,EAAE;YACF,mCAAmC;YACnC,oCAAoC;YACpC,oCAAoC;YACpC,gCAAgC;SACjC;QACD,EAAE,EAAE;YACF,iDAAiD;YACjD,iDAAiD;YACjD,wCAAwC;SACzC;KACF,CAAC;IACF,IAAI,kBAAkB,GAAG,KAAK,CAAC;IAC/B,IAAI,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,IAAI,EAAE,KAAK,GAAG,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QAC7E,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE,CAAC;YAC9D,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACrF,CAAC;QACD,kBAAkB,GAAG,IAAI,CAAC;IAC5B,CAAC;IAED,2EAA2E;IAC3E,IAAI,cAAsB,CAAC;IAC3B,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,IAAI,EAAE,CAAC;IAClE,IAAI,eAAe,EAAE,CAAC;QACpB,MAAM,CAAC,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;QAClC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,KAAK,CAAC,0DAA0D,eAAe,EAAE,CAAC,CAAC;QACrF,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACnB,MAAM,UAAU,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC;YAClE,KAAK,CACH,yBAAyB,CAAC,uDAAuD,UAAU,uBAAuB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,0BAA0B,CACpM,CAAC;QACJ,CAAC;QACD,cAAc,GAAG,CAAC,CAAC;IACrB,CAAC;SAAM,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QAC7B,cAAc,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC;IAC1C,CAAC;SAAM,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACxD,IAAI,kBAAkB,EAAE,CAAC;YACvB,yEAAyE;YACzE,mEAAmE;YACnE,cAAc,GAAG,EAAE,CAAC;YACpB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,mFAAmF;gBACjF,sFAAsF;gBACtF,4FAA4F,CAC/F,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,yFAAyF;YACzF,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC;YAClD,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,sFAAsF,cAAc,KAAK,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,cAAc,EAAE,uDAAuD,CAChN,CAAC;QACJ,CAAC;IACH,CAAC;SAAM,CAAC;QACN,2EAA2E;QAC3E,cAAc,GAAG,aAAa,IAAI,EAAE,CAAC;IACvC,CAAC;IAED,4EAA4E;IAC5E,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QACpB,MAAM,OAAO,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;aACjC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC;aACrC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,KAAK,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;aAClE,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,OAAO,6BAA6B,CAAC,CAAC;IACpF,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,oGAAoG,CACrG,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC;IACnE,6EAA6E;IAC7E,4EAA4E;IAC5E,4BAA4B;IAC5B,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,IAAI,EAAE,IAAI,QAAQ,CAAC,gBAAgB,CAAC;IAClG,MAAM,qBAAqB,GACzB,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAAE,IAAI,EAAE,IAAI,QAAQ,CAAC,qBAAqB,CAAC;IACrF,MAAM,uBAAuB,GAC3B,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,IAAI,EAAE,IAAI,QAAQ,CAAC,uBAAuB,CAAC;IACzF,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,IAAI,EAAE,IAAI,QAAQ,CAAC,aAAa,CAAC;IAEzF,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC;IACrE,IAAI,UAAU,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACpC,KAAK,CACH,iJAAiJ,CAClJ,CAAC;IACJ,CAAC;IACD,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC1C,MAAM,IAAI,GAAG,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC;QAC5C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kCAAkC,IAAI,IAAI,CAAC,CAAC;QACjE,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,8HAA8H,CAC/H,CAAC;IACJ,CAAC;IAED,2EAA2E;IAC3E,0EAA0E;IAC1E,yCAAyC;IACzC,IAAI,eAAqC,CAAC;IAC1C,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,IAAI,EAAE,CAAC;IAC/D,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;QACzD,MAAM,UAAU,GAAa,EAAE,CAAC;QAChC,KAAK,MAAM,KAAK,IAAI,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;YAC/E,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;gBACtB,KAAK,CAAC,sDAAsD,KAAK,EAAE,CAAC,CAAC;YACvE,CAAC;YACD,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QACnD,CAAC;QACD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC;YAAE,eAAe,GAAG,UAAU,CAAC;IAC1D,CAAC;IAED,2EAA2E;IAC3E,IAAI,iBAAqC,CAAC;IAC1C,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE,IAAI,EAAE,CAAC;IAClE,IAAI,WAAW,EAAE,CAAC;QAChB,IAAI,MAAc,CAAC;QACnB,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;YACP,KAAK,CAAC,wEAAwE,WAAW,EAAE,CAAC,CAAC;QAC/F,CAAC;QACD,IAAI,MAAO,GAAG,EAAE,EAAE,CAAC;YACjB,KAAK,CAAC,wEAAwE,WAAW,EAAE,CAAC,CAAC;QAC/F,CAAC;QACD,iBAAiB,GAAG,MAAO,CAAC;IAC9B,CAAC;IAED,2EAA2E;IAC3E,IAAI,yBAA6C,CAAC;IAClD,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,kCAAkC,EAAE,IAAI,EAAE,CAAC;IAChF,IAAI,gBAAgB,EAAE,CAAC;QACrB,MAAM,CAAC,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;QACnC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,KAAK,CAAC,uEAAuE,gBAAgB,EAAE,CAAC,CAAC;QACnG,CAAC;QACD,yBAAyB,GAAG,CAAC,CAAC;IAChC,CAAC;IAED,0EAA0E;IAC1E,yEAAyE;IACzE,yEAAyE;IACzE,oEAAoE;IACpE,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,6BAA6B,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC;IACjF,MAAM,sBAAsB,GAAG,SAAS,IAAI,QAAQ,CAAC,sBAAsB,CAAC;IAC5E,MAAM,qBAAqB,GACzB,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAAE,IAAI,EAAE,IAAI,+BAA+B,CAAC;IACtF,IAAI,8BAA8B,GAAG,MAAM,CAAC;IAC5C,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,sCAAsC,EAAE,IAAI,EAAE,CAAC;IAChF,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;QAC/B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,KAAK,CAAC,gFAAgF,YAAY,EAAE,CAAC,CAAC;QACxG,CAAC;QACD,8BAA8B,GAAG,CAAC,CAAC;IACrC,CAAC;IACD,IAAI,UAAU,EAAE,CAAC;QACf,6EAA6E;QAC7E,2DAA2D;IAC7D,CAAC;SAAM,IAAI,SAAS,EAAE,CAAC;QACrB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,oEAAoE,CAAC,CAAC;IAC7F,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,sKAAsK,CACvK,CAAC;IACJ,CAAC;IAED,2EAA2E;IAC3E,IAAI,gBAAgB,GAAG,EAAE,CAAC;IAC1B,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,IAAI,EAAE,CAAC;IAClE,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;QAC/B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;YAC5C,KAAK,CAAC,qEAAqE,YAAY,EAAE,CAAC,CAAC;QAC7F,CAAC;QACD,gBAAgB,GAAG,CAAC,CAAC;IACvB,CAAC;IACD,IAAI,aAAa,GAAmB,MAAM,CAAC;IAC3C,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC/E,IAAI,gBAAgB,EAAE,CAAC;QACrB,IAAI,gBAAgB,KAAK,KAAK,IAAI,gBAAgB,KAAK,MAAM,EAAE,CAAC;YAC9D,KAAK,CAAC,qDAAqD,gBAAgB,EAAE,CAAC,CAAC;QACjF,CAAC;QACD,aAAa,GAAG,gBAAgB,CAAC;IACnC,CAAC;IACD,IAAI,eAAe,GAAG,CAAC,CAAC;IACxB,MAAM,kBAAkB,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,IAAI,EAAE,CAAC;IACrE,IAAI,kBAAkB,EAAE,CAAC;QACvB,MAAM,CAAC,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;QACrC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,KAAK,CAAC,0DAA0D,kBAAkB,EAAE,CAAC,CAAC;QACxF,CAAC;QACD,eAAe,GAAG,CAAC,CAAC;IACtB,CAAC;IAED,IAAI,SAA6B,CAAC;IAClC,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC;QAChC,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QAC9C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACjC,KAAK,CAAC,wDAAwD,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,CAAC;QAC/F,CAAC;QACD,SAAS,GAAG,CAAC,CAAC;IAChB,CAAC;IAED,2EAA2E;IAC3E,2EAA2E;IAC3E,2EAA2E;IAC3E,gEAAgE;IAChE,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC;IACtD,MAAM,QAAQ,GAAG,WAAW;QAC1B,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;QAC3E,CAAC,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAE1B,MAAM,SAAS,GAAG,gBAAgB,EAAE,CAAC;IAErC,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAEhD,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,YAAY;QACZ,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;QACtC,cAAc;QACd,sBAAsB,EAAE,kBAAkB;QAC1C,OAAO,EAAE,cAAc;QACvB,MAAM,EAAE,YAAY,EAAE,MAAM;QAC5B,gBAAgB,EAAE,YAAY,EAAE,gBAAgB,IAAI,gBAAgB;QACpE,SAAS;QACT,gBAAgB;QAChB,qBAAqB;QACrB,uBAAuB;QACvB,aAAa;QACb,SAAS;QACT,UAAU;QACV,gBAAgB;QAChB,aAAa;QACb,eAAe;QACf,eAAe;QACf,iBAAiB;QACjB,yBAAyB;QACzB,sBAAsB;QACtB,qBAAqB;QACrB,8BAA8B;QAC9B,QAAQ;QACR,SAAS;KACV,CAAe,CAAC;AACnB,CAAC;AAED;;;;GAIG;AACH,SAAS,sBAAsB,CAAC,GAAW;IACzC,MAAM,CAAC,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IAC5B,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC;QAAE,OAAO,EAAE,CAAC;IAC7D,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC;QAAE,OAAO,EAAE,CAAC;IAC1D,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,MAAkB,EAAE,OAAgB;IAC/D,MAAM,MAAM,GAAG,OAAO,IAAI,MAAM,CAAC,cAAc,CAAC;IAChD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACxC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,UAAU,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC;QACzE,MAAM,IAAI,KAAK,CACb,iCAAiC,MAAM,yBAAyB,UAAU,KAAK;YAC7E,oBAAoB,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,wBAAwB,CAChH,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,KAAK,CAAC,GAAW;IACxB,oDAAoD;IACpD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAAC;IACnD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
@@ -76,11 +76,11 @@ export declare const ENV_SPEC: {
76
76
  readonly doc: "Override path for the persistent operational-state JSON (known DAOs / recent proposals surfaced by dexe_context). Default ~/.dexe-mcp/state.json. Must be in a writable directory.";
77
77
  };
78
78
  readonly DEXE_RPC_URL: {
79
- readonly schema: z.ZodOptional<z.ZodString>;
79
+ readonly schema: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
80
80
  readonly category: "rpc";
81
81
  readonly required: false;
82
82
  readonly example: "https://bsc-dataseed.binance.org";
83
- readonly doc: "Legacy single-chain RPC. Prefer DEXE_RPC_URL_TESTNET / _MAINNET / _<chainId>.";
83
+ readonly doc: "Legacy single-chain RPC. Prefer DEXE_RPC_URL_TESTNET / _MAINNET / _<chainId>. Accepts a comma-separated fallback list.";
84
84
  readonly enablesFlows: readonly ["read", "broadcast"];
85
85
  };
86
86
  readonly DEXE_CHAIN_ID: {
@@ -91,21 +91,28 @@ export declare const ENV_SPEC: {
91
91
  readonly doc: "Chain id for legacy DEXE_RPC_URL. Inferred from hostname when unset.";
92
92
  };
93
93
  readonly DEXE_RPC_URL_TESTNET: {
94
- readonly schema: z.ZodOptional<z.ZodString>;
94
+ readonly schema: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
95
95
  readonly category: "rpc";
96
96
  readonly required: false;
97
97
  readonly example: "https://data-seed-prebsc-1-s1.bnbchain.org:8545";
98
- readonly doc: "RPC URL for BSC testnet (chain 97).";
98
+ readonly doc: "RPC URL for BSC testnet (chain 97). Accepts a comma-separated fallback list — the first is primary, the rest rotate on transport failures.";
99
99
  readonly enablesFlows: readonly ["read", "broadcast"];
100
100
  };
101
101
  readonly DEXE_RPC_URL_MAINNET: {
102
- readonly schema: z.ZodOptional<z.ZodString>;
102
+ readonly schema: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
103
103
  readonly category: "rpc";
104
104
  readonly required: false;
105
105
  readonly example: "https://bsc-dataseed.bnbchain.org";
106
- readonly doc: "RPC URL for BSC mainnet (chain 56).";
106
+ readonly doc: "RPC URL for BSC mainnet (chain 56). Accepts a comma-separated fallback list — the first is primary, the rest rotate on transport failures.";
107
107
  readonly enablesFlows: readonly ["read", "broadcast"];
108
108
  };
109
+ readonly DEXE_TX_WAIT_TIMEOUT_MS: {
110
+ readonly schema: z.ZodOptional<z.ZodString>;
111
+ readonly category: "rpc";
112
+ readonly required: false;
113
+ readonly example: "180000";
114
+ readonly doc: "Max milliseconds to wait for a broadcast tx to mine before returning a check-with-dexe_tx_status error. Default 180000 (3 min).";
115
+ };
109
116
  readonly DEXE_DEFAULT_CHAIN_ID: {
110
117
  readonly schema: z.ZodOptional<z.ZodString>;
111
118
  readonly category: "rpc";
@@ -288,6 +295,20 @@ export declare const ENV_SPEC: {
288
295
  readonly example: "";
289
296
  readonly doc: "Optional fork block pin (Phase B).";
290
297
  };
298
+ readonly DEXE_MAX_DESCRIPTION_LEN: {
299
+ readonly schema: z.ZodOptional<z.ZodString>;
300
+ readonly category: "core";
301
+ readonly required: false;
302
+ readonly example: "20000";
303
+ readonly doc: "Max characters accepted for proposal/DAO description markdown before conversion (guards IPFS payload size). Default 20000.";
304
+ };
305
+ readonly DEXE_PROTOCOL_REF: {
306
+ readonly schema: z.ZodOptional<z.ZodString>;
307
+ readonly category: "dev";
308
+ readonly required: false;
309
+ readonly example: "";
310
+ readonly doc: "Git ref (branch/tag/commit) checked out for the auto-managed DeXe-Protocol clone. Default: the pinned release the MCP ships with.";
311
+ };
291
312
  };
292
313
  /**
293
314
  * Re-export with the structural interface so consumers see optional fields
@@ -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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiRwB,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"}
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;AAmBD,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsSwB,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"}
@@ -3,6 +3,15 @@ const hex64 = /^0x[0-9a-fA-F]{64}$/;
3
3
  const hex40 = /^0x[0-9a-fA-F]{40}$/;
4
4
  const intStr = z.string().regex(/^\d+$/);
5
5
  const optionalUrl = z.string().url().optional();
6
+ /**
7
+ * One URL, or a comma-separated list of URLs. The first is the primary
8
+ * endpoint; the rest are transport-failure fallbacks rotated by
9
+ * ResilientRpcProvider (src/rpc.ts).
10
+ */
11
+ const optionalUrlList = z
12
+ .string()
13
+ .refine((v) => v.split(",").map((s) => s.trim()).filter(Boolean).every((u) => z.string().url().safeParse(u).success), { message: "must be a URL or a comma-separated list of URLs" })
14
+ .optional();
6
15
  export const ENV_SPEC = {
7
16
  // ─── core / dev ───────────────────────────────────────────────────────────
8
17
  DEXE_PROTOCOL_PATH: {
@@ -49,11 +58,11 @@ export const ENV_SPEC = {
49
58
  },
50
59
  // ─── rpc ──────────────────────────────────────────────────────────────────
51
60
  DEXE_RPC_URL: {
52
- schema: optionalUrl,
61
+ schema: optionalUrlList,
53
62
  category: "rpc",
54
63
  required: false,
55
64
  example: "https://bsc-dataseed.binance.org",
56
- doc: "Legacy single-chain RPC. Prefer DEXE_RPC_URL_TESTNET / _MAINNET / _<chainId>.",
65
+ doc: "Legacy single-chain RPC. Prefer DEXE_RPC_URL_TESTNET / _MAINNET / _<chainId>. Accepts a comma-separated fallback list.",
57
66
  enablesFlows: ["read", "broadcast"],
58
67
  },
59
68
  DEXE_CHAIN_ID: {
@@ -64,21 +73,28 @@ export const ENV_SPEC = {
64
73
  doc: "Chain id for legacy DEXE_RPC_URL. Inferred from hostname when unset.",
65
74
  },
66
75
  DEXE_RPC_URL_TESTNET: {
67
- schema: optionalUrl,
76
+ schema: optionalUrlList,
68
77
  category: "rpc",
69
78
  required: false,
70
79
  example: "https://data-seed-prebsc-1-s1.bnbchain.org:8545",
71
- doc: "RPC URL for BSC testnet (chain 97).",
80
+ doc: "RPC URL for BSC testnet (chain 97). Accepts a comma-separated fallback list — the first is primary, the rest rotate on transport failures.",
72
81
  enablesFlows: ["read", "broadcast"],
73
82
  },
74
83
  DEXE_RPC_URL_MAINNET: {
75
- schema: optionalUrl,
84
+ schema: optionalUrlList,
76
85
  category: "rpc",
77
86
  required: false,
78
87
  example: "https://bsc-dataseed.bnbchain.org",
79
- doc: "RPC URL for BSC mainnet (chain 56).",
88
+ doc: "RPC URL for BSC mainnet (chain 56). Accepts a comma-separated fallback list — the first is primary, the rest rotate on transport failures.",
80
89
  enablesFlows: ["read", "broadcast"],
81
90
  },
91
+ DEXE_TX_WAIT_TIMEOUT_MS: {
92
+ schema: intStr.optional(),
93
+ category: "rpc",
94
+ required: false,
95
+ example: "180000",
96
+ doc: "Max milliseconds to wait for a broadcast tx to mine before returning a check-with-dexe_tx_status error. Default 180000 (3 min).",
97
+ },
82
98
  DEXE_DEFAULT_CHAIN_ID: {
83
99
  schema: intStr.optional(),
84
100
  category: "rpc",
@@ -268,6 +284,20 @@ export const ENV_SPEC = {
268
284
  example: "",
269
285
  doc: "Optional fork block pin (Phase B).",
270
286
  },
287
+ DEXE_MAX_DESCRIPTION_LEN: {
288
+ schema: intStr.optional(),
289
+ category: "core",
290
+ required: false,
291
+ example: "20000",
292
+ doc: "Max characters accepted for proposal/DAO description markdown before conversion (guards IPFS payload size). Default 20000.",
293
+ },
294
+ DEXE_PROTOCOL_REF: {
295
+ schema: z.string().optional(),
296
+ category: "dev",
297
+ required: false,
298
+ example: "",
299
+ doc: "Git ref (branch/tag/commit) checked out for the auto-managed DeXe-Protocol clone. Default: the pinned release the MCP ships with.",
300
+ },
271
301
  };
272
302
  /**
273
303
  * Re-export with the structural interface so consumers see optional fields