dexe-mcp 0.11.0 → 0.14.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 (77) hide show
  1. package/CHANGELOG.md +109 -0
  2. package/README.md +11 -6
  3. package/dist/cli/init.d.ts +6 -0
  4. package/dist/cli/init.d.ts.map +1 -1
  5. package/dist/cli/init.js +64 -2
  6. package/dist/cli/init.js.map +1 -1
  7. package/dist/config.d.ts +13 -0
  8. package/dist/config.d.ts.map +1 -1
  9. package/dist/config.js +12 -0
  10. package/dist/config.js.map +1 -1
  11. package/dist/diag/checks.d.ts.map +1 -1
  12. package/dist/diag/checks.js +29 -0
  13. package/dist/diag/checks.js.map +1 -1
  14. package/dist/env/schema.d.ts +14 -0
  15. package/dist/env/schema.d.ts.map +1 -1
  16. package/dist/env/schema.js +14 -0
  17. package/dist/env/schema.js.map +1 -1
  18. package/dist/index.js +7 -1
  19. package/dist/index.js.map +1 -1
  20. package/dist/lib/preflight.d.ts +133 -0
  21. package/dist/lib/preflight.d.ts.map +1 -0
  22. package/dist/lib/preflight.js +239 -0
  23. package/dist/lib/preflight.js.map +1 -0
  24. package/dist/lib/proposalBuilders.d.ts +50 -0
  25. package/dist/lib/proposalBuilders.d.ts.map +1 -0
  26. package/dist/lib/proposalBuilders.js +311 -0
  27. package/dist/lib/proposalBuilders.js.map +1 -0
  28. package/dist/lib/stateStore.d.ts +63 -0
  29. package/dist/lib/stateStore.d.ts.map +1 -0
  30. package/dist/lib/stateStore.js +128 -0
  31. package/dist/lib/stateStore.js.map +1 -0
  32. package/dist/lib/time.d.ts +16 -0
  33. package/dist/lib/time.d.ts.map +1 -0
  34. package/dist/lib/time.js +24 -0
  35. package/dist/lib/time.js.map +1 -0
  36. package/dist/tools/daoCreate.d.ts +6 -0
  37. package/dist/tools/daoCreate.d.ts.map +1 -0
  38. package/dist/tools/daoCreate.js +155 -0
  39. package/dist/tools/daoCreate.js.map +1 -0
  40. package/dist/tools/daoDeploy.d.ts +394 -0
  41. package/dist/tools/daoDeploy.d.ts.map +1 -1
  42. package/dist/tools/daoDeploy.js +393 -422
  43. package/dist/tools/daoDeploy.js.map +1 -1
  44. package/dist/tools/doctor.d.ts.map +1 -1
  45. package/dist/tools/doctor.js +15 -0
  46. package/dist/tools/doctor.js.map +1 -1
  47. package/dist/tools/flow.d.ts +13 -2
  48. package/dist/tools/flow.d.ts.map +1 -1
  49. package/dist/tools/flow.js +97 -16
  50. package/dist/tools/flow.js.map +1 -1
  51. package/dist/tools/gate.d.ts +28 -0
  52. package/dist/tools/gate.d.ts.map +1 -0
  53. package/dist/tools/gate.js +295 -0
  54. package/dist/tools/gate.js.map +1 -0
  55. package/dist/tools/index.d.ts.map +1 -1
  56. package/dist/tools/index.js +14 -1
  57. package/dist/tools/index.js.map +1 -1
  58. package/dist/tools/operationalContext.d.ts +6 -0
  59. package/dist/tools/operationalContext.d.ts.map +1 -0
  60. package/dist/tools/operationalContext.js +122 -0
  61. package/dist/tools/operationalContext.js.map +1 -0
  62. package/dist/tools/otc.d.ts.map +1 -1
  63. package/dist/tools/otc.js +3 -0
  64. package/dist/tools/otc.js.map +1 -1
  65. package/dist/tools/proposalBuildMore.d.ts +69 -0
  66. package/dist/tools/proposalBuildMore.d.ts.map +1 -1
  67. package/dist/tools/proposalBuildMore.js +3 -2
  68. package/dist/tools/proposalBuildMore.js.map +1 -1
  69. package/dist/tools/subgraph.d.ts.map +1 -1
  70. package/dist/tools/subgraph.js +3 -0
  71. package/dist/tools/subgraph.js.map +1 -1
  72. package/package.json +2 -1
  73. package/skills/dexe-create-dao/SKILL.md +99 -0
  74. package/skills/dexe-create-proposal/SKILL.md +84 -0
  75. package/skills/dexe-otc/SKILL.md +73 -0
  76. package/skills/dexe-setup/SKILL.md +108 -0
  77. package/skills/dexe-vote-execute/SKILL.md +64 -0
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/env/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAyDxB,MAAM,KAAK,GAAG,qBAAqB,CAAC;AACpC,MAAM,KAAK,GAAG,qBAAqB,CAAC;AACpC,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACzC,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;AAEhD,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,6EAA6E;IAC7E,kBAAkB,EAAE;QAClB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC7B,QAAQ,EAAE,MAAM;QAChB,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,EAAE;QACX,GAAG,EAAE,oEAAoE;KAC1E;IACD,wBAAwB,EAAE;QACxB,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE;QACzB,QAAQ,EAAE,MAAM;QAChB,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,IAAI;QACb,GAAG,EAAE,0IAA0I;KAChJ;IACD,mBAAmB,EAAE;QACnB,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE;QAC1C,QAAQ,EAAE,MAAM;QAChB,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,MAAM;QACf,GAAG,EAAE,gLAAgL;KACtL;IACD,qBAAqB,EAAE;QACrB,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE;QACzB,QAAQ,EAAE,MAAM;QAChB,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,GAAG;QACZ,GAAG,EAAE,qLAAqL;KAC3L;IAED,6EAA6E;IAC7E,YAAY,EAAE;QACZ,MAAM,EAAE,WAAW;QACnB,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,kCAAkC;QAC3C,GAAG,EAAE,+EAA+E;QACpF,YAAY,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC;KACpC;IACD,aAAa,EAAE;QACb,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE;QACzB,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,IAAI;QACb,GAAG,EAAE,sEAAsE;KAC5E;IACD,oBAAoB,EAAE;QACpB,MAAM,EAAE,WAAW;QACnB,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,iDAAiD;QAC1D,GAAG,EAAE,qCAAqC;QAC1C,YAAY,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC;KACpC;IACD,oBAAoB,EAAE;QACpB,MAAM,EAAE,WAAW;QACnB,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,mCAAmC;QAC5C,GAAG,EAAE,qCAAqC;QAC1C,YAAY,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC;KACpC;IACD,qBAAqB,EAAE;QACrB,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE;QACzB,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,IAAI;QACb,GAAG,EAAE,0EAA0E;KAChF;IACD,uBAAuB,EAAE;QACvB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;QAC1C,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,EAAE;QACX,GAAG,EAAE,0EAA0E;KAChF;IAED,4EAA4E;IAC5E,gBAAgB,EAAE;QAChB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;QAC1C,QAAQ,EAAE,QAAQ;QAClB,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,YAAY;QACrB,GAAG,EAAE,0DAA0D;QAC/D,YAAY,EAAE,CAAC,WAAW,CAAC;QAC3B,MAAM,EAAE,IAAI;KACb;IACD,qBAAqB,EAAE;QACrB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC7B,QAAQ,EAAE,QAAQ;QAClB,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,EAAE;QACX,GAAG,EAAE,4EAA4E;KAClF;IACD,yBAAyB,EAAE;QACzB,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE;QACzB,QAAQ,EAAE,QAAQ;QAClB,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,EAAE;QACX,GAAG,EAAE,yCAAyC;KAC/C;IACD,kCAAkC,EAAE;QAClC,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE;QACzB,QAAQ,EAAE,QAAQ;QAClB,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,EAAE;QACX,GAAG,EAAE,uDAAuD;KAC7D;IAED,4EAA4E;IAC5E,eAAe,EAAE;QACf,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC7B,QAAQ,EAAE,MAAM;QAChB,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,yBAAyB;QAClC,GAAG,EAAE,uEAAuE;QAC5E,YAAY,EAAE,CAAC,aAAa,EAAE,YAAY,CAAC;QAC3C,MAAM,EAAE,IAAI;KACb;IACD,iBAAiB,EAAE;QACjB,MAAM,EAAE,WAAW;QACnB,QAAQ,EAAE,MAAM;QAChB,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,oCAAoC;QAC7C,GAAG,EAAE,0CAA0C;QAC/C,YAAY,EAAE,CAAC,WAAW,CAAC;KAC5B;IACD,2BAA2B,EAAE;QAC3B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC7B,QAAQ,EAAE,MAAM;QAChB,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,EAAE;QACX,GAAG,EAAE,0DAA0D;KAChE;IACD,yBAAyB,EAAE;QACzB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC7B,QAAQ,EAAE,MAAM;QAChB,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,EAAE;QACX,GAAG,EAAE,+DAA+D;QACpE,MAAM,EAAE,IAAI;KACb;IACD,wBAAwB,EAAE;QACxB,MAAM,EAAE,WAAW;QACnB,QAAQ,EAAE,MAAM;QAChB,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,EAAE;QACX,GAAG,EAAE,iDAAiD;KACvD;IAED,4EAA4E;IAC5E,uBAAuB,EAAE;QACvB,MAAM,EAAE,WAAW;QACnB,QAAQ,EAAE,UAAU;QACpB,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,oDAAoD;QAC7D,GAAG,EAAE,0BAA0B;QAC/B,YAAY,EAAE,CAAC,eAAe,CAAC;KAChC;IACD,4BAA4B,EAAE;QAC5B,MAAM,EAAE,WAAW;QACnB,QAAQ,EAAE,UAAU;QACpB,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,oDAAoD;QAC7D,GAAG,EAAE,+BAA+B;QACpC,YAAY,EAAE,CAAC,eAAe,CAAC;KAChC;IACD,8BAA8B,EAAE;QAC9B,MAAM,EAAE,WAAW;QACnB,QAAQ,EAAE,UAAU;QACpB,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,oDAAoD;QAC7D,GAAG,EAAE,iCAAiC;QACtC,YAAY,EAAE,CAAC,eAAe,CAAC;KAChC;IACD,kBAAkB,EAAE;QAClB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC7B,QAAQ,EAAE,UAAU;QACpB,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,EAAE;QACX,GAAG,EAAE,wEAAwE;QAC7E,MAAM,EAAE,IAAI;KACb;IAED,4EAA4E;IAC5E,6BAA6B,EAAE;QAC7B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC7B,QAAQ,EAAE,eAAe;QACzB,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,EAAE;QACX,GAAG,EAAE,+FAA+F;QACpG,YAAY,EAAE,CAAC,oBAAoB,CAAC;KACrC;IACD,4BAA4B,EAAE;QAC5B,MAAM,EAAE,WAAW;QACnB,QAAQ,EAAE,eAAe;QACzB,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,+BAA+B;QACxC,GAAG,EAAE,kCAAkC;KACxC;IACD,sCAAsC,EAAE;QACtC,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE;QACzB,QAAQ,EAAE,eAAe;QACzB,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,QAAQ;QACjB,GAAG,EAAE,gDAAgD;KACtD;IAED,4EAA4E;IAC5E,wBAAwB,EAAE;QACxB,MAAM,EAAE,WAAW;QACnB,QAAQ,EAAE,MAAM;QAChB,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,+CAA+C;QACxD,GAAG,EAAE,8EAA8E;QACnF,YAAY,EAAE,CAAC,SAAS,CAAC;KAC1B;IACD,iBAAiB,EAAE;QACjB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC7B,QAAQ,EAAE,MAAM;QAChB,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,EAAE;QACX,GAAG,EAAE,4CAA4C;QACjD,MAAM,EAAE,IAAI;KACb;IAED,4EAA4E;IAC5E,oBAAoB,EAAE;QACpB,MAAM,EAAE,WAAW;QACnB,QAAQ,EAAE,SAAS;QACnB,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,qBAAqB;QAC9B,GAAG,EAAE,qDAAqD;QAC1D,YAAY,EAAE,CAAC,kBAAkB,CAAC;KACnC;IAED,4EAA4E;IAC5E,eAAe,EAAE;QACf,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE;QACzB,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,EAAE;QACX,GAAG,EAAE,oCAAoC;KAC1C;CAC0C,CAAC;AAE9C;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAA6B,QAAQ,CAAC;AAI/D,MAAM,UAAU,aAAa,CAAC,CAAS;IACrC,OAAO,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,OAAO;IACrB,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAa,CAAC;AAC3C,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,sBAAsB,CAAC"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/env/schema.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -42,7 +42,13 @@ if (subcommand === "init") {
42
42
  async function main() {
43
43
  const config = await loadConfig();
44
44
  const server = new McpServer({ name: "dexe-mcp", version: "0.1.5" }, {
45
- instructions: "Tools for the DeXe Protocol governance-DAO codebase. Before calling any dexe_get_* / dexe_list_contracts / dexe_find_selector tool, ensure artifacts exist by calling dexe_compile once per session. dexe_decode_proposal and dexe_read_gov_state require DEXE_RPC_URL to be set.",
45
+ instructions: "Tools for DeXe Protocol governance DAOs (plus a generic dexe_gov_* surface for external OpenZeppelin/Compound Governor DAOs). " +
46
+ "Call dexe_context FIRST — it returns the signer, active chain, env readiness, and the DAOs/proposals from prior sessions so you don't start from zero. " +
47
+ "Prefer the composite flow tools over hand-sequencing calldata: dexe_dao_create (deploy a DAO), dexe_proposal_create (any proposal — pass proposalType + params), dexe_proposal_vote_and_execute. " +
48
+ "They handle the approve→deposit→create sequence, correct IPFS metadata, and the known deploy/proposal reverts. When depositing, ERC20.approve the UserKeeper, never GovPool. Validate DAO deploys on BSC testnet (chain 97). " +
49
+ "Before any dexe_get_* / dexe_list_contracts / dexe_find_selector, run dexe_compile once per session. dexe_decode_proposal and dexe_read_gov_state need an RPC. " +
50
+ "The tool surface is gated by DEXE_TOOLSETS (default 'core,proposals'). Set DEXE_TOOLSETS=full for every tool, or add sets: read, vote, governor, dev. " +
51
+ "Recipe skills ship in the package (dexe-create-dao, dexe-create-proposal, dexe-vote-execute, dexe-otc); install them with `npx dexe-mcp init`.",
46
52
  });
47
53
  registerAll(server, config);
48
54
  const transport = new StdioServerTransport();
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,133 @@
1
+ /**
2
+ * Preflight guards — named checks for the 10 documented recurring failure modes
3
+ * (cross-session memory, encoded here so the model can't re-derive them wrong).
4
+ * Each check returns `{ check, ok, remediation? }`; callers surface a failing
5
+ * check as an actionable tool error rather than silently "fixing" it (except
6
+ * where the flow tools already auto-fix, e.g. auto-deposit/approve).
7
+ *
8
+ * Failure modes covered:
9
+ * 1 approve→deposit→create sequence skipped → the flow composite IS the fix
10
+ * 2 wrong proposal IPFS metadata shape → CanonicalProposalMetadataSchema
11
+ * 4 votingPower() vs tokenBalance confusion → DEPOSITED_POWER_REMEDIATION
12
+ * 5 tokens locked after vote/execute → checkTokensUnlocked
13
+ * 6 approves GovPool instead of UserKeeper → checkApproveTarget
14
+ * 7 deploy silent reverts (cap/init/asset) → checkDeploy*
15
+ * 9 ProposalState enum ordering mistakes → PROPOSAL_STATE_NAMES / proposalStateName
16
+ * 10 metadata/avatar/offchain/blacklist edges → checkAvatar*, checkOffchain*, checkBlacklistRecipient
17
+ */
18
+ import { z } from "zod";
19
+ import type { DexeConfig } from "../config.js";
20
+ export interface PreflightResult {
21
+ /** Stable check id, e.g. "deploy.cap-gt-minted". */
22
+ check: string;
23
+ ok: boolean;
24
+ /** Actionable fix when `ok` is false. */
25
+ remediation?: string;
26
+ /** Extra context (values seen). */
27
+ detail?: string;
28
+ }
29
+ /** Return the first failing check, or null when all pass. */
30
+ export declare function firstFailure(results: PreflightResult[]): PreflightResult | null;
31
+ /** Throw on the first failing check (used by flow tools that catch → err()). */
32
+ export declare function assertPreflight(results: PreflightResult[]): void;
33
+ /**
34
+ * IGovPool.ProposalState order — Voting(0), WaitingForVotingTransfer(1),
35
+ * ValidatorVoting(2), Defeated(3), SucceededFor(4), SucceededAgainst(5),
36
+ * Locked(6), ExecutedFor(7), ExecutedAgainst(8), Undefined(9). Hardcoding a
37
+ * wrong order (Locked before SucceededFor) mislabels executable proposals.
38
+ */
39
+ export declare const PROPOSAL_STATE_NAMES: readonly ["Voting", "WaitingForVotingTransfer", "ValidatorVoting", "Defeated", "SucceededFor", "SucceededAgainst", "Locked", "ExecutedFor", "ExecutedAgainst", "Undefined"];
40
+ export declare function proposalStateName(n: number): string;
41
+ /** States from which a proposal is executable (post-quorum). */
42
+ export declare const EXECUTABLE_STATES: Set<number>;
43
+ /**
44
+ * Every external proposal's IPFS metadata MUST match this shape or the frontend
45
+ * indexer/diff UI breaks. `.passthrough()` keeps type-specific extras.
46
+ */
47
+ export declare const CanonicalProposalMetadataSchema: z.ZodObject<{
48
+ proposalName: z.ZodString;
49
+ proposalDescription: z.ZodString;
50
+ category: z.ZodOptional<z.ZodString>;
51
+ isMeta: z.ZodOptional<z.ZodBoolean>;
52
+ changes: z.ZodOptional<z.ZodObject<{
53
+ proposedChanges: z.ZodRecord<z.ZodString, z.ZodUnknown>;
54
+ currentChanges: z.ZodRecord<z.ZodString, z.ZodUnknown>;
55
+ }, "strip", z.ZodTypeAny, {
56
+ proposedChanges: Record<string, unknown>;
57
+ currentChanges: Record<string, unknown>;
58
+ }, {
59
+ proposedChanges: Record<string, unknown>;
60
+ currentChanges: Record<string, unknown>;
61
+ }>>;
62
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
63
+ proposalName: z.ZodString;
64
+ proposalDescription: z.ZodString;
65
+ category: z.ZodOptional<z.ZodString>;
66
+ isMeta: z.ZodOptional<z.ZodBoolean>;
67
+ changes: z.ZodOptional<z.ZodObject<{
68
+ proposedChanges: z.ZodRecord<z.ZodString, z.ZodUnknown>;
69
+ currentChanges: z.ZodRecord<z.ZodString, z.ZodUnknown>;
70
+ }, "strip", z.ZodTypeAny, {
71
+ proposedChanges: Record<string, unknown>;
72
+ currentChanges: Record<string, unknown>;
73
+ }, {
74
+ proposedChanges: Record<string, unknown>;
75
+ currentChanges: Record<string, unknown>;
76
+ }>>;
77
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
78
+ proposalName: z.ZodString;
79
+ proposalDescription: z.ZodString;
80
+ category: z.ZodOptional<z.ZodString>;
81
+ isMeta: z.ZodOptional<z.ZodBoolean>;
82
+ changes: z.ZodOptional<z.ZodObject<{
83
+ proposedChanges: z.ZodRecord<z.ZodString, z.ZodUnknown>;
84
+ currentChanges: z.ZodRecord<z.ZodString, z.ZodUnknown>;
85
+ }, "strip", z.ZodTypeAny, {
86
+ proposedChanges: Record<string, unknown>;
87
+ currentChanges: Record<string, unknown>;
88
+ }, {
89
+ proposedChanges: Record<string, unknown>;
90
+ currentChanges: Record<string, unknown>;
91
+ }>>;
92
+ }, z.ZodTypeAny, "passthrough">>;
93
+ export declare function checkProposalMetadata(meta: unknown): PreflightResult;
94
+ /** Mode 1 — a non-offchain proposal with no actions is almost always a mistake. */
95
+ export declare function checkProposalHasActions(actionsOnFor: {
96
+ data?: string;
97
+ }[], opts?: {
98
+ allowEmpty?: boolean;
99
+ }): PreflightResult;
100
+ export declare function checkApproveTarget(approveSpender: string, userKeeper: string, govPool: string): PreflightResult;
101
+ export declare const DEPOSITED_POWER_REMEDIATION: string;
102
+ /**
103
+ * Mode 5 — tokens stay locked after a vote/execute until withdrawn. If a user
104
+ * has deposited power but zero currently-available power, a fresh proposal/vote
105
+ * will under-count. Advisory (never blocks): the flow re-reads live power.
106
+ */
107
+ export declare function checkTokensUnlocked(depositedPower: bigint, availablePower: bigint): PreflightResult;
108
+ /** cap must be 0 (uncapped) or strictly greater than mintedTotal. */
109
+ export declare function checkDeployCap(cap: string, mintedTotal: string, isTokenCreation: boolean): PreflightResult;
110
+ /** LINEAR vote power needs the `__LinearPower_init()` selector, never 0x. */
111
+ export declare const LINEAR_POWER_INIT_SELECTOR = "0x892aea1f";
112
+ export declare function checkLinearInitData(voteType: string, initData: string | undefined): PreflightResult;
113
+ /** UserKeeper needs at least one non-zero governance asset (token or NFT). */
114
+ export declare function checkUserKeeperAsset(tokenAddress: string, nftAddress: string, isTokenCreation: boolean): PreflightResult;
115
+ /**
116
+ * Mode 7 / bug #32 — on mainnet (chain 56) deployGovPool reverts if
117
+ * mintedTotal ≠ sum(amounts). Testnet tolerates a remainder; warn only there.
118
+ */
119
+ export declare function checkTreasuryRemainder(mintedTotal: string, amounts: string[], chainId: number, isTokenCreation: boolean): PreflightResult;
120
+ /** Avatar must be a real JPEG, not SVG bytes with a .jpeg name (browser rejects). */
121
+ export declare function checkAvatarIsJpeg(fileName: string, firstBytes?: Uint8Array): PreflightResult;
122
+ /**
123
+ * Off-chain proposal metadata: backend wants type = "default_single_option_type"
124
+ * (not a unix timestamp) and quorum as a decimal fraction (0.5), not a whole
125
+ * percent (50) — bug #27.
126
+ */
127
+ export declare function checkOffchainMetadata(input: {
128
+ type?: string;
129
+ quorum?: number | string;
130
+ }): PreflightResult;
131
+ /** Blacklist precheck before any treasury→recipient token transfer. */
132
+ export declare function checkBlacklistRecipient(config: DexeConfig, token: string, recipient: string): Promise<PreflightResult>;
133
+ //# sourceMappingURL=preflight.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preflight.d.ts","sourceRoot":"","sources":["../../src/lib/preflight.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG/C,MAAM,WAAW,eAAe;IAC9B,oDAAoD;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,OAAO,CAAC;IACZ,yCAAyC;IACzC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mCAAmC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAUD,6DAA6D;AAC7D,wBAAgB,YAAY,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,eAAe,GAAG,IAAI,CAE/E;AAED,gFAAgF;AAChF,wBAAgB,eAAe,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,IAAI,CAGhE;AAMD;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,6KAWvB,CAAC;AAEX,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,gEAAgE;AAChE,eAAO,MAAM,iBAAiB,aAAqB,CAAC;AAMpD;;;GAGG;AACH,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAa5B,CAAC;AAEjB,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,OAAO,GAAG,eAAe,CAQpE;AAED,mFAAmF;AACnF,wBAAgB,uBAAuB,CACrC,YAAY,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,EACjC,IAAI,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,GAC9B,eAAe,CAOjB;AAMD,wBAAgB,kBAAkB,CAAC,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,eAAe,CAc/G;AAMD,eAAO,MAAM,2BAA2B,QAEiC,CAAC;AAE1E;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,cAAc,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,eAAe,CAQnG;AAMD,qEAAqE;AACrE,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,GAAG,eAAe,CAU1G;AAED,6EAA6E;AAC7E,eAAO,MAAM,0BAA0B,eAAe,CAAC;AAEvD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,eAAe,CAanG;AAED,8EAA8E;AAC9E,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,GAAG,eAAe,CAUxH;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EAAE,EACjB,OAAO,EAAE,MAAM,EACf,eAAe,EAAE,OAAO,GACvB,eAAe,CAcjB;AAMD,qFAAqF;AACrF,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,UAAU,GAAG,eAAe,CAqB5F;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,GAAG,eAAe,CAazG;AAED,uEAAuE;AACvE,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,UAAU,EAClB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,eAAe,CAAC,CAM1B"}
@@ -0,0 +1,239 @@
1
+ /**
2
+ * Preflight guards — named checks for the 10 documented recurring failure modes
3
+ * (cross-session memory, encoded here so the model can't re-derive them wrong).
4
+ * Each check returns `{ check, ok, remediation? }`; callers surface a failing
5
+ * check as an actionable tool error rather than silently "fixing" it (except
6
+ * where the flow tools already auto-fix, e.g. auto-deposit/approve).
7
+ *
8
+ * Failure modes covered:
9
+ * 1 approve→deposit→create sequence skipped → the flow composite IS the fix
10
+ * 2 wrong proposal IPFS metadata shape → CanonicalProposalMetadataSchema
11
+ * 4 votingPower() vs tokenBalance confusion → DEPOSITED_POWER_REMEDIATION
12
+ * 5 tokens locked after vote/execute → checkTokensUnlocked
13
+ * 6 approves GovPool instead of UserKeeper → checkApproveTarget
14
+ * 7 deploy silent reverts (cap/init/asset) → checkDeploy*
15
+ * 9 ProposalState enum ordering mistakes → PROPOSAL_STATE_NAMES / proposalStateName
16
+ * 10 metadata/avatar/offchain/blacklist edges → checkAvatar*, checkOffchain*, checkBlacklistRecipient
17
+ */
18
+ import { z } from "zod";
19
+ import { isAddress, ZeroAddress } from "ethers";
20
+ import { checkBlacklist, blacklistError } from "./blacklist.js";
21
+ const pass = (check, detail) => ({ check, ok: true, detail });
22
+ const fail = (check, remediation, detail) => ({
23
+ check,
24
+ ok: false,
25
+ remediation,
26
+ detail,
27
+ });
28
+ /** Return the first failing check, or null when all pass. */
29
+ export function firstFailure(results) {
30
+ return results.find((r) => !r.ok) ?? null;
31
+ }
32
+ /** Throw on the first failing check (used by flow tools that catch → err()). */
33
+ export function assertPreflight(results) {
34
+ const bad = firstFailure(results);
35
+ if (bad)
36
+ throw new Error(`Preflight [${bad.check}] failed: ${bad.remediation}${bad.detail ? ` (${bad.detail})` : ""}`);
37
+ }
38
+ // ==========================================================================
39
+ // Mode 9 — canonical ProposalState enum (single source of truth)
40
+ // ==========================================================================
41
+ /**
42
+ * IGovPool.ProposalState order — Voting(0), WaitingForVotingTransfer(1),
43
+ * ValidatorVoting(2), Defeated(3), SucceededFor(4), SucceededAgainst(5),
44
+ * Locked(6), ExecutedFor(7), ExecutedAgainst(8), Undefined(9). Hardcoding a
45
+ * wrong order (Locked before SucceededFor) mislabels executable proposals.
46
+ */
47
+ export const PROPOSAL_STATE_NAMES = [
48
+ "Voting",
49
+ "WaitingForVotingTransfer",
50
+ "ValidatorVoting",
51
+ "Defeated",
52
+ "SucceededFor",
53
+ "SucceededAgainst",
54
+ "Locked",
55
+ "ExecutedFor",
56
+ "ExecutedAgainst",
57
+ "Undefined",
58
+ ];
59
+ export function proposalStateName(n) {
60
+ return PROPOSAL_STATE_NAMES[n] ?? `Unknown(${n})`;
61
+ }
62
+ /** States from which a proposal is executable (post-quorum). */
63
+ export const EXECUTABLE_STATES = new Set([4, 5, 6]); // SucceededFor, SucceededAgainst, Locked
64
+ // ==========================================================================
65
+ // Mode 2 — canonical proposal metadata shape
66
+ // ==========================================================================
67
+ /**
68
+ * Every external proposal's IPFS metadata MUST match this shape or the frontend
69
+ * indexer/diff UI breaks. `.passthrough()` keeps type-specific extras.
70
+ */
71
+ export const CanonicalProposalMetadataSchema = z
72
+ .object({
73
+ proposalName: z.string().min(1, "proposalName is required"),
74
+ proposalDescription: z.string(),
75
+ category: z.string().optional(),
76
+ isMeta: z.boolean().optional(),
77
+ changes: z
78
+ .object({
79
+ proposedChanges: z.record(z.unknown()),
80
+ currentChanges: z.record(z.unknown()),
81
+ })
82
+ .optional(),
83
+ })
84
+ .passthrough();
85
+ export function checkProposalMetadata(meta) {
86
+ const parsed = CanonicalProposalMetadataSchema.safeParse(meta);
87
+ if (parsed.success)
88
+ return pass("metadata.shape");
89
+ return fail("metadata.shape", "Proposal metadata must be { proposalName, proposalDescription, category?, isMeta?, changes:{proposedChanges,currentChanges} }. " +
90
+ parsed.error.issues.map((i) => `${i.path.join(".") || "(root)"}: ${i.message}`).join("; "));
91
+ }
92
+ /** Mode 1 — a non-offchain proposal with no actions is almost always a mistake. */
93
+ export function checkProposalHasActions(actionsOnFor, opts) {
94
+ if (opts?.allowEmpty || actionsOnFor.length > 0)
95
+ return pass("actions.present", `${actionsOnFor.length} action(s)`);
96
+ return fail("actions.present", "No actionsOnFor to execute. Use dexe_proposal_create with a wired proposalType (see dexe_proposal_catalog) " +
97
+ "or pass actionsOnFor for proposalType='custom'. The composite handles approve→deposit→createProposalAndVote for you.");
98
+ }
99
+ // ==========================================================================
100
+ // Mode 6 — approve UserKeeper, never GovPool
101
+ // ==========================================================================
102
+ export function checkApproveTarget(approveSpender, userKeeper, govPool) {
103
+ if (approveSpender.toLowerCase() === userKeeper.toLowerCase())
104
+ return pass("approve.target");
105
+ if (approveSpender.toLowerCase() === govPool.toLowerCase()) {
106
+ return fail("approve.target", `ERC20.approve must target UserKeeper (${userKeeper}), not GovPool (${govPool}). ` +
107
+ "UserKeeper.transferFrom pulls the deposit; approving GovPool leaves the deposit un-pullable.");
108
+ }
109
+ return fail("approve.target", `ERC20.approve target ${approveSpender} is neither the DAO UserKeeper (${userKeeper}) nor GovPool. ` +
110
+ "Approve the UserKeeper.");
111
+ }
112
+ // ==========================================================================
113
+ // Mode 4 & 5 — deposited power / locked tokens
114
+ // ==========================================================================
115
+ export const DEPOSITED_POWER_REMEDIATION = "Deposited voting power = UserKeeper.tokenBalance(user,0).balance − ownedBalance (NOT votingPower(), which is 0 " +
116
+ "without an active deposit). The flow composites compute this for you.";
117
+ /**
118
+ * Mode 5 — tokens stay locked after a vote/execute until withdrawn. If a user
119
+ * has deposited power but zero currently-available power, a fresh proposal/vote
120
+ * will under-count. Advisory (never blocks): the flow re-reads live power.
121
+ */
122
+ export function checkTokensUnlocked(depositedPower, availablePower) {
123
+ if (depositedPower === 0n || availablePower > 0n)
124
+ return pass("tokens.unlocked");
125
+ return fail("tokens.unlocked", "Deposited tokens appear locked from a prior vote/execute (available power = 0 while deposited > 0). " +
126
+ "Withdraw between proposals (dexe_vote_build_withdraw) or wait for the lock to clear before re-voting.", `deposited=${depositedPower} available=${availablePower}`);
127
+ }
128
+ // ==========================================================================
129
+ // Mode 7 — DAO deploy silent reverts
130
+ // ==========================================================================
131
+ /** cap must be 0 (uncapped) or strictly greater than mintedTotal. */
132
+ export function checkDeployCap(cap, mintedTotal, isTokenCreation) {
133
+ if (!isTokenCreation)
134
+ return pass("deploy.cap");
135
+ const capBn = BigInt(cap);
136
+ const mintedBn = BigInt(mintedTotal);
137
+ if (capBn === 0n || capBn > mintedBn)
138
+ return pass("deploy.cap", `cap=${capBn} minted=${mintedBn}`);
139
+ return fail("deploy.cap", `tokenParams.cap (${capBn}) must be 0 (uncapped) or strictly greater than mintedTotal (${mintedBn}). ` +
140
+ "ERC20Gov init reverts silently otherwise (bug #28).");
141
+ }
142
+ /** LINEAR vote power needs the `__LinearPower_init()` selector, never 0x. */
143
+ export const LINEAR_POWER_INIT_SELECTOR = "0x892aea1f";
144
+ export function checkLinearInitData(voteType, initData) {
145
+ if (voteType !== "LINEAR_VOTES")
146
+ return pass("deploy.linear-init");
147
+ const d = (initData ?? "").toLowerCase();
148
+ // Omitted / empty / "0x" is the CORRECT default: the deploy builder
149
+ // auto-encodes __LinearPower_init() (0x892aea1f). Only a non-empty override
150
+ // that isn't the right selector is a mistake.
151
+ if (d === "" || d === "0x")
152
+ return pass("deploy.linear-init", "auto-encoded by deploy builder");
153
+ if (d.startsWith(LINEAR_POWER_INIT_SELECTOR))
154
+ return pass("deploy.linear-init");
155
+ return fail("deploy.linear-init", `LINEAR_VOTES votePower initData override '${initData}' is not the __LinearPower_init selector (${LINEAR_POWER_INIT_SELECTOR}). ` +
156
+ "The deploy tool auto-encodes this — do NOT override initData for LINEAR; omit it.");
157
+ }
158
+ /** UserKeeper needs at least one non-zero governance asset (token or NFT). */
159
+ export function checkUserKeeperAsset(tokenAddress, nftAddress, isTokenCreation) {
160
+ if (isTokenCreation)
161
+ return pass("deploy.userkeeper-asset", "new token creation");
162
+ const hasToken = isAddress(tokenAddress) && tokenAddress !== ZeroAddress;
163
+ const hasNft = isAddress(nftAddress) && nftAddress !== ZeroAddress;
164
+ if (hasToken || hasNft)
165
+ return pass("deploy.userkeeper-asset");
166
+ return fail("deploy.userkeeper-asset", "GovUserKeeper requires a non-zero governance asset: set userKeeperParams.tokenAddress (existing ERC20), " +
167
+ "userKeeperParams.nftAddress (existing ERC721), or tokenParams.name to create a new token.");
168
+ }
169
+ /**
170
+ * Mode 7 / bug #32 — on mainnet (chain 56) deployGovPool reverts if
171
+ * mintedTotal ≠ sum(amounts). Testnet tolerates a remainder; warn only there.
172
+ */
173
+ export function checkTreasuryRemainder(mintedTotal, amounts, chainId, isTokenCreation) {
174
+ if (!isTokenCreation)
175
+ return pass("deploy.treasury-remainder");
176
+ const minted = BigInt(mintedTotal);
177
+ const sum = amounts.reduce((a, b) => a + BigInt(b), 0n);
178
+ if (minted === sum)
179
+ return pass("deploy.treasury-remainder", `minted=${minted}`);
180
+ if (chainId === 56) {
181
+ return fail("deploy.treasury-remainder", `On BSC mainnet, tokenParams.mintedTotal (${minted}) must equal sum(amounts) (${sum}) — a treasury remainder ` +
182
+ "reverts deployGovPool (bug #32). Distribute the full mintedTotal across recipients.", `remainder=${minted - sum}`);
183
+ }
184
+ return { check: "deploy.treasury-remainder", ok: true, detail: `remainder=${minted - sum} tolerated on chain ${chainId} (advisory)` };
185
+ }
186
+ // ==========================================================================
187
+ // Mode 10 — edge cases (avatar, offchain, blacklist)
188
+ // ==========================================================================
189
+ /** Avatar must be a real JPEG, not SVG bytes with a .jpeg name (browser rejects). */
190
+ export function checkAvatarIsJpeg(fileName, firstBytes) {
191
+ const looksSvg = firstBytes && firstBytes.length >= 5
192
+ ? new TextDecoder().decode(firstBytes.slice(0, 5)).trimStart().startsWith("<")
193
+ : false;
194
+ const jpegExt = /\.(jpe?g)$/i.test(fileName);
195
+ if (looksSvg) {
196
+ return fail("avatar.jpeg", `Avatar bytes look like SVG/XML but the name is '${fileName}'. Pin a real JPEG (dexe_ipfs_upload_avatar), ` +
197
+ "not SVG bytes with a .jpeg name — ipfs-cache.dexe.io rejects the mismatch (bug generate_avatar).");
198
+ }
199
+ if (!jpegExt && fileName.length > 0) {
200
+ return {
201
+ check: "avatar.jpeg",
202
+ ok: true,
203
+ detail: `avatar name '${fileName}' is not .jpeg — acceptable if the bytes match the content-type`,
204
+ };
205
+ }
206
+ return pass("avatar.jpeg");
207
+ }
208
+ /**
209
+ * Off-chain proposal metadata: backend wants type = "default_single_option_type"
210
+ * (not a unix timestamp) and quorum as a decimal fraction (0.5), not a whole
211
+ * percent (50) — bug #27.
212
+ */
213
+ export function checkOffchainMetadata(input) {
214
+ const problems = [];
215
+ if (input.type !== undefined && /^\d{10,}$/.test(String(input.type))) {
216
+ problems.push(`type='${input.type}' looks like a unix timestamp; backend expects 'default_single_option_type'`);
217
+ }
218
+ if (input.quorum !== undefined) {
219
+ const q = Number(input.quorum);
220
+ if (Number.isFinite(q) && q > 1) {
221
+ problems.push(`quorum=${input.quorum} must be a decimal fraction (0.5 for 50%), not a whole percent`);
222
+ }
223
+ }
224
+ if (problems.length === 0)
225
+ return pass("offchain.metadata");
226
+ return fail("offchain.metadata", problems.join("; "));
227
+ }
228
+ /** Blacklist precheck before any treasury→recipient token transfer. */
229
+ export async function checkBlacklistRecipient(config, token, recipient) {
230
+ if (!token || token === ZeroAddress)
231
+ return pass("recipient.blacklist", "native/no-token transfer");
232
+ const bl = await checkBlacklist(config, token, recipient);
233
+ if (bl.status === "blacklisted")
234
+ return fail("recipient.blacklist", blacklistError(token, recipient));
235
+ if (bl.status === "skipped")
236
+ return { check: "recipient.blacklist", ok: true, detail: `skipped: ${bl.reason}` };
237
+ return pass("recipient.blacklist", "recipient not blacklisted");
238
+ }
239
+ //# sourceMappingURL=preflight.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preflight.js","sourceRoot":"","sources":["../../src/lib/preflight.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Server-side proposal action builders — the shared core behind the extended
3
+ * `dexe_proposal_create` (see `src/tools/flow.ts`). Each entry maps a short
4
+ * `proposalType` (e.g. `token_transfer`) to a zod param schema + a pure(ish)
5
+ * builder that returns the on-chain `actionsOnFor`, the frontend metadata
6
+ * `category`, and the `changes` payload the indexer expects.
7
+ *
8
+ * These builders MUST stay byte-parity with the equivalent
9
+ * `dexe_proposal_build_*` tools (verified in `tests/lib/proposalBuilders.test.ts`).
10
+ * Where a pure encoder already exists (token sale tiers, settings tuples) we
11
+ * import it directly so there is a single source of truth for the calldata.
12
+ *
13
+ * A builder throws on bad input; the caller (`runProposalCreate`) turns the
14
+ * throw into an actionable tool error. Builders never broadcast — they only
15
+ * shape actions + metadata for the flow to deposit/create/vote.
16
+ */
17
+ import { z } from "zod";
18
+ import type { ToolContext } from "../tools/context.js";
19
+ export interface BuiltProposalActions {
20
+ /** On-chain actions the DAO will execute (executor/value/data). */
21
+ actionsOnFor: {
22
+ executor: string;
23
+ value?: string;
24
+ data: string;
25
+ }[];
26
+ /** Frontend metadata category (e.g. "tokenTransfer"). */
27
+ category?: string;
28
+ /** Extra fields merged into the proposal IPFS metadata (e.g. `changes`). */
29
+ metadataExtra: Record<string, unknown>;
30
+ /** Short human summary for the flow step label. */
31
+ summary: string;
32
+ }
33
+ export interface BuilderDeps {
34
+ ctx: ToolContext;
35
+ /** DAO GovPool address — used as `from` for treasury NFT transfers. */
36
+ govPool: string;
37
+ chainId: number;
38
+ }
39
+ export interface CatalogBuilder {
40
+ schema: z.ZodTypeAny;
41
+ build: (params: unknown, deps: BuilderDeps) => Promise<BuiltProposalActions>;
42
+ }
43
+ /**
44
+ * Registry keyed by the short `proposalType` accepted by `dexe_proposal_create`.
45
+ * Extend this to wire another catalog type into the composite.
46
+ */
47
+ export declare const PROPOSAL_BUILDERS: Record<string, CatalogBuilder>;
48
+ /** proposalType values `dexe_proposal_create` accepts directly. */
49
+ export declare const FLOW_PROPOSAL_TYPES: readonly ["modify_dao_profile", "custom", ...string[]];
50
+ //# sourceMappingURL=proposalBuilders.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proposalBuilders.d.ts","sourceRoot":"","sources":["../../src/lib/proposalBuilders.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAmCvD,MAAM,WAAW,oBAAoB;IACnC,mEAAmE;IACnE,YAAY,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACnE,yDAAyD;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4EAA4E;IAC5E,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,mDAAmD;IACnD,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,WAAW,CAAC;IACjB,uEAAuE;IACvE,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,CAAC,CAAC,UAAU,CAAC;IACrB,KAAK,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,KAAK,OAAO,CAAC,oBAAoB,CAAC,CAAC;CAC9E;AAoPD;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAS5D,CAAC;AAEF,mEAAmE;AACnE,eAAO,MAAM,mBAAmB,wDAItB,CAAC"}