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.
Files changed (71) hide show
  1. package/CHANGELOG.md +109 -20
  2. package/README.md +6 -6
  3. package/dist/config.d.ts +22 -0
  4. package/dist/config.d.ts.map +1 -1
  5. package/dist/config.js +30 -0
  6. package/dist/config.js.map +1 -1
  7. package/dist/env/schema.d.ts +21 -0
  8. package/dist/env/schema.d.ts.map +1 -1
  9. package/dist/env/schema.js +21 -0
  10. package/dist/env/schema.js.map +1 -1
  11. package/dist/lib/controllingVoters.d.ts +44 -0
  12. package/dist/lib/controllingVoters.d.ts.map +1 -0
  13. package/dist/lib/controllingVoters.js +152 -0
  14. package/dist/lib/controllingVoters.js.map +1 -0
  15. package/dist/lib/dangerousSelectors.d.ts +1 -1
  16. package/dist/lib/dangerousSelectors.d.ts.map +1 -1
  17. package/dist/lib/dangerousSelectors.js +12 -22
  18. package/dist/lib/dangerousSelectors.js.map +1 -1
  19. package/dist/lib/decoders.d.ts +4 -4
  20. package/dist/lib/decoders.d.ts.map +1 -1
  21. package/dist/lib/decoders.js +2 -2
  22. package/dist/lib/govProposalView.d.ts +37 -0
  23. package/dist/lib/govProposalView.d.ts.map +1 -0
  24. package/dist/lib/govProposalView.js +42 -0
  25. package/dist/lib/govProposalView.js.map +1 -0
  26. package/dist/lib/protocolAdvisories.d.ts +12 -13
  27. package/dist/lib/protocolAdvisories.d.ts.map +1 -1
  28. package/dist/lib/protocolAdvisories.js +23 -16
  29. package/dist/lib/protocolAdvisories.js.map +1 -1
  30. package/dist/lib/quorumRisk.d.ts +92 -0
  31. package/dist/lib/quorumRisk.d.ts.map +1 -0
  32. package/dist/lib/quorumRisk.js +159 -0
  33. package/dist/lib/quorumRisk.js.map +1 -0
  34. package/dist/lib/time.d.ts +16 -0
  35. package/dist/lib/time.d.ts.map +1 -0
  36. package/dist/lib/time.js +24 -0
  37. package/dist/lib/time.js.map +1 -0
  38. package/dist/tools/daoDeploy.d.ts.map +1 -1
  39. package/dist/tools/daoDeploy.js +32 -0
  40. package/dist/tools/daoDeploy.js.map +1 -1
  41. package/dist/tools/flow.d.ts.map +1 -1
  42. package/dist/tools/flow.js +90 -1
  43. package/dist/tools/flow.js.map +1 -1
  44. package/dist/tools/gov.js +2 -2
  45. package/dist/tools/index.d.ts.map +1 -1
  46. package/dist/tools/index.js +2 -0
  47. package/dist/tools/index.js.map +1 -1
  48. package/dist/tools/otc.d.ts +20 -0
  49. package/dist/tools/otc.d.ts.map +1 -1
  50. package/dist/tools/otc.js +191 -58
  51. package/dist/tools/otc.js.map +1 -1
  52. package/dist/tools/proposalBuild.d.ts.map +1 -1
  53. package/dist/tools/proposalBuild.js +19 -5
  54. package/dist/tools/proposalBuild.js.map +1 -1
  55. package/dist/tools/proposalBuildComplex.d.ts.map +1 -1
  56. package/dist/tools/proposalBuildComplex.js +12 -1
  57. package/dist/tools/proposalBuildComplex.js.map +1 -1
  58. package/dist/tools/proposalBuildMore.d.ts.map +1 -1
  59. package/dist/tools/proposalBuildMore.js +8 -5
  60. package/dist/tools/proposalBuildMore.js.map +1 -1
  61. package/dist/tools/risk.d.ts +4 -0
  62. package/dist/tools/risk.d.ts.map +1 -0
  63. package/dist/tools/risk.js +255 -0
  64. package/dist/tools/risk.js.map +1 -0
  65. package/dist/tools/subgraph.d.ts.map +1 -1
  66. package/dist/tools/subgraph.js +22 -15
  67. package/dist/tools/subgraph.js.map +1 -1
  68. package/dist/tools/voteBuild.d.ts.map +1 -1
  69. package/dist/tools/voteBuild.js +16 -4
  70. package/dist/tools/voteBuild.js.map +1 -1
  71. package/package.json +2 -2
