dexe-mcp 0.7.2 → 0.8.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.
Files changed (91) hide show
  1. package/CHANGELOG.md +129 -0
  2. package/README.md +19 -1
  3. package/dist/cli/doctor.d.ts +11 -0
  4. package/dist/cli/doctor.d.ts.map +1 -0
  5. package/dist/cli/doctor.js +44 -0
  6. package/dist/cli/doctor.js.map +1 -0
  7. package/dist/cli/init.d.ts +2 -0
  8. package/dist/cli/init.d.ts.map +1 -0
  9. package/dist/cli/init.js +306 -0
  10. package/dist/cli/init.js.map +1 -0
  11. package/dist/diag/checks.d.ts +25 -0
  12. package/dist/diag/checks.d.ts.map +1 -0
  13. package/dist/diag/checks.js +387 -0
  14. package/dist/diag/checks.js.map +1 -0
  15. package/dist/env/loader.d.ts +43 -0
  16. package/dist/env/loader.d.ts.map +1 -0
  17. package/dist/env/loader.js +121 -0
  18. package/dist/env/loader.js.map +1 -0
  19. package/dist/env/parse.d.ts +23 -0
  20. package/dist/env/parse.d.ts.map +1 -0
  21. package/dist/env/parse.js +41 -0
  22. package/dist/env/parse.js.map +1 -0
  23. package/dist/env/schema.d.ts +257 -0
  24. package/dist/env/schema.d.ts.map +1 -0
  25. package/dist/env/schema.js +240 -0
  26. package/dist/env/schema.js.map +1 -0
  27. package/dist/governor/tools/extras.js +12 -3
  28. package/dist/governor/tools/extras.js.map +1 -1
  29. package/dist/governor/tools/read.js +16 -4
  30. package/dist/governor/tools/read.js.map +1 -1
  31. package/dist/governor/tools/simulate.d.ts.map +1 -1
  32. package/dist/governor/tools/simulate.js +8 -2
  33. package/dist/governor/tools/simulate.js.map +1 -1
  34. package/dist/index.js +31 -11
  35. package/dist/index.js.map +1 -1
  36. package/dist/lib/requireEnv.d.ts +30 -0
  37. package/dist/lib/requireEnv.d.ts.map +1 -0
  38. package/dist/lib/requireEnv.js +48 -0
  39. package/dist/lib/requireEnv.js.map +1 -0
  40. package/dist/lib/signer.d.ts +8 -0
  41. package/dist/lib/signer.d.ts.map +1 -1
  42. package/dist/lib/signer.js +18 -0
  43. package/dist/lib/signer.js.map +1 -1
  44. package/dist/rpc.d.ts +8 -0
  45. package/dist/rpc.d.ts.map +1 -1
  46. package/dist/rpc.js +18 -0
  47. package/dist/rpc.js.map +1 -1
  48. package/dist/tools/dao.d.ts.map +1 -1
  49. package/dist/tools/dao.js +25 -10
  50. package/dist/tools/dao.js.map +1 -1
  51. package/dist/tools/daoDeploy.js +8 -2
  52. package/dist/tools/daoDeploy.js.map +1 -1
  53. package/dist/tools/doctor.d.ts +11 -0
  54. package/dist/tools/doctor.d.ts.map +1 -0
  55. package/dist/tools/doctor.js +75 -0
  56. package/dist/tools/doctor.js.map +1 -0
  57. package/dist/tools/flow.d.ts.map +1 -1
  58. package/dist/tools/flow.js +16 -4
  59. package/dist/tools/flow.js.map +1 -1
  60. package/dist/tools/gov.js +8 -14
  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 +7 -1
  64. package/dist/tools/inbox.js.map +1 -1
  65. package/dist/tools/index.d.ts.map +1 -1
  66. package/dist/tools/index.js +3 -0
  67. package/dist/tools/index.js.map +1 -1
  68. package/dist/tools/otc.d.ts.map +1 -1
  69. package/dist/tools/otc.js +15 -3
  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 -1
  73. package/dist/tools/predict.js.map +1 -1
  74. package/dist/tools/proposal.js +8 -2
  75. package/dist/tools/proposal.js.map +1 -1
  76. package/dist/tools/read.js +40 -10
  77. package/dist/tools/read.js.map +1 -1
  78. package/dist/tools/safe.d.ts.map +1 -1
  79. package/dist/tools/safe.js +12 -3
  80. package/dist/tools/safe.js.map +1 -1
  81. package/dist/tools/simulate.d.ts.map +1 -1
  82. package/dist/tools/simulate.js +16 -3
  83. package/dist/tools/simulate.js.map +1 -1
  84. package/dist/tools/subgraph.js +4 -1
  85. package/dist/tools/subgraph.js.map +1 -1
  86. package/dist/tools/txSend.d.ts.map +1 -1
  87. package/dist/tools/txSend.js +18 -1
  88. package/dist/tools/txSend.js.map +1 -1
  89. package/dist/tools/vote.js +8 -2
  90. package/dist/tools/vote.js.map +1 -1
  91. package/package.json +5 -2
