@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.
@@ -519,12 +519,30 @@ declare const evmMultisignCommonInputSchema: z.ZodObject<{
519
519
  declare const multisignOutputSchema: z.ZodObject<{
520
520
  bodyForSign: z.ZodRecord<z.ZodString, z.ZodUnknown>;
521
521
  messageToSign: z.ZodString;
522
+ proposalCatalog: z.ZodOptional<z.ZodObject<{
523
+ payload: z.ZodRecord<z.ZodString, z.ZodUnknown>;
524
+ canonical: z.ZodString;
525
+ }, "strip", z.ZodTypeAny, {
526
+ payload: Record<string, unknown>;
527
+ canonical: string;
528
+ }, {
529
+ payload: Record<string, unknown>;
530
+ canonical: string;
531
+ }>>;
522
532
  }, "strip", z.ZodTypeAny, {
523
533
  bodyForSign: Record<string, unknown>;
524
534
  messageToSign: string;
535
+ proposalCatalog?: {
536
+ payload: Record<string, unknown>;
537
+ canonical: string;
538
+ } | undefined;
525
539
  }, {
526
540
  bodyForSign: Record<string, unknown>;
527
541
  messageToSign: string;
542
+ proposalCatalog?: {
543
+ payload: Record<string, unknown>;
544
+ canonical: string;
545
+ } | undefined;
528
546
  }>;
529
547
  /** Loose JSON object for protocol API responses passed between MCP tools. */
530
548
  declare const jsonObjectSchema: z.ZodRecord<z.ZodString, z.ZodUnknown>;
@@ -11911,6 +11929,7 @@ declare const mcpContinuumDaoRegisterProposalInputSchema: z.ZodObject<{
11911
11929
  forumKey: z.ZodString;
11912
11930
  type: z.ZodNumber;
11913
11931
  configuration: z.ZodUnion<[z.ZodLiteral<0>, z.ZodLiteral<1>]>;
11932
+ nWinners: z.ZodOptional<z.ZodNumber>;
11914
11933
  actions: z.ZodOptional<z.ZodArray<z.ZodUnknown, "many">>;
11915
11934
  options: z.ZodOptional<z.ZodArray<z.ZodUnknown, "many">>;
11916
11935
  }, "strip", z.ZodTypeAny, {
@@ -11923,6 +11942,7 @@ declare const mcpContinuumDaoRegisterProposalInputSchema: z.ZodObject<{
11923
11942
  onchainId: string;
11924
11943
  actions?: unknown[] | undefined;
11925
11944
  options?: unknown[] | undefined;
11945
+ nWinners?: number | undefined;
11926
11946
  }, {
11927
11947
  type: number;
11928
11948
  description: string;
@@ -11933,6 +11953,7 @@ declare const mcpContinuumDaoRegisterProposalInputSchema: z.ZodObject<{
11933
11953
  onchainId: string;
11934
11954
  actions?: unknown[] | undefined;
11935
11955
  options?: unknown[] | undefined;
11956
+ nWinners?: number | undefined;
11936
11957
  }>;
11937
11958
  declare const mcpContinuumDaoRegisterProposalOutputSchema: z.ZodObject<{
11938
11959
  ok: z.ZodLiteral<true>;
@@ -598,11 +598,6 @@ var init_constants2 = __esm({
598
598
  CONTINUUM_DAO_MARKETPLACE_PROTOCOL_ID = "continuum-dao-marketplace";
599
599
  CONTINUUM_DAO_LINEA_GOVERNOR_ADDRESS = getAddress("0x76FF2CB03175900F1D83328C82D27EA9aeaF2355");
600
600
  getAddress("0x4800F9f1dC1b6daCA841B71E0531F547D374168E");
601
- [
602
- getAddress("0xd23eecBe0362F36b254F774C274823Cbfc482a10"),
603
- getAddress("0x482cdCbdd72ef307997153Ee7eb627B7a2348d34"),
604
- getAddress("0x14C189354702b7f2aC7b19e61522A41632226BD8")
605
- ];
606
601
  CONTINUUM_DAO_DEPLOYMENTS = {
607
602
  [CONTINUUM_DAO_LINEA_CHAIN_ID]: {
608
603
  ...UNSET,
@@ -618,6 +613,20 @@ var init_constants2 = __esm({
618
613
  };
619
614
  }
620
615
  });
616
+ var init_committeeList = __esm({
617
+ "src/protocols/evm/continuum-dao/committeeList.ts"() {
618
+ }
619
+ });
620
+ var init_proposalCatalog = __esm({
621
+ "src/protocols/evm/continuum-dao/proposalCatalog.ts"() {
622
+ ({
623
+ name: "linea",
624
+ label: "Linea",
625
+ chainId: "59144",
626
+ c3governor: getAddress("0x58B610a359c870E0fc941139821a51F5aa23f14E")
627
+ });
628
+ }
629
+ });
621
630
  var init_forum = __esm({
622
631
  "src/protocols/evm/continuum-dao/forum.ts"() {
623
632
  }
@@ -1283,7 +1292,11 @@ var multisignOutputSchema = z.object({
1283
1292
  bodyForSign: z.record(z.unknown()).describe(
1284
1293
  "POST body fields without clientSig: keyList, pubKey, msgHash, msgRaw, destinationChainID, purpose, extraJSON, proposalTxParams (batch), messageHashes/messageRawBatch when N>1 txs."
1285
1294
  ),
1286
- messageToSign: z.string().describe("JSON.stringify(bodyForSign) \u2014 exact string to sign before adding clientSig.")
1295
+ messageToSign: z.string().describe("JSON.stringify(bodyForSign) \u2014 exact string to sign before adding clientSig."),
1296
+ proposalCatalog: z.object({
1297
+ payload: z.record(z.unknown()),
1298
+ canonical: z.string()
1299
+ }).optional().describe("Unsigned POST /proposals/create body and the canonical string to sign before the multisign is submitted.")
1287
1300
  }).describe(
1288
1301
  "Unsigned mpc-auth multiSignRequest payload from protocol builders (used internally before management submit)."
1289
1302
  );
@@ -3298,8 +3311,11 @@ var govOptionSchema = z.object({
3298
3311
  var forumTopicKeyField = z.string().min(1).describe(
3299
3312
  "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."
3300
3313
  );
3314
+ var proposalTypeField = z.number().int().min(0).max(4).describe("0 Admin, 1 Constitution, 2 Decision, 3 Election, 4 Treasury. Must match the forum thread section.");
3301
3315
  var mcpContinuumDaoProposeBravoInputSchema = mcpMultisignInput({
3302
3316
  title: z.string().min(1).max(128),
3317
+ description: z.string().describe("Catalog description stored by POST /proposals/create."),
3318
+ type: proposalTypeField,
3303
3319
  actions: z.array(govActionSchema).optional(),
3304
3320
  governor: evmAddressSchema.optional(),
3305
3321
  noOpTarget: evmAddressSchema.optional(),
@@ -3308,6 +3324,8 @@ var mcpContinuumDaoProposeBravoInputSchema = mcpMultisignInput({
3308
3324
  });
3309
3325
  var mcpContinuumDaoProposeDeltaInputSchema = mcpMultisignInput({
3310
3326
  title: z.string().min(1).max(128),
3327
+ description: z.string().describe("Catalog description stored by POST /proposals/create."),
3328
+ type: proposalTypeField,
3311
3329
  options: z.array(govOptionSchema).min(2),
3312
3330
  nWinners: z.union([z.string(), z.number()]),
3313
3331
  governor: evmAddressSchema.optional(),
@@ -3690,6 +3708,7 @@ var mcpContinuumDaoRegisterProposalInputSchema = z.object({
3690
3708
  forumKey: forumTopicKeyField,
3691
3709
  type: z.number().int().min(0).max(4),
3692
3710
  configuration: z.union([z.literal(0), z.literal(1)]),
3711
+ nWinners: z.number().int().min(0).optional(),
3693
3712
  actions: z.array(z.unknown()).optional(),
3694
3713
  options: z.array(z.unknown()).optional()
3695
3714
  });
@@ -7104,7 +7123,7 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
7104
7123
  actionId: "continuum-dao.propose-bravo",
7105
7124
  protocolId: "continuum-dao",
7106
7125
  chainCategory: "evm",
7107
- 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.",
7126
+ 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.",
7108
7127
  prerequisites: [
7109
7128
  "keyGen",
7110
7129
  "Linea RPC",
@@ -7113,7 +7132,7 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
7113
7132
  "forumKey from forum_create_topic",
7114
7133
  "governor-executed actions must simulate without revert"
7115
7134
  ],
7116
- followUp: [...MCP_MULTISIGN_SUBMIT_FOLLOW_UP, "ctm_continuum_dao_register_proposal"],
7135
+ followUp: [...MCP_MULTISIGN_SUBMIT_FOLLOW_UP],
7117
7136
  handler: { importPath: "protocols/evm/continuum-dao", exportName: "buildEvmMultisignBodyContinuumDaoProposeBravo" },
7118
7137
  inputZod: mcpContinuumDaoProposeBravoInputSchema
7119
7138
  }),
@@ -7122,7 +7141,7 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
7122
7141
  actionId: "continuum-dao.propose-delta",
7123
7142
  protocolId: "continuum-dao",
7124
7143
  chainCategory: "evm",
7125
- 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.",
7144
+ 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.",
7126
7145
  prerequisites: [
7127
7146
  "keyGen",
7128
7147
  "at least 2 options",
@@ -7131,7 +7150,7 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
7131
7150
  "forumKey from forum_create_topic",
7132
7151
  "governor-executed actions must simulate without revert"
7133
7152
  ],
7134
- followUp: [...MCP_MULTISIGN_SUBMIT_FOLLOW_UP, "ctm_continuum_dao_register_proposal"],
7153
+ followUp: [...MCP_MULTISIGN_SUBMIT_FOLLOW_UP],
7135
7154
  handler: { importPath: "protocols/evm/continuum-dao", exportName: "buildEvmMultisignBodyContinuumDaoProposeDeltaFromMcp" },
7136
7155
  inputZod: mcpContinuumDaoProposeDeltaInputSchema
7137
7156
  }),
@@ -9403,7 +9422,7 @@ var CORE_MCP_TOOL_DEFINITIONS = [
9403
9422
  actionId: "continuum-dao.register-proposal",
9404
9423
  protocolId: "continuum-dao",
9405
9424
  chainCategory: "evm",
9406
- 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.",
9425
+ 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.",
9407
9426
  prerequisites: ["onchainId from hashProposal or ProposalCreated", "title", "proposer", "forumKey", "type", "configuration"],
9408
9427
  followUp: [],
9409
9428
  handler: { importPath: "protocols/evm/continuum-dao", exportName: "continuumDaoRegisterProposal" },
@@ -12355,6 +12374,8 @@ var continuumDaoMarketplaceProtocolModule = {
12355
12374
 
12356
12375
  // src/protocols/evm/continuum-dao/index.ts
12357
12376
  init_constants2();
12377
+ init_committeeList();
12378
+ init_proposalCatalog();
12358
12379
  init_governance();
12359
12380
  init_simulateProposal();
12360
12381
  init_foundryProposalScript();
@@ -14363,7 +14384,7 @@ var PROTOCOL_SUPPORT_ADVISORS = {
14363
14384
  if (ve) tokens.push({ address: ve, symbol: "veCTM", roles: ["position_nft"] });
14364
14385
  return {
14365
14386
  tokens,
14366
- 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.`
14387
+ 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.`
14367
14388
  };
14368
14389
  }
14369
14390
  }),