@continuumdao/ctm-mpc-defi 0.2.53 → 0.2.54

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.
@@ -601,11 +601,6 @@ var init_constants2 = __esm({
601
601
  CONTINUUM_DAO_MARKETPLACE_PROTOCOL_ID = "continuum-dao-marketplace";
602
602
  CONTINUUM_DAO_LINEA_GOVERNOR_ADDRESS = viem.getAddress("0x76FF2CB03175900F1D83328C82D27EA9aeaF2355");
603
603
  viem.getAddress("0x4800F9f1dC1b6daCA841B71E0531F547D374168E");
604
- [
605
- viem.getAddress("0xd23eecBe0362F36b254F774C274823Cbfc482a10"),
606
- viem.getAddress("0x482cdCbdd72ef307997153Ee7eb627B7a2348d34"),
607
- viem.getAddress("0x14C189354702b7f2aC7b19e61522A41632226BD8")
608
- ];
609
604
  CONTINUUM_DAO_DEPLOYMENTS = {
610
605
  [CONTINUUM_DAO_LINEA_CHAIN_ID]: {
611
606
  ...UNSET,
@@ -621,6 +616,20 @@ var init_constants2 = __esm({
621
616
  };
622
617
  }
623
618
  });
619
+ var init_committeeList = __esm({
620
+ "src/protocols/evm/continuum-dao/committeeList.ts"() {
621
+ }
622
+ });
623
+ var init_proposalCatalog = __esm({
624
+ "src/protocols/evm/continuum-dao/proposalCatalog.ts"() {
625
+ ({
626
+ name: "linea",
627
+ label: "Linea",
628
+ chainId: "59144",
629
+ c3governor: viem.getAddress("0x58B610a359c870E0fc941139821a51F5aa23f14E")
630
+ });
631
+ }
632
+ });
624
633
  var init_forum = __esm({
625
634
  "src/protocols/evm/continuum-dao/forum.ts"() {
626
635
  }
@@ -1286,7 +1295,11 @@ var multisignOutputSchema = zod.z.object({
1286
1295
  bodyForSign: zod.z.record(zod.z.unknown()).describe(
1287
1296
  "POST body fields without clientSig: keyList, pubKey, msgHash, msgRaw, destinationChainID, purpose, extraJSON, proposalTxParams (batch), messageHashes/messageRawBatch when N>1 txs."
1288
1297
  ),
1289
- messageToSign: zod.z.string().describe("JSON.stringify(bodyForSign) \u2014 exact string to sign before adding clientSig.")
1298
+ messageToSign: zod.z.string().describe("JSON.stringify(bodyForSign) \u2014 exact string to sign before adding clientSig."),
1299
+ proposalCatalog: zod.z.object({
1300
+ payload: zod.z.record(zod.z.unknown()),
1301
+ canonical: zod.z.string()
1302
+ }).optional().describe("Unsigned POST /proposals/create body and the canonical string to sign before the multisign is submitted.")
1290
1303
  }).describe(
1291
1304
  "Unsigned mpc-auth multiSignRequest payload from protocol builders (used internally before management submit)."
1292
1305
  );
@@ -3301,8 +3314,11 @@ var govOptionSchema = zod.z.object({
3301
3314
  var forumTopicKeyField = zod.z.string().min(1).describe(
3302
3315
  "URL of the Governance forum thread created first with ctm_continuum_dao_forum_create_topic (decision / election / treasury / constitution / admin). Must be /topic/:tid or /t/:tid. Ideas threads and the homepage are refused."
3303
3316
  );
3317
+ var proposalTypeField = zod.z.number().int().min(0).max(4).describe("0 Admin, 1 Constitution, 2 Decision, 3 Election, 4 Treasury. Must match the forum thread section.");
3304
3318
  var mcpContinuumDaoProposeBravoInputSchema = mcpMultisignInput({
3305
3319
  title: zod.z.string().min(1).max(128),
3320
+ description: zod.z.string().describe("Catalog description stored by POST /proposals/create."),
3321
+ type: proposalTypeField,
3306
3322
  actions: zod.z.array(govActionSchema).optional(),
3307
3323
  governor: evmAddressSchema.optional(),
3308
3324
  noOpTarget: evmAddressSchema.optional(),
@@ -3311,6 +3327,8 @@ var mcpContinuumDaoProposeBravoInputSchema = mcpMultisignInput({
3311
3327
  });
3312
3328
  var mcpContinuumDaoProposeDeltaInputSchema = mcpMultisignInput({
3313
3329
  title: zod.z.string().min(1).max(128),
3330
+ description: zod.z.string().describe("Catalog description stored by POST /proposals/create."),
3331
+ type: proposalTypeField,
3314
3332
  options: zod.z.array(govOptionSchema).min(2),
3315
3333
  nWinners: zod.z.union([zod.z.string(), zod.z.number()]),
3316
3334
  governor: evmAddressSchema.optional(),
@@ -3693,6 +3711,7 @@ var mcpContinuumDaoRegisterProposalInputSchema = zod.z.object({
3693
3711
  forumKey: forumTopicKeyField,
3694
3712
  type: zod.z.number().int().min(0).max(4),
3695
3713
  configuration: zod.z.union([zod.z.literal(0), zod.z.literal(1)]),
3714
+ nWinners: zod.z.number().int().min(0).optional(),
3696
3715
  actions: zod.z.array(zod.z.unknown()).optional(),
3697
3716
  options: zod.z.array(zod.z.unknown()).optional()
3698
3717
  });
@@ -7107,7 +7126,7 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
7107
7126
  actionId: "continuum-dao.propose-bravo",
7108
7127
  protocolId: "continuum-dao",
7109
7128
  chainCategory: "evm",
7110
- description: "Build ContinuumDAO.propose for a Bravo (For/Against/Abstain) proposal. Refuses if getVotes(KeyGen) < live proposalThreshold() or propose() reverts. Sequential execute dry-run is the Foundry forge scripts from ctm_continuum_dao_simulate_proposal (not isolated eth_call). For a draft from a different EOA use that tool with account. forumKey is required and must be a Governance thread (/topic/:tid) from ctm_continuum_dao_forum_create_topic (decision / election / treasury / constitution / admin). Ideas threads and the homepage are refused. Empty actions insert a no-op to the KeyGen address. Linea only. No billing legs. After the request is mined, call ctm_continuum_dao_register_proposal with the same forumKey.",
7129
+ description: "Build ContinuumDAO.propose for a Bravo (For/Against/Abstain) proposal and POST /proposals/create (pendingOnChain) before the multi-sign request is submitted. Requires description and type (0\u20134) matching the forum section. Refuses if getVotes(KeyGen) < live proposalThreshold(), the forum section does not match type, or propose() reverts. forumKey must be a Governance thread from ctm_continuum_dao_forum_create_topic. Ideas threads and the homepage are refused. Empty actions insert a no-op to the KeyGen address. Linea only. No billing legs. register_proposal is only a retry if this POST failed.",
7111
7130
  prerequisites: [
7112
7131
  "keyGen",
7113
7132
  "Linea RPC",
@@ -7116,7 +7135,7 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
7116
7135
  "forumKey from forum_create_topic",
7117
7136
  "governor-executed actions must simulate without revert"
7118
7137
  ],
7119
- followUp: [...MCP_MULTISIGN_SUBMIT_FOLLOW_UP, "ctm_continuum_dao_register_proposal"],
7138
+ followUp: [...MCP_MULTISIGN_SUBMIT_FOLLOW_UP],
7120
7139
  handler: { importPath: "protocols/evm/continuum-dao", exportName: "buildEvmMultisignBodyContinuumDaoProposeBravo" },
7121
7140
  inputZod: mcpContinuumDaoProposeBravoInputSchema
7122
7141
  }),
@@ -7125,7 +7144,7 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
7125
7144
  actionId: "continuum-dao.propose-delta",
7126
7145
  protocolId: "continuum-dao",
7127
7146
  chainCategory: "evm",
7128
- description: "Build ContinuumDAO.propose for a Delta multi-option proposal. Refuses if getVotes(KeyGen) < live proposalThreshold() or propose() reverts. Sequential execute dry-run is the Foundry forge scripts from ctm_continuum_dao_simulate_proposal (not isolated eth_call). For a draft from a different EOA use that tool with account. forumKey is required and must be a Governance thread from ctm_continuum_dao_forum_create_topic. Ideas threads are not valid forumKey values. Empty options get a no-op so indices increment. Linea only. No billing legs.",
7147
+ description: "Build ContinuumDAO.propose for a Delta multi-option proposal and POST /proposals/create (pendingOnChain) before the multi-sign request is submitted. Requires description and type (0\u20134) matching the forum section. Refuses if getVotes(KeyGen) < live proposalThreshold(), the forum section does not match type, or propose() reverts. forumKey must be a Governance thread from ctm_continuum_dao_forum_create_topic. Empty options get a no-op so indices increment. Linea only. No billing legs.",
7129
7148
  prerequisites: [
7130
7149
  "keyGen",
7131
7150
  "at least 2 options",
@@ -7134,7 +7153,7 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
7134
7153
  "forumKey from forum_create_topic",
7135
7154
  "governor-executed actions must simulate without revert"
7136
7155
  ],
7137
- followUp: [...MCP_MULTISIGN_SUBMIT_FOLLOW_UP, "ctm_continuum_dao_register_proposal"],
7156
+ followUp: [...MCP_MULTISIGN_SUBMIT_FOLLOW_UP],
7138
7157
  handler: { importPath: "protocols/evm/continuum-dao", exportName: "buildEvmMultisignBodyContinuumDaoProposeDeltaFromMcp" },
7139
7158
  inputZod: mcpContinuumDaoProposeDeltaInputSchema
7140
7159
  }),
@@ -9406,7 +9425,7 @@ var CORE_MCP_TOOL_DEFINITIONS = [
9406
9425
  actionId: "continuum-dao.register-proposal",
9407
9426
  protocolId: "continuum-dao",
9408
9427
  chainCategory: "evm",
9409
- description: "POST /proposals/create so app.continuumdao.org stays in sync. Call after the propose multi-sign request is mined. Does not revert the chain tx if this fails \u2014 retry.",
9428
+ description: "Retry POST /proposals/create when the propose tool\u2019s optimistic catalog write failed. The node signs with Ed25519. Does not revert a chain tx.",
9410
9429
  prerequisites: ["onchainId from hashProposal or ProposalCreated", "title", "proposer", "forumKey", "type", "configuration"],
9411
9430
  followUp: [],
9412
9431
  handler: { importPath: "protocols/evm/continuum-dao", exportName: "continuumDaoRegisterProposal" },
@@ -12358,6 +12377,8 @@ var continuumDaoMarketplaceProtocolModule = {
12358
12377
 
12359
12378
  // src/protocols/evm/continuum-dao/index.ts
12360
12379
  init_constants2();
12380
+ init_committeeList();
12381
+ init_proposalCatalog();
12361
12382
  init_governance();
12362
12383
  init_simulateProposal();
12363
12384
  init_foundryProposalScript();
@@ -14366,7 +14387,7 @@ var PROTOCOL_SUPPORT_ADVISORS = {
14366
14387
  if (ve) tokens.push({ address: ve, symbol: "veCTM", roles: ["position_nft"] });
14367
14388
  return {
14368
14389
  tokens,
14369
- notes: tokens.length === 0 ? "ContinuumDAO addresses are placeholders until redeploy. Lock/attach/governance stay Linea-only. Create lock needs >= 1 CTM (live minimumLock) and 1\u2013208 weeks. Prefer live GET /protocol/dao. For \u201Cwhat proposals are live now?\u201D use ctm_continuum_dao_fetch_live_proposals (not fetch_proposals). After naming a proposal, offer ctm_continuum_dao_fetch_proposal_votes to see who voted and how. Propose requires getVotes >= live proposalThreshold() (max of 1000e18 ve power and 1% of total votes). Bravo empty actions insert a KeyGen no-op; Delta votes need nOptions+1 weights (last is NOTA). No billing legs. After propose is mined, ctm_continuum_dao_register_proposal. Queue is not implemented." : `Default ContinuumDAO assets: ${listContinuumDaoDefaultAssets().filter((a) => a.chainId === chainId).map((a) => a.symbol).join(", ")}. Lock/attach/governance stay Linea-only. Create lock needs >= 1 CTM (live minimumLock) and 1\u2013208 weeks. For \u201Cwhat proposals are live now?\u201D use ctm_continuum_dao_fetch_live_proposals. After naming a proposal, offer ctm_continuum_dao_fetch_proposal_votes to see who voted and how. Propose requires getVotes >= live proposalThreshold() (max of 1000e18 ve power and 1% of total votes). Bravo empty actions insert a KeyGen no-op; Delta votes need nOptions+1 weights (last is NOTA). No billing legs. After propose is mined, ctm_continuum_dao_register_proposal. Queue is not implemented.`
14390
+ notes: tokens.length === 0 ? "ContinuumDAO addresses are placeholders until redeploy. Lock/attach/governance stay Linea-only. Create lock needs >= 1 CTM (live minimumLock) and 1\u2013208 weeks. Prefer live GET /protocol/dao. For \u201Cwhat proposals are live now?\u201D use ctm_continuum_dao_fetch_live_proposals (not fetch_proposals). After naming a proposal, offer ctm_continuum_dao_fetch_proposal_votes to see who voted and how. Propose requires getVotes >= live proposalThreshold() (max of 1000e18 ve power and 1% of total votes). Bravo empty actions insert a KeyGen no-op; Delta votes need nOptions+1 weights (last is NOTA). No billing legs. build_propose_* writes POST /proposals/create before the multi-sign request; register_proposal is only a retry. Queue is not implemented." : `Default ContinuumDAO assets: ${listContinuumDaoDefaultAssets().filter((a) => a.chainId === chainId).map((a) => a.symbol).join(", ")}. Lock/attach/governance stay Linea-only. Create lock needs >= 1 CTM (live minimumLock) and 1\u2013208 weeks. For \u201Cwhat proposals are live now?\u201D use ctm_continuum_dao_fetch_live_proposals. After naming a proposal, offer ctm_continuum_dao_fetch_proposal_votes to see who voted and how. Propose requires getVotes >= live proposalThreshold() (max of 1000e18 ve power and 1% of total votes). Bravo empty actions insert a KeyGen no-op; Delta votes need nOptions+1 weights (last is NOTA). No billing legs. build_propose_* writes POST /proposals/create before the multi-sign request; register_proposal is only a retry. Queue is not implemented.`
14370
14391
  };
14371
14392
  }
14372
14393
  }),