@@ -0,0 +1,257 @@
1
+ import { z } from "zod";
2
+ /**
3
+ * Single source of truth for every DEXE_* env var the MCP recognizes.
4
+ *
5
+ * Consumed by:
6
+ * - `src/env/parse.ts` — validation at startup, accumulates issues
7
+ * - `src/diag/checks.ts` — `dexe_doctor` walks ENV_SPEC for presence checks
8
+ * - `src/lib/requireEnv.ts` — fail-soft tool guards build remediation hints
9
+ *
10
+ * To add a new env var: add an entry here, update docs/ENVIRONMENT.md, and
11
+ * the parity test in tests/env/schema.test.ts will require .env.example to
12
+ * mention it. Categories drive the .env.example layout and doctor output
13
+ * grouping.
14
+ */
15
+ export type EnvCategory = "core" | "rpc" | "signer" | "ipfs" | "subgraph" | "walletconnect" | "safe" | "backend" | "dev";
16
+ /**
17
+ * Feature surfaces that depend on a given env var. Used by hintFor() to tell
18
+ * the user which tools light up when the var is set.
19
+ */
20
+ export type EnvFlow = "read" | "broadcast" | "ipfs-upload" | "ipfs-read" | "subgraph-read" | "dao-deploy" | "safe-tx" | "walletconnect-sign" | "backend-offchain";
21
+ export interface EnvEntry {
22
+ schema: z.ZodType<unknown>;
23
+ category: EnvCategory;
24
+ /** True only for vars without which the MCP cannot start. None today. */
25
+ required: boolean;
26
+ /** Placeholder shown in `.env.example`. */
27
+ example: string;
28
+ /** One-line description mirrored in docs/ENVIRONMENT.md. */
29
+ doc: string;
30
+ /** Which user-visible flows this var unlocks. Doctor + hintFor() use this. */
31
+ enablesFlows?: readonly EnvFlow[];
32
+ /** Mask the value when echoing it (banner, doctor, logs). */
33
+ secret?: boolean;
34
+ }
35
+ export declare const ENV_SPEC: {
36
+ readonly DEXE_PROTOCOL_PATH: {
37
+ readonly schema: z.ZodOptional<z.ZodString>;
38
+ readonly category: "core";
39
+ readonly required: false;
40
+ readonly example: "";
41
+ readonly doc: "Override the DeXe-Protocol checkout path. Auto-managed when unset.";
42
+ };
43
+ readonly DEXE_RPC_URL: {
44
+ readonly schema: z.ZodOptional<z.ZodString>;
45
+ readonly category: "rpc";
46
+ readonly required: false;
47
+ readonly example: "https://bsc-dataseed.binance.org";
48
+ readonly doc: "Legacy single-chain RPC. Prefer DEXE_RPC_URL_TESTNET / _MAINNET / _<chainId>.";
49
+ readonly enablesFlows: readonly ["read", "broadcast"];
50
+ };
51
+ readonly DEXE_CHAIN_ID: {
52
+ readonly schema: z.ZodOptional<z.ZodString>;
53
+ readonly category: "rpc";
54
+ readonly required: false;
55
+ readonly example: "56";
56
+ readonly doc: "Chain id for legacy DEXE_RPC_URL. Inferred from hostname when unset.";
57
+ };
58
+ readonly DEXE_RPC_URL_TESTNET: {
59
+ readonly schema: z.ZodOptional<z.ZodString>;
60
+ readonly category: "rpc";
61
+ readonly required: false;
62
+ readonly example: "https://data-seed-prebsc-1-s1.bnbchain.org:8545";
63
+ readonly doc: "RPC URL for BSC testnet (chain 97).";
64
+ readonly enablesFlows: readonly ["read", "broadcast"];
65
+ };
66
+ readonly DEXE_RPC_URL_MAINNET: {
67
+ readonly schema: z.ZodOptional<z.ZodString>;
68
+ readonly category: "rpc";
69
+ readonly required: false;
70
+ readonly example: "https://bsc-dataseed.bnbchain.org";
71
+ readonly doc: "RPC URL for BSC mainnet (chain 56).";
72
+ readonly enablesFlows: readonly ["read", "broadcast"];
73
+ };
74
+ readonly DEXE_DEFAULT_CHAIN_ID: {
75
+ readonly schema: z.ZodOptional<z.ZodString>;
76
+ readonly category: "rpc";
77
+ readonly required: false;
78
+ readonly example: "97";
79
+ readonly doc: "Default chain id when a tool omits chainId. Must match a configured RPC.";
80
+ };
81
+ readonly DEXE_CONTRACTS_REGISTRY: {
82
+ readonly schema: z.ZodOptional<z.ZodString>;
83
+ readonly category: "rpc";
84
+ readonly required: false;
85
+ readonly example: "";
86
+ readonly doc: "Override ContractsRegistry address for the default chain. Rarely needed.";
87
+ };
88
+ readonly DEXE_PRIVATE_KEY: {
89
+ readonly schema: z.ZodOptional<z.ZodString>;
90
+ readonly category: "signer";
91
+ readonly required: false;
92
+ readonly example: "0x<64-hex>";
93
+ readonly doc: "Hot EOA key for dexe_tx_send broadcast. Requires an RPC.";
94
+ readonly enablesFlows: readonly ["broadcast"];
95
+ readonly secret: true;
96
+ };
97
+ readonly DEXE_SIGNER_ALLOWLIST: {
98
+ readonly schema: z.ZodOptional<z.ZodString>;
99
+ readonly category: "signer";
100
+ readonly required: false;
101
+ readonly example: "";
102
+ readonly doc: "Comma-separated destination address allowlist for dexe_tx_send (B6 guard).";
103
+ };
104
+ readonly DEXE_SIGNER_MAX_VALUE_WEI: {
105
+ readonly schema: z.ZodOptional<z.ZodString>;
106
+ readonly category: "signer";
107
+ readonly required: false;
108
+ readonly example: "";
109
+ readonly doc: "Max wei value per broadcast (B7 guard).";
110
+ };
111
+ readonly DEXE_SIGNER_MAX_BROADCASTS_PER_MIN: {
112
+ readonly schema: z.ZodOptional<z.ZodString>;
113
+ readonly category: "signer";
114
+ readonly required: false;
115
+ readonly example: "";
116
+ readonly doc: "Rate limit broadcasts per rolling minute (B10 guard).";
117
+ };
118
+ readonly DEXE_PINATA_JWT: {
119
+ readonly schema: z.ZodOptional<z.ZodString>;
120
+ readonly category: "ipfs";
121
+ readonly required: false;
122
+ readonly example: "eyJhbGciOiJIUzI1NiIs...";
123
+ readonly doc: "Pinata pinning JWT. Required for IPFS uploads; reads work without it.";
124
+ readonly enablesFlows: readonly ["ipfs-upload", "dao-deploy"];
125
+ readonly secret: true;
126
+ };
127
+ readonly DEXE_IPFS_GATEWAY: {
128
+ readonly schema: z.ZodOptional<z.ZodString>;
129
+ readonly category: "ipfs";
130
+ readonly required: false;
131
+ readonly example: "https://<subdomain>.mypinata.cloud";
132
+ readonly doc: "Primary IPFS gateway base URL for reads.";
133
+ readonly enablesFlows: readonly ["ipfs-read"];
134
+ };
135
+ readonly DEXE_IPFS_GATEWAYS_FALLBACK: {
136
+ readonly schema: z.ZodOptional<z.ZodString>;
137
+ readonly category: "ipfs";
138
+ readonly required: false;
139
+ readonly example: "";
140
+ readonly doc: "Comma-separated public IPFS gateway fallbacks for reads.";
141
+ };
142
+ readonly DEXE_PINATA_GATEWAY_TOKEN: {
143
+ readonly schema: z.ZodOptional<z.ZodString>;
144
+ readonly category: "ipfs";
145
+ readonly required: false;
146
+ readonly example: "";
147
+ readonly doc: "Auth token for a private Pinata dedicated gateway (optional).";
148
+ readonly secret: true;
149
+ };
150
+ readonly DEXE_IPFS_AVATAR_GATEWAY: {
151
+ readonly schema: z.ZodOptional<z.ZodString>;
152
+ readonly category: "ipfs";
153
+ readonly required: false;
154
+ readonly example: "";
155
+ readonly doc: "Optional override for the avatar fetch gateway.";
156
+ };
157
+ readonly DEXE_SUBGRAPH_POOLS_URL: {
158
+ readonly schema: z.ZodOptional<z.ZodString>;
159
+ readonly category: "subgraph";
160
+ readonly required: false;
161
+ readonly example: "https://gateway.thegraph.com/api/subgraphs/id/<id>";
162
+ readonly doc: "Pools subgraph endpoint.";
163
+ readonly enablesFlows: readonly ["subgraph-read"];
164
+ };
165
+ readonly DEXE_SUBGRAPH_VALIDATORS_URL: {
166
+ readonly schema: z.ZodOptional<z.ZodString>;
167
+ readonly category: "subgraph";
168
+ readonly required: false;
169
+ readonly example: "https://gateway.thegraph.com/api/subgraphs/id/<id>";
170
+ readonly doc: "Validators subgraph endpoint.";
171
+ readonly enablesFlows: readonly ["subgraph-read"];
172
+ };
173
+ readonly DEXE_SUBGRAPH_INTERACTIONS_URL: {
174
+ readonly schema: z.ZodOptional<z.ZodString>;
175
+ readonly category: "subgraph";
176
+ readonly required: false;
177
+ readonly example: "https://gateway.thegraph.com/api/subgraphs/id/<id>";
178
+ readonly doc: "Interactions subgraph endpoint.";
179
+ readonly enablesFlows: readonly ["subgraph-read"];
180
+ };
181
+ readonly DEXE_GRAPH_API_KEY: {
182
+ readonly schema: z.ZodOptional<z.ZodString>;
183
+ readonly category: "subgraph";
184
+ readonly required: false;
185
+ readonly example: "";
186
+ readonly doc: "The Graph API key for bearer auth (required by decentralized gateway).";
187
+ readonly secret: true;
188
+ };
189
+ readonly DEXE_WALLETCONNECT_PROJECT_ID: {
190
+ readonly schema: z.ZodOptional<z.ZodString>;
191
+ readonly category: "walletconnect";
192
+ readonly required: false;
193
+ readonly example: "";
194
+ readonly doc: "Reown/WalletConnect project id. Enables phone-approval signer when DEXE_PRIVATE_KEY is unset.";
195
+ readonly enablesFlows: readonly ["walletconnect-sign"];
196
+ };
197
+ readonly DEXE_WALLETCONNECT_RELAY_URL: {
198
+ readonly schema: z.ZodOptional<z.ZodString>;
199
+ readonly category: "walletconnect";
200
+ readonly required: false;
201
+ readonly example: "wss://relay.walletconnect.com";
202
+ readonly doc: "Override WC relay websocket URL.";
203
+ };
204
+ readonly DEXE_WALLETCONNECT_APPROVAL_TIMEOUT_MS: {
205
+ readonly schema: z.ZodOptional<z.ZodString>;
206
+ readonly category: "walletconnect";
207
+ readonly required: false;
208
+ readonly example: "120000";
209
+ readonly doc: "Per-tx phone-approval timeout in milliseconds.";
210
+ };
211
+ readonly DEXE_SAFE_TX_SERVICE_URL: {
212
+ readonly schema: z.ZodOptional<z.ZodString>;
213
+ readonly category: "safe";
214
+ readonly required: false;
215
+ readonly example: "https://api.safe.global/tx-service/bnb/api/v2";
216
+ readonly doc: "Safe Transaction Service base. Required for chains without a hosted service.";
217
+ readonly enablesFlows: readonly ["safe-tx"];
218
+ };
219
+ readonly DEXE_SAFE_API_KEY: {
220
+ readonly schema: z.ZodOptional<z.ZodString>;
221
+ readonly category: "safe";
222
+ readonly required: false;
223
+ readonly example: "";
224
+ readonly doc: "Bearer token for Safe Transaction Service.";
225
+ readonly secret: true;
226
+ };
227
+ readonly DEXE_BACKEND_API_URL: {
228
+ readonly schema: z.ZodOptional<z.ZodString>;
229
+ readonly category: "backend";
230
+ readonly required: false;
231
+ readonly example: "https://api.dexe.io";
232
+ readonly doc: "DeXe backend API root for off-chain proposal flows.";
233
+ readonly enablesFlows: readonly ["backend-offchain"];
234
+ };
235
+ readonly DEXE_FORK_BLOCK: {
236
+ readonly schema: z.ZodOptional<z.ZodString>;
237
+ readonly category: "dev";
238
+ readonly required: false;
239
+ readonly example: "";
240
+ readonly doc: "Optional fork block pin (Phase B).";
241
+ };
242
+ };
243
+ /**
244
+ * Re-export with the structural interface so consumers see optional fields
245
+ * (`secret`, `enablesFlows`). `as const` narrows literals but hides any field
246
+ * not present on every entry, which trips `.secret`/`.enablesFlows` reads.
247
+ */
248
+ export declare const ENV_REGISTRY: Record<EnvKey, EnvEntry>;
249
+ export type EnvKey = keyof typeof ENV_SPEC;
250
+ export declare function isKnownEnvKey(k: string): k is EnvKey;
251
+ export declare function envKeys(): EnvKey[];
252
+ /**
253
+ * Pattern for dynamic per-chain RPC keys (DEXE_RPC_URL_1, DEXE_RPC_URL_10…).
254
+ * Not in ENV_SPEC because the suffix is open-ended.
255
+ */
256
+ export declare const DYNAMIC_PER_CHAIN_RPC_RE: RegExp;
257
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgOwB,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"}
@@ -0,0 +1,240 @@
1
+ import { z } from "zod";
2
+ const hex64 = /^0x[0-9a-fA-F]{64}$/;
3
+ const hex40 = /^0x[0-9a-fA-F]{40}$/;
4
+ const intStr = z.string().regex(/^\d+$/);
5
+ const optionalUrl = z.string().url().optional();
6
+ export const ENV_SPEC = {
7
+ // ─── core / dev ───────────────────────────────────────────────────────────
8
+ DEXE_PROTOCOL_PATH: {
9
+ schema: z.string().optional(),
10
+ category: "core",
11
+ required: false,
12
+ example: "",
13
+ doc: "Override the DeXe-Protocol checkout path. Auto-managed when unset.",
14
+ },
15
+ // ─── rpc ──────────────────────────────────────────────────────────────────
16
+ DEXE_RPC_URL: {
17
+ schema: optionalUrl,
18
+ category: "rpc",
19
+ required: false,
20
+ example: "https://bsc-dataseed.binance.org",
21
+ doc: "Legacy single-chain RPC. Prefer DEXE_RPC_URL_TESTNET / _MAINNET / _<chainId>.",
22
+ enablesFlows: ["read", "broadcast"],
23
+ },
24
+ DEXE_CHAIN_ID: {
25
+ schema: intStr.optional(),
26
+ category: "rpc",
27
+ required: false,
28
+ example: "56",
29
+ doc: "Chain id for legacy DEXE_RPC_URL. Inferred from hostname when unset.",
30
+ },
31
+ DEXE_RPC_URL_TESTNET: {
32
+ schema: optionalUrl,
33
+ category: "rpc",
34
+ required: false,
35
+ example: "https://data-seed-prebsc-1-s1.bnbchain.org:8545",
36
+ doc: "RPC URL for BSC testnet (chain 97).",
37
+ enablesFlows: ["read", "broadcast"],
38
+ },
39
+ DEXE_RPC_URL_MAINNET: {
40
+ schema: optionalUrl,
41
+ category: "rpc",
42
+ required: false,
43
+ example: "https://bsc-dataseed.bnbchain.org",
44
+ doc: "RPC URL for BSC mainnet (chain 56).",
45
+ enablesFlows: ["read", "broadcast"],
46
+ },
47
+ DEXE_DEFAULT_CHAIN_ID: {
48
+ schema: intStr.optional(),
49
+ category: "rpc",
50
+ required: false,
51
+ example: "97",
52
+ doc: "Default chain id when a tool omits chainId. Must match a configured RPC.",
53
+ },
54
+ DEXE_CONTRACTS_REGISTRY: {
55
+ schema: z.string().regex(hex40).optional(),
56
+ category: "rpc",
57
+ required: false,
58
+ example: "",
59
+ doc: "Override ContractsRegistry address for the default chain. Rarely needed.",
60
+ },
61
+ // ─── signer ──────────────────────────────────────────────────────────────
62
+ DEXE_PRIVATE_KEY: {
63
+ schema: z.string().regex(hex64).optional(),
64
+ category: "signer",
65
+ required: false,
66
+ example: "0x<64-hex>",
67
+ doc: "Hot EOA key for dexe_tx_send broadcast. Requires an RPC.",
68
+ enablesFlows: ["broadcast"],
69
+ secret: true,
70
+ },
71
+ DEXE_SIGNER_ALLOWLIST: {
72
+ schema: z.string().optional(),
73
+ category: "signer",
74
+ required: false,
75
+ example: "",
76
+ doc: "Comma-separated destination address allowlist for dexe_tx_send (B6 guard).",
77
+ },
78
+ DEXE_SIGNER_MAX_VALUE_WEI: {
79
+ schema: intStr.optional(),
80
+ category: "signer",
81
+ required: false,
82
+ example: "",
83
+ doc: "Max wei value per broadcast (B7 guard).",
84
+ },
85
+ DEXE_SIGNER_MAX_BROADCASTS_PER_MIN: {
86
+ schema: intStr.optional(),
87
+ category: "signer",
88
+ required: false,
89
+ example: "",
90
+ doc: "Rate limit broadcasts per rolling minute (B10 guard).",
91
+ },
92
+ // ─── ipfs ────────────────────────────────────────────────────────────────
93
+ DEXE_PINATA_JWT: {
94
+ schema: z.string().optional(),
95
+ category: "ipfs",
96
+ required: false,
97
+ example: "eyJhbGciOiJIUzI1NiIs...",
98
+ doc: "Pinata pinning JWT. Required for IPFS uploads; reads work without it.",
99
+ enablesFlows: ["ipfs-upload", "dao-deploy"],
100
+ secret: true,
101
+ },
102
+ DEXE_IPFS_GATEWAY: {
103
+ schema: optionalUrl,
104
+ category: "ipfs",
105
+ required: false,
106
+ example: "https://<subdomain>.mypinata.cloud",
107
+ doc: "Primary IPFS gateway base URL for reads.",
108
+ enablesFlows: ["ipfs-read"],
109
+ },
110
+ DEXE_IPFS_GATEWAYS_FALLBACK: {
111
+ schema: z.string().optional(),
112
+ category: "ipfs",
113
+ required: false,
114
+ example: "",
115
+ doc: "Comma-separated public IPFS gateway fallbacks for reads.",
116
+ },
117
+ DEXE_PINATA_GATEWAY_TOKEN: {
118
+ schema: z.string().optional(),
119
+ category: "ipfs",
120
+ required: false,
121
+ example: "",
122
+ doc: "Auth token for a private Pinata dedicated gateway (optional).",
123
+ secret: true,
124
+ },
125
+ DEXE_IPFS_AVATAR_GATEWAY: {
126
+ schema: optionalUrl,
127
+ category: "ipfs",
128
+ required: false,
129
+ example: "",
130
+ doc: "Optional override for the avatar fetch gateway.",
131
+ },
132
+ // ─── subgraph ────────────────────────────────────────────────────────────
133
+ DEXE_SUBGRAPH_POOLS_URL: {
134
+ schema: optionalUrl,
135
+ category: "subgraph",
136
+ required: false,
137
+ example: "https://gateway.thegraph.com/api/subgraphs/id/<id>",
138
+ doc: "Pools subgraph endpoint.",
139
+ enablesFlows: ["subgraph-read"],
140
+ },
141
+ DEXE_SUBGRAPH_VALIDATORS_URL: {
142
+ schema: optionalUrl,
143
+ category: "subgraph",
144
+ required: false,
145
+ example: "https://gateway.thegraph.com/api/subgraphs/id/<id>",
146
+ doc: "Validators subgraph endpoint.",
147
+ enablesFlows: ["subgraph-read"],
148
+ },
149
+ DEXE_SUBGRAPH_INTERACTIONS_URL: {
150
+ schema: optionalUrl,
151
+ category: "subgraph",
152
+ required: false,
153
+ example: "https://gateway.thegraph.com/api/subgraphs/id/<id>",
154
+ doc: "Interactions subgraph endpoint.",
155
+ enablesFlows: ["subgraph-read"],
156
+ },
157
+ DEXE_GRAPH_API_KEY: {
158
+ schema: z.string().optional(),
159
+ category: "subgraph",
160
+ required: false,
161
+ example: "",
162
+ doc: "The Graph API key for bearer auth (required by decentralized gateway).",
163
+ secret: true,
164
+ },
165
+ // ─── walletconnect ───────────────────────────────────────────────────────
166
+ DEXE_WALLETCONNECT_PROJECT_ID: {
167
+ schema: z.string().optional(),
168
+ category: "walletconnect",
169
+ required: false,
170
+ example: "",
171
+ doc: "Reown/WalletConnect project id. Enables phone-approval signer when DEXE_PRIVATE_KEY is unset.",
172
+ enablesFlows: ["walletconnect-sign"],
173
+ },
174
+ DEXE_WALLETCONNECT_RELAY_URL: {
175
+ schema: optionalUrl,
176
+ category: "walletconnect",
177
+ required: false,
178
+ example: "wss://relay.walletconnect.com",
179
+ doc: "Override WC relay websocket URL.",
180
+ },
181
+ DEXE_WALLETCONNECT_APPROVAL_TIMEOUT_MS: {
182
+ schema: intStr.optional(),
183
+ category: "walletconnect",
184
+ required: false,
185
+ example: "120000",
186
+ doc: "Per-tx phone-approval timeout in milliseconds.",
187
+ },
188
+ // ─── safe ────────────────────────────────────────────────────────────────
189
+ DEXE_SAFE_TX_SERVICE_URL: {
190
+ schema: optionalUrl,
191
+ category: "safe",
192
+ required: false,
193
+ example: "https://api.safe.global/tx-service/bnb/api/v2",
194
+ doc: "Safe Transaction Service base. Required for chains without a hosted service.",
195
+ enablesFlows: ["safe-tx"],
196
+ },
197
+ DEXE_SAFE_API_KEY: {
198
+ schema: z.string().optional(),
199
+ category: "safe",
200
+ required: false,
201
+ example: "",
202
+ doc: "Bearer token for Safe Transaction Service.",
203
+ secret: true,
204
+ },
205
+ // ─── backend ─────────────────────────────────────────────────────────────
206
+ DEXE_BACKEND_API_URL: {
207
+ schema: optionalUrl,
208
+ category: "backend",
209
+ required: false,
210
+ example: "https://api.dexe.io",
211
+ doc: "DeXe backend API root for off-chain proposal flows.",
212
+ enablesFlows: ["backend-offchain"],
213
+ },
214
+ // ─── dev ─────────────────────────────────────────────────────────────────
215
+ DEXE_FORK_BLOCK: {
216
+ schema: intStr.optional(),
217
+ category: "dev",
218
+ required: false,
219
+ example: "",
220
+ doc: "Optional fork block pin (Phase B).",
221
+ },
222
+ };
223
+ /**
224
+ * Re-export with the structural interface so consumers see optional fields
225
+ * (`secret`, `enablesFlows`). `as const` narrows literals but hides any field
226
+ * not present on every entry, which trips `.secret`/`.enablesFlows` reads.
227
+ */
228
+ export const ENV_REGISTRY = ENV_SPEC;
229
+ export function isKnownEnvKey(k) {
230
+ return Object.prototype.hasOwnProperty.call(ENV_SPEC, k);
231
+ }
232
+ export function envKeys() {
233
+ return Object.keys(ENV_SPEC);
234
+ }
235
+ /**
236
+ * Pattern for dynamic per-chain RPC keys (DEXE_RPC_URL_1, DEXE_RPC_URL_10…).
237
+ * Not in ENV_SPEC because the suffix is open-ended.
238
+ */
239
+ export const DYNAMIC_PER_CHAIN_RPC_RE = /^DEXE_RPC_URL_(\d+)$/;
240
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/env/schema.ts"],"names":[],"mappings":"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"}
@@ -43,7 +43,10 @@ function registerGetState(server, rpc) {
43
43
  }, async ({ governor, proposalId }) => {
44
44
  try {
45
45
  const cfg = resolveGovernor(governor);
46
- const provider = rpc.requireProvider(cfg.chainId);
46
+ const pr = rpc.tryProvider(cfg.chainId);
47
+ if ("error" in pr)
48
+ return err(`${pr.error}\n${pr.remediation}`);
49
+ const provider = pr.ok;
47
50
  const c = governorContract(provider, cfg);
48
51
  const idx = Number(await c.getFunction("state").staticCall(BigInt(proposalId)));
49
52
  return ok({
@@ -70,7 +73,10 @@ function registerHasVoted(server, rpc) {
70
73
  }, async ({ governor, proposalId, account }) => {
71
74
  try {
72
75
  const cfg = resolveGovernor(governor);
73
- const provider = rpc.requireProvider(cfg.chainId);
76
+ const pr = rpc.tryProvider(cfg.chainId);
77
+ if ("error" in pr)
78
+ return err(`${pr.error}\n${pr.remediation}`);
79
+ const provider = pr.ok;
74
80
  const c = governorContract(provider, cfg);
75
81
  let voted;
76
82
  let method;
@@ -185,7 +191,10 @@ function registerHashProposal(server, rpc) {
185
191
  if (isBravo(cfg)) {
186
192
  return err(`dexe_gov_hash_proposal: ${cfg.id} is Bravo (${cfg.governorVersion}); Bravo does not expose hashProposal. Use Bravo's on-chain proposalCount + propose-returned id instead.`);
187
193
  }
188
- const provider = rpc.requireProvider(cfg.chainId);
194
+ const pr = rpc.tryProvider(cfg.chainId);
195
+ if ("error" in pr)
196
+ return err(`${pr.error}\n${pr.remediation}`);
197
+ const provider = pr.ok;
189
198
  const c = governorContract(provider, cfg);
190
199
  const dh = descriptionHash
191
200
  ?? (description !== undefined ? keccak256(toUtf8Bytes(description)) : undefined);
@@ -1 +1 @@
1
- {"version":3,"file":"extras.js","sourceRoot":"","sources":["../../../src/governor/tools/extras.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extras.js","sourceRoot":"","sources":["../../../src/governor/tools/extras.ts"],"names":[],"mappings":"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"}
@@ -58,7 +58,10 @@ function registerGetProposal(server, rpc) {
58
58
  }, async ({ governor, proposalId }) => {
59
59
  try {
60
60
  const cfg = resolveGovernor(governor);
61
- const provider = rpc.requireProvider(cfg.chainId);
61
+ const pr = rpc.tryProvider(cfg.chainId);
62
+ if ("error" in pr)
63
+ return err(`${pr.error}\n${pr.remediation}`);
64
+ const provider = pr.ok;
62
65
  const c = governorContract(provider, cfg);
63
66
  const pid = BigInt(proposalId);
64
67
  const readout = await readProposal(c, cfg, pid);
@@ -93,7 +96,10 @@ function registerGetVotingPower(server, rpc) {
93
96
  }, async ({ governor, account, blockNumber }) => {
94
97
  try {
95
98
  const cfg = resolveGovernor(governor);
96
- const provider = rpc.requireProvider(cfg.chainId);
99
+ const pr = rpc.tryProvider(cfg.chainId);
100
+ if ("error" in pr)
101
+ return err(`${pr.error}\n${pr.remediation}`);
102
+ const provider = pr.ok;
97
103
  const c = votesContract(provider, cfg);
98
104
  const { power, method } = await readVotingPower(c, cfg, account, blockNumber);
99
105
  return ok({
@@ -126,7 +132,10 @@ function registerGetQuorum(server, rpc) {
126
132
  }, async ({ governor, blockNumber }) => {
127
133
  try {
128
134
  const cfg = resolveGovernor(governor);
129
- const provider = rpc.requireProvider(cfg.chainId);
135
+ const pr = rpc.tryProvider(cfg.chainId);
136
+ if ("error" in pr)
137
+ return err(`${pr.error}\n${pr.remediation}`);
138
+ const provider = pr.ok;
130
139
  const c = governorContract(provider, cfg);
131
140
  const block = blockNumber ?? (await provider.getBlockNumber());
132
141
  const { quorum, method } = await readQuorum(c, cfg, block);
@@ -157,7 +166,10 @@ function registerGetProposalThreshold(server, rpc) {
157
166
  }, async ({ governor }) => {
158
167
  try {
159
168
  const cfg = resolveGovernor(governor);
160
- const provider = rpc.requireProvider(cfg.chainId);
169
+ const pr = rpc.tryProvider(cfg.chainId);
170
+ if ("error" in pr)
171
+ return err(`${pr.error}\n${pr.remediation}`);
172
+ const provider = pr.ok;
161
173
  const c = governorContract(provider, cfg);
162
174
  const threshold = await c.getFunction("proposalThreshold").staticCall();
163
175
  return ok({