@@ -0,0 +1,159 @@
1
+ import { id, Interface } from "ethers";
2
+ import { selectorOf } from "./dangerousSelectors.js";
3
+ /** Worst (most dangerous) of a set of risk levels. Empty → SAFE. */
4
+ export function worstRisk(...levels) {
5
+ if (levels.includes("DANGER"))
6
+ return "DANGER";
7
+ if (levels.includes("CAUTION"))
8
+ return "CAUTION";
9
+ return "SAFE";
10
+ }
11
+ // ─── quorum units ──────────────────────────────────────────────────────────
12
+ // DeXe stores quorum as a fraction of PERCENTAGE_100 = 1e27 (so 50% = 5e26).
13
+ // The on-chain getProposalRequiredQuorum(id) instead returns an ABSOLUTE
14
+ // token-weight (pct × totalVoteWeight already applied) — never pass that here.
15
+ const PERCENTAGE_100 = 10n ** 27n;
16
+ /** Convert a raw quorum setting (pct × 1e25) to a human percentage. 5e26 → 50. */
17
+ export function quorumPctFromRaw(raw) {
18
+ let v;
19
+ try {
20
+ v = typeof raw === "bigint" ? raw : BigInt(raw);
21
+ }
22
+ catch {
23
+ return NaN;
24
+ }
25
+ // 2-decimal precision via integer math (avoids float drift on 1e27-scale ints).
26
+ return Number((v * 10000n) / PERCENTAGE_100) / 100;
27
+ }
28
+ /** SAFE ≥ floor; CAUTION ≥ 0.8×floor; DANGER below. NaN → DANGER (unparseable). */
29
+ export function judgeQuorum(pct, floorPct) {
30
+ if (!Number.isFinite(pct))
31
+ return "DANGER";
32
+ if (pct >= floorPct)
33
+ return "SAFE";
34
+ if (pct >= 0.8 * floorPct)
35
+ return "CAUTION";
36
+ return "DANGER";
37
+ }
38
+ /**
39
+ * Value-moving / allowance-granting selectors. ERC20 `transferFrom` and ERC721
40
+ * `transferFrom` share selector 0x23b872dd → classified as `transferFrom`; the
41
+ * ERC721-only `safeTransferFrom` overloads classify as `nftTransfer`.
42
+ */
43
+ const TREASURY_SELECTORS = new Map([
44
+ { kind: "approve", sig: "approve(address,uint256)", recipientArg: 0, amountArg: 1 },
45
+ { kind: "transfer", sig: "transfer(address,uint256)", recipientArg: 0, amountArg: 1 },
46
+ { kind: "transferFrom", sig: "transferFrom(address,address,uint256)", recipientArg: 1, amountArg: 2 },
47
+ { kind: "increaseAllowance", sig: "increaseAllowance(address,uint256)", recipientArg: 0, amountArg: 1 },
48
+ { kind: "nftTransfer", sig: "safeTransferFrom(address,address,uint256)", recipientArg: 1, amountArg: 2 },
49
+ { kind: "nftTransfer", sig: "safeTransferFrom(address,address,uint256,bytes)", recipientArg: 1, amountArg: 2 },
50
+ ].map((e) => [id(e.sig).slice(0, 10).toLowerCase(), e]));
51
+ /** Decimal selectors of every treasury-touching function (for docs/tests). */
52
+ export function treasurySelectors() {
53
+ return [...TREASURY_SELECTORS.keys()];
54
+ }
55
+ /**
56
+ * Scan a proposal's actions and report every one that moves treasury value or
57
+ * grants an allowance. Best-effort recipient/amount decode — NEVER throws.
58
+ * A single action can yield two hits (native value + an ERC20 call).
59
+ */
60
+ export function classifyTreasuryActions(actions) {
61
+ const hits = [];
62
+ actions.forEach((a, index) => {
63
+ const sel = selectorOf(a.data);
64
+ // Native coin transfer (value > 0) is a treasury movement regardless of data.
65
+ try {
66
+ if (a.value && BigInt(a.value) > 0n) {
67
+ hits.push({
68
+ index,
69
+ executor: a.executor,
70
+ selector: sel,
71
+ kind: "nativeValue",
72
+ recipient: a.executor,
73
+ amount: String(a.value),
74
+ });
75
+ }
76
+ }
77
+ catch {
78
+ /* non-numeric value — ignore */
79
+ }
80
+ if (sel === null)
81
+ return;
82
+ const match = TREASURY_SELECTORS.get(sel);
83
+ if (!match)
84
+ return;
85
+ let recipient = null;
86
+ let amount = null;
87
+ try {
88
+ const iface = new Interface([`function ${match.sig}`]);
89
+ const decoded = iface.decodeFunctionData(match.sig, a.data);
90
+ recipient = String(decoded[match.recipientArg]);
91
+ amount = decoded[match.amountArg].toString();
92
+ }
93
+ catch {
94
+ /* undecodable — leave null, never throw */
95
+ }
96
+ hits.push({ index, executor: a.executor, selector: sel, kind: match.kind, recipient, amount });
97
+ });
98
+ return hits;
99
+ }
100
+ /**
101
+ * Estimate the share of token supply required to meet a proposal's quorum.
102
+ * Prefers the on-chain `requiredWeight` (getProposalRequiredQuorum); otherwise
103
+ * derives it from `quorumPct × totalVoteWeight`. When the percentage cannot be
104
+ * computed the verdict is CAUTION (unknown is never SAFE).
105
+ */
106
+ export function quorumConcentration(args) {
107
+ const floorPct = args.floorPct ?? 50;
108
+ let requiredWeight = args.requiredWeight ?? null;
109
+ if (requiredWeight === null && args.totalVoteWeight !== undefined && Number.isFinite(args.quorumPct)) {
110
+ // quorumPct% of totalVoteWeight, 2-decimal precision via integer math.
111
+ const bps = BigInt(Math.round(args.quorumPct * 100)); // pct → basis points
112
+ requiredWeight = (args.totalVoteWeight * bps) / 10000n;
113
+ }
114
+ const totalSupply = args.totalSupply ?? null;
115
+ let pctOfSupplyForQuorum = null;
116
+ if (requiredWeight !== null && totalSupply !== null && totalSupply > 0n) {
117
+ pctOfSupplyForQuorum = Number((requiredWeight * 10000n) / totalSupply) / 100;
118
+ }
119
+ const verdict = pctOfSupplyForQuorum === null ? "CAUTION" : judgeQuorum(pctOfSupplyForQuorum, floorPct);
120
+ return { requiredWeight, totalSupply, pctOfSupplyForQuorum, verdict };
121
+ }
122
+ // ─── advisory strings (tone mirrors protocolAdvisories.ts) ────────────────────
123
+ const ADVISORY_TAG = "[governance-safety advisory]";
124
+ /** Flag a below-floor quorum SETTING (deploy / change-voting-settings). */
125
+ export function lowQuorumAdvisory(pct, floorPct) {
126
+ const shown = Number.isFinite(pct) ? `${pct}%` : "unparseable";
127
+ return (`⚠ quorum=${shown} is below the ${floorPct}% safe floor (DEXE_MIN_SAFE_QUORUM_PCT). ` +
128
+ `Low quorum reduces the participation required to pass a proposal. For a DAO that holds ` +
129
+ `treasury assets, set quorum ≥50% (51%+ recommended) and verify stakeholder participation ` +
130
+ `before executing treasury-moving proposals; the safe value is DAO-specific. ${ADVISORY_TAG}`);
131
+ }
132
+ /** Flag a treasury-touching proposal at build time (static, no RPC needed). */
133
+ export const TREASURY_RISK_ADVISORY = `⚠ This proposal moves treasury value (ERC20 approve/transfer/transferFrom or native value). ` +
134
+ `Confirm the DAO's quorum is adequate (≥50%) and that key stakeholders have participated before ` +
135
+ `executing. Run dexe_proposal_risk_assess for a full readout. ${ADVISORY_TAG}`;
136
+ /**
137
+ * Build-time advisory for any builder whose actions move treasury value.
138
+ * Returns the static advisory string when there is at least one treasury hit
139
+ * and the guard is enabled, else null. Build-time is WARN-only — it never
140
+ * blocks (refusing would just route users to hand-crafted custom_abi).
141
+ */
142
+ export function buildTimeTreasuryAdvisory(actions, guard) {
143
+ if (guard === "off")
144
+ return null;
145
+ return classifyTreasuryActions(actions).length > 0 ? TREASURY_RISK_ADVISORY : null;
146
+ }
147
+ /**
148
+ * Advisory message for the vote_and_execute treasury alert. `reasons` are the
149
+ * failing checks (below-floor quorum, no controlling-member participation).
150
+ * Advisory ONLY — the guard never blocks; it surfaces this and proceeds. The
151
+ * durable control is an adequate on-chain quorum threshold configured per DAO.
152
+ */
153
+ export function treasuryExecuteAdvisory(reasons) {
154
+ return (`⚠ Treasury-safety advisory: this proposal moves treasury value AND ${reasons.join("; ")}. ` +
155
+ `Verify adequate quorum and stakeholder participation before executing — ` +
156
+ `responsibility for executing rests with whoever broadcasts it. Run dexe_proposal_risk_assess for a full ` +
157
+ `readout. ${ADVISORY_TAG}`);
158
+ }
159
+ //# sourceMappingURL=quorumRisk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quorumRisk.js","sourceRoot":"","sources":["../../src/lib/quorumRisk.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Time formatting helpers for on-chain timestamps.
3
+ *
4
+ * Contracts store times as Unix seconds (UTC-based, timezone-agnostic). Raw
5
+ * seconds are unreadable to humans, so read tools should surface a companion
6
+ * UTC string alongside the raw value to avoid any local-timezone confusion.
7
+ */
8
+ /**
9
+ * Format a Unix timestamp (seconds) as an unambiguous UTC string.
10
+ *
11
+ * @example unixToUtc(1783100759) // "2026-07-03 17:45:59 UTC"
12
+ * @returns "" for zero/invalid input — `0` is the contract's "unset" sentinel
13
+ * (e.g. no vesting), and an empty string reads better than "1970-...".
14
+ */
15
+ export declare function unixToUtc(sec: bigint | number | string): string;
16
+ //# sourceMappingURL=time.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time.d.ts","sourceRoot":"","sources":["../../src/lib/time.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAO/D"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Time formatting helpers for on-chain timestamps.
3
+ *
4
+ * Contracts store times as Unix seconds (UTC-based, timezone-agnostic). Raw
5
+ * seconds are unreadable to humans, so read tools should surface a companion
6
+ * UTC string alongside the raw value to avoid any local-timezone confusion.
7
+ */
8
+ /**
9
+ * Format a Unix timestamp (seconds) as an unambiguous UTC string.
10
+ *
11
+ * @example unixToUtc(1783100759) // "2026-07-03 17:45:59 UTC"
12
+ * @returns "" for zero/invalid input — `0` is the contract's "unset" sentinel
13
+ * (e.g. no vesting), and an empty string reads better than "1970-...".
14
+ */
15
+ export function unixToUtc(sec) {
16
+ const n = Number(sec);
17
+ if (!Number.isFinite(n) || n <= 0)
18
+ return "";
19
+ return new Date(n * 1000)
20
+ .toISOString()
21
+ .replace("T", " ")
22
+ .replace(/\.\d{3}Z$/, " UTC");
23
+ }
24
+ //# sourceMappingURL=time.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time.js","sourceRoot":"","sources":["../../src/lib/time.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;GAMG;AACH,MAAM,UAAU,SAAS,CAAC,GAA6B;IACrD,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IACtB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IAC7C,OAAO,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;SACtB,WAAW,EAAE;SACb,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC;SACjB,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AAClC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"daoDeploy.d.ts","sourceRoot":"","sources":["../../src/tools/daoDeploy.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AA0JhD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,GAAG,IAAI,CAGhF"}
1
+ {"version":3,"file":"daoDeploy.d.ts","sourceRoot":"","sources":["../../src/tools/daoDeploy.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AA2JhD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,GAAG,IAAI,CAGhF"}
@@ -6,6 +6,7 @@ import { ArtifactsMissingError } from "../artifacts.js";
6
6
  import { AddressBook, CONTRACT_NAMES } from "../lib/addresses.js";
7
7
  import { RpcProvider } from "../rpc.js";
8
8
  import { PinataClient } from "../lib/ipfs.js";
9
+ import { quorumPctFromRaw, judgeQuorum } from "../lib/quorumRisk.js";
9
10
  /**
10
11
  * Phase 5 — deploy a new DAO via `PoolFactory.deployGovPool(GovPoolDeployParams)`.
11
12
  *
@@ -397,6 +398,35 @@ function registerBuildDeploy(server, ctx, rpc) {
397
398
  else if (expandedSettings.length !== 5) {
398
399
  return errorResult(`proposalSettings must be 1 (auto-expand to 5) or exactly 5. Got ${expandedSettings.length}.`);
399
400
  }
401
+ // ---------- treasury-safety advisory: quorum floor (Layer 2) ----------
402
+ // Low quorum reduces the participation required to pass a proposal — a
403
+ // governance-safety risk for a DAO that will hold treasury assets. Flag it
404
+ // at birth so the operator sets an adequate quorum.
405
+ let quorumWarning = "";
406
+ if (ctx.config.treasuryGuard !== "off") {
407
+ const floor = ctx.config.minSafeQuorumPct;
408
+ const showPct = (p) => (Number.isFinite(p) ? `${p}%` : "unparseable");
409
+ const lowQuorum = [];
410
+ expandedSettings.forEach((s, i) => {
411
+ const pct = quorumPctFromRaw(s.quorum);
412
+ if (judgeQuorum(pct, floor) !== "SAFE") {
413
+ lowQuorum.push(`proposalSettings[${i}] quorum=${showPct(pct)}`);
414
+ }
415
+ });
416
+ const vpct = quorumPctFromRaw(validatorsParams.proposalSettings.quorum);
417
+ if (judgeQuorum(vpct, floor) !== "SAFE") {
418
+ lowQuorum.push(`validatorsParams quorum=${showPct(vpct)}`);
419
+ }
420
+ if (lowQuorum.length > 0) {
421
+ const detail = `Quorum below the ${floor}% safe floor (DEXE_MIN_SAFE_QUORUM_PCT): ${lowQuorum.join(", ")}. ` +
422
+ `Low quorum reduces the participation required to pass a proposal; for a DAO that will hold ` +
423
+ `treasury assets, set quorum ≥50% (51%+ recommended). The safe value is DAO-specific and must ` +
424
+ `be verified. [governance-safety advisory]`;
425
+ // Advisory only — never blocks the deploy. The durable control is an
426
+ // adequate on-chain quorum threshold configured per DAO.
427
+ quorumWarning = `\n⚠️ ${detail}`;
428
+ }
429
+ }
400
430
  // ---------- auto-upload executorDescription to IPFS (when Pinata configured) ----------
401
431
  // The frontend uploads each proposal settings object as JSON to IPFS and stores
402
432
  // the CID as `executorDescription`. Without this, DAOs display broken metadata in
@@ -594,6 +624,8 @@ function registerBuildDeploy(server, ctx, rpc) {
594
624
  : "Encoded against compiled artifact — strict parity with deployed PoolFactory.";
595
625
  if (pinataWarning)
596
626
  note += pinataWarning;
627
+ if (quorumWarning)
628
+ note += quorumWarning;
597
629
  return payloadResult(payload, { predictedGovPool, note });
598
630
  });
599
631
  }
@@ -1 +1 @@
1
- {"version":3,"file":"daoDeploy.js","sourceRoot":"","sources":["../../src/tools/daoDeploy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"daoDeploy.js","sourceRoot":"","sources":["../../src/tools/daoDeploy.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"flow.d.ts","sourceRoot":"","sources":["../../src/tools/flow.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAGxC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAqCjD,UAAU,QAAQ;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,SAAS,CAAC;CACrB;AAyCD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,IAAI,GAAG,IAAI,CAQnF;AAyGD,wBAAsB,aAAa,CACjC,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,SAAS,EAAE,EACrB,IAAI,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5C,OAAO,CAAC;IAAE,IAAI,EAAE,UAAU,GAAG,UAAU,GAAG,QAAQ,CAAC;IAAC,KAAK,EAAE,QAAQ,EAAE,CAAA;CAAE,CAAC,CAyD1E;AAID,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,oBAAoB,GAAG,QAAQ,CAAC;IAC/C,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;IACpC,YAAY,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACpE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qBAAqB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,WAAW,CAAC;IACjB,MAAM,EAAE,aAAa,CAAC;IACtB,GAAG,EAAE,WAAW,CAAC;CAClB;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,mBAAmB,EAC7B,IAAI,EAAE,kBAAkB;;;;;GAiRzB;AAID,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,SAAS,EACjB,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,aAAa,GACpB,IAAI,CA6NN"}
1
+ {"version":3,"file":"flow.d.ts","sourceRoot":"","sources":["../../src/tools/flow.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAGxC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAmDjD,UAAU,QAAQ;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,SAAS,CAAC;CACrB;AAoID;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,IAAI,GAAG,IAAI,CAQnF;AAyGD,wBAAsB,aAAa,CACjC,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,SAAS,EAAE,EACrB,IAAI,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5C,OAAO,CAAC;IAAE,IAAI,EAAE,UAAU,GAAG,UAAU,GAAG,QAAQ,CAAC;IAAC,KAAK,EAAE,QAAQ,EAAE,CAAA;CAAE,CAAC,CAyD1E;AAID,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,oBAAoB,GAAG,QAAQ,CAAC;IAC/C,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;IACpC,YAAY,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACpE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qBAAqB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,WAAW,CAAC;IACjB,MAAM,EAAE,aAAa,CAAC;IACtB,GAAG,EAAE,WAAW,CAAC;CAClB;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,mBAAmB,EAC7B,IAAI,EAAE,kBAAkB;;;;;GAiRzB;AAID,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,SAAS,EACjB,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,aAAa,GACpB,IAAI,CA6ON"}
@@ -7,6 +7,9 @@ import { markdownToSlate } from "../lib/markdownToSlate.js";
7
7
  import { resolveChain } from "../config.js";
8
8
  import { runBroadcastGuards } from "../lib/broadcastGuards.js";
9
9
  import { AddressBook, CONTRACT_NAMES } from "../lib/addresses.js";
10
+ import { classifyTreasuryActions, quorumPctFromRaw, judgeQuorum, treasuryExecuteAdvisory, TREASURY_RISK_ADVISORY, } from "../lib/quorumRisk.js";
11
+ import { GET_PROPOSALS_FRAGMENT, decodeProposalView } from "../lib/govProposalView.js";
12
+ import { resolveControllingHoldersVotedFor } from "../lib/controllingVoters.js";
10
13
  // ---------- ABI fragments ----------
11
14
  const ERC20_ABI = new Interface([
12
15
  "function balanceOf(address) view returns (uint256)",
@@ -23,6 +26,10 @@ const GOV_POOL_ABI = new Interface([
23
26
  "function deposit(uint256 amount, uint256[] nftIds) payable",
24
27
  "function editDescriptionURL(string newDescriptionURL)",
25
28
  "function getProposalState(uint256 proposalId) view returns (uint8)",
29
+ "function getProposalRequiredQuorum(uint256 proposalId) view returns (uint256)",
30
+ // Full IGovPool.ProposalView[] — lets the execute-gate read a proposal's
31
+ // on-chain actions + its own quorum setting without compiled artifacts.
32
+ GET_PROPOSALS_FRAGMENT,
26
33
  ]);
27
34
  const USER_KEEPER_ABI = new Interface([
28
35
  "function tokenAddress() view returns (address)",
@@ -52,6 +59,72 @@ function makeTxPayload(to, iface, method, args, chainId, description, value) {
52
59
  description,
53
60
  };
54
61
  }
62
+ /**
63
+ * Read a proposal's on-chain `actionsOnFor` + its own quorum setting and judge
64
+ * treasury-safety risk. Pure-ish: one getProposals read, then quorumRisk logic.
65
+ * Returns `{ error }` when the read fails (caller fails soft — never bricks
66
+ * execute on an RPC hiccup).
67
+ */
68
+ async function assessExecuteRisk(provider, govPool, proposalId, cfg) {
69
+ let value;
70
+ try {
71
+ const [res] = await multicall(provider, [
72
+ { target: govPool, iface: GOV_POOL_ABI, method: "getProposals", args: [proposalId - 1, 1] },
73
+ ]);
74
+ if (!res?.success)
75
+ return { error: res?.error ?? "getProposals reverted" };
76
+ value = res.value;
77
+ }
78
+ catch (e) {
79
+ return { error: e instanceof Error ? e.message : String(e) };
80
+ }
81
+ const arr = value;
82
+ if (!Array.isArray(arr) || arr.length === 0)
83
+ return { error: `Proposal ${proposalId} not found` };
84
+ const decoded = decodeProposalView(arr[0]);
85
+ if (!decoded)
86
+ return { error: "failed to decode proposal view" };
87
+ const floor = cfg.minSafeQuorumPct;
88
+ const quorumPct = quorumPctFromRaw(decoded.quorumRaw);
89
+ const belowFloor = judgeQuorum(quorumPct, floor) !== "SAFE";
90
+ const treasuryHits = classifyTreasuryActions(decoded.actionsOnFor);
91
+ const reasons = [];
92
+ if (belowFloor) {
93
+ reasons.push(`the proposal's quorum=${Number.isFinite(quorumPct) ? `${quorumPct}%` : "unparseable"} is below the ${floor}% safe floor (DEXE_MIN_SAFE_QUORUM_PCT)`);
94
+ }
95
+ // Founder/validator participation signal. Subgraph/mainnet-only; resolves
96
+ // to null off-chain. Informational alert only — a confirmed `false` (set
97
+ // enumerated, nobody voted For) adds an advisory reason but never blocks.
98
+ const controllingHoldersVotedFor = await resolveControllingHoldersVotedFor({
99
+ provider,
100
+ govPool,
101
+ proposalId,
102
+ cfg,
103
+ chainId: cfg.chainId,
104
+ });
105
+ if (treasuryHits.length > 0 && controllingHoldersVotedFor === false) {
106
+ reasons.push("no controlling member (validator / top token-holder) voted For — possible low-participation capture");
107
+ }
108
+ return { treasuryHits, quorumPct, belowFloor, controllingHoldersVotedFor, reasons };
109
+ }
110
+ /**
111
+ * Compute a treasury-safety advisory string for an execute step, or null when
112
+ * there's nothing to say. ADVISORY ONLY — never blocks; it surfaces the note and
113
+ * proceeds. Fail-soft on read errors. The durable control is an adequate on-chain
114
+ * quorum threshold configured per DAO.
115
+ */
116
+ async function treasuryExecuteGuard(args) {
117
+ if (args.cfg.treasuryGuard === "off")
118
+ return null;
119
+ const risk = await assessExecuteRisk(args.provider, args.govPool, args.proposalId, args.cfg);
120
+ if ("error" in risk)
121
+ return `⚠ treasury-risk pre-check skipped: ${risk.error}`;
122
+ if (risk.treasuryHits.length === 0)
123
+ return null;
124
+ // Treasury-touching with a failing check (low quorum or no controlling
125
+ // participation) → the pointed advisory; otherwise the static one.
126
+ return risk.reasons.length > 0 ? treasuryExecuteAdvisory(risk.reasons) : TREASURY_RISK_ADVISORY;
127
+ }
55
128
  const POOL_REGISTRY_ISGOV_ABI = ["function isGovPool(address) view returns (bool)"];
56
129
  /**
57
130
  * W10 refusal decision: a definitive `isGovPool === false` aborts the flow; a
@@ -548,6 +621,12 @@ export function registerFlowTools(server, ctx, signer) {
548
621
  // earlyCompletion, the proposal lands directly in Locked, so we must
549
622
  // recognize it here as executable.
550
623
  if ((stateNum === 4 || stateNum === 5 || stateNum === 6) && input.autoExecute) {
624
+ const treasuryRisk = await treasuryExecuteGuard({
625
+ provider,
626
+ govPool,
627
+ proposalId,
628
+ cfg: ctx.config,
629
+ });
551
630
  const execResult = await sendOrCollect(signer, [
552
631
  makeTxPayload(govPool, GOV_POOL_ABI, "execute", [proposalId], chainId, `GovPool.execute(${proposalId})`),
553
632
  ], { dryRun: input.dryRun, chainId });
@@ -555,6 +634,7 @@ export function registerFlowTools(server, ctx, signer) {
555
634
  mode: execResult.mode,
556
635
  proposalId,
557
636
  proposalStateBefore: stateName,
637
+ ...(treasuryRisk ? { treasuryRisk } : {}),
558
638
  steps: [
559
639
  { label: "GovPool.vote", skipped: true, reason: `Proposal already in "${stateName}" — no vote needed` },
560
640
  ...execResult.steps,
@@ -610,7 +690,16 @@ export function registerFlowTools(server, ctx, signer) {
610
690
  const postState = Number(postRes[0].value);
611
691
  const postStateName = STATE_NAMES[postState] ?? `Unknown(${postState})`;
612
692
  if (postState === 4 || postState === 5) {
613
- // SucceededFor or SucceededAgainst — execute
693
+ // SucceededFor or SucceededAgainst — execute (attach treasury advisory).
694
+ const treasuryRisk = await treasuryExecuteGuard({
695
+ provider,
696
+ govPool,
697
+ proposalId,
698
+ cfg: ctx.config,
699
+ });
700
+ if (treasuryRisk) {
701
+ skippedSteps.push({ label: "treasury-risk", skipped: true, reason: treasuryRisk });
702
+ }
614
703
  const execResult = await sendOrCollect(signer, [
615
704
  makeTxPayload(govPool, GOV_POOL_ABI, "execute", [proposalId], chainId, `GovPool.execute(${proposalId})`),
616
705
  ], { dryRun: input.dryRun, chainId });