@continuumdao/ctm-mpc-defi 0.2.47 → 0.2.48

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.
@@ -3519,6 +3519,62 @@ var mcpContinuumDaoFetchProposalInputSchema = zod.z.object({
3519
3519
  var mcpContinuumDaoFetchProposalOutputSchema = zod.z.object({
3520
3520
  proposal: zod.z.unknown()
3521
3521
  });
3522
+ var mcpContinuumDaoProposalVoteRowSchema = zod.z.object({
3523
+ voter: zod.z.string(),
3524
+ explorerUrl: zod.z.string(),
3525
+ support: zod.z.number().int(),
3526
+ supportLabel: zod.z.string(),
3527
+ weight: zod.z.string(),
3528
+ weightCtm: zod.z.string(),
3529
+ reason: zod.z.string(),
3530
+ optionWeights: zod.z.array(zod.z.string()).optional(),
3531
+ how: zod.z.string(),
3532
+ attached: zod.z.boolean(),
3533
+ attachedTokenId: zod.z.string().optional(),
3534
+ nodeInfo: zod.z.object({
3535
+ forumHandle: zod.z.string().optional(),
3536
+ email: zod.z.string().optional(),
3537
+ ipv4: zod.z.string().optional(),
3538
+ ipv6: zod.z.string().optional(),
3539
+ vpsProvider: zod.z.string().optional(),
3540
+ ramInstalled: zod.z.string().optional(),
3541
+ cpuCores: zod.z.string().optional(),
3542
+ dIDType: zod.z.string().optional(),
3543
+ dID: zod.z.string().optional(),
3544
+ dataHex: zod.z.string().optional()
3545
+ }).strict().optional(),
3546
+ txHash: zod.z.string().optional(),
3547
+ txExplorerUrl: zod.z.string().optional(),
3548
+ blockNumber: zod.z.string().optional()
3549
+ });
3550
+ var mcpContinuumDaoFetchProposalVotesInputSchema = zod.z.object({
3551
+ chainId: zod.z.union([zod.z.string(), zod.z.number()]),
3552
+ rpcUrl: zod.z.string().min(1),
3553
+ proposalId: zod.z.union([zod.z.string(), zod.z.number()]),
3554
+ governor: evmAddressSchema.optional(),
3555
+ votingEscrow: evmAddressSchema.optional(),
3556
+ nodeProperties: evmAddressSchema.optional(),
3557
+ fromBlock: zod.z.union([zod.z.string(), zod.z.number()]).optional(),
3558
+ toBlock: zod.z.union([zod.z.string(), zod.z.number()]).optional()
3559
+ });
3560
+ var mcpContinuumDaoFetchProposalVotesOutputSchema = zod.z.object({
3561
+ proposalId: zod.z.string(),
3562
+ catalogId: zod.z.number().optional(),
3563
+ governor: zod.z.string(),
3564
+ nodeProperties: zod.z.string().optional(),
3565
+ title: zod.z.string().optional(),
3566
+ configuration: zod.z.enum(["bravo", "delta"]).optional(),
3567
+ fromBlock: zod.z.string(),
3568
+ toBlock: zod.z.string(),
3569
+ truncated: zod.z.boolean(),
3570
+ votes: zod.z.array(mcpContinuumDaoProposalVoteRowSchema),
3571
+ voterCount: zod.z.number().int().nonnegative(),
3572
+ attachedVoterCount: zod.z.number().int().nonnegative(),
3573
+ forWeight: zod.z.string(),
3574
+ againstWeight: zod.z.string(),
3575
+ abstainWeight: zod.z.string(),
3576
+ note: zod.z.string()
3577
+ });
3522
3578
  var liveProposalRowSchema = zod.z.object({
3523
3579
  id: zod.z.number().optional(),
3524
3580
  onchainId: zod.z.string(),
@@ -7851,9 +7907,10 @@ var CORE_MCP_TOOL_DEFINITIONS = [
7851
7907
  actionId: "continuum-dao.fetch-proposal-state",
7852
7908
  protocolId: "continuum-dao",
7853
7909
  chainCategory: "evm",
7854
- description: "Read ContinuumDAO.state and proposalVotes. `proposalId` may be a backend catalog id (0, -1, -2, \u2026) \u2014 those resolve to the row\u2019s onchainId hash and governorAddress before the Governor call. Catalog id 0 is not Governor proposal 0. Pass the row\u2019s governorAddress when set: ids -2 and -1 live on the superseded Linea governor 0x4800F9f1dC1b6daCA841B71E0531F547D374168E.",
7910
+ description: "Read ContinuumDAO.state and proposalVotes. `proposalId` may be a backend catalog id (0, -1, -2, \u2026) \u2014 those resolve to the row\u2019s onchainId hash and governorAddress before the Governor call. Catalog id 0 is not Governor proposal 0. Pass the row\u2019s governorAddress when set: ids -2 and -1 live on the superseded Linea governor 0x4800F9f1dC1b6daCA841B71E0531F547D374168E. After this, offer ctm_continuum_dao_fetch_proposal_votes to see who voted and how.",
7855
7911
  prerequisites: ["rpcUrl", "proposalId", "governor"],
7856
7912
  followUp: [
7913
+ "ctm_continuum_dao_fetch_proposal_votes",
7857
7914
  "ctm_continuum_dao_build_cast_vote_bravo_multisign",
7858
7915
  "ctm_continuum_dao_build_execute_multisign"
7859
7916
  ],
@@ -7866,9 +7923,13 @@ var CORE_MCP_TOOL_DEFINITIONS = [
7866
7923
  actionId: "continuum-dao.fetch-proposals",
7867
7924
  protocolId: "continuum-dao",
7868
7925
  chainCategory: "evm",
7869
- description: "List proposals from the public ContinuumDAO backend (POST /proposals). start/end are catalog id indexes (end exclusive), not offsets, and may be negative: the superseded Linea governor 0x4800F9f1\u2026 is stored as ids -2 and -1 so the current contract can start at 0. Omit start/end to fetch the full catalog (minIndex..maxIndex). Do not use this to answer \u201Cwhat is live now\u201D \u2014 use ctm_continuum_dao_fetch_live_proposals so on-chain state is overlaid.",
7926
+ description: "List proposals from the public ContinuumDAO backend (POST /proposals). start/end are catalog id indexes (end exclusive), not offsets, and may be negative: the superseded Linea governor 0x4800F9f1\u2026 is stored as ids -2 and -1 so the current contract can start at 0. Omit start/end to fetch the full catalog (minIndex..maxIndex). Do not use this to answer \u201Cwhat is live now\u201D \u2014 use ctm_continuum_dao_fetch_live_proposals so on-chain state is overlaid. After naming a proposal, offer ctm_continuum_dao_fetch_proposal_votes so the operator can see who voted and how.",
7870
7927
  prerequisites: [],
7871
- followUp: ["ctm_continuum_dao_fetch_live_proposals", "ctm_continuum_dao_fetch_proposal"],
7928
+ followUp: [
7929
+ "ctm_continuum_dao_fetch_live_proposals",
7930
+ "ctm_continuum_dao_fetch_proposal",
7931
+ "ctm_continuum_dao_fetch_proposal_votes"
7932
+ ],
7872
7933
  handler: { importPath: "protocols/evm/continuum-dao", exportName: "continuumDaoFetchProposals" },
7873
7934
  inputZod: mcpContinuumDaoFetchProposalsInputSchema,
7874
7935
  outputZod: mcpContinuumDaoFetchProposalsOutputSchema
@@ -7878,9 +7939,13 @@ var CORE_MCP_TOOL_DEFINITIONS = [
7878
7939
  actionId: "continuum-dao.fetch-proposal",
7879
7940
  protocolId: "continuum-dao",
7880
7941
  chainCategory: "evm",
7881
- description: "Fetch one proposal from the public ContinuumDAO backend (GET /proposals/:id). Id may be negative: -2 and -1 are the two proposals from the superseded Linea governor 0x4800F9f1dC1b6daCA841B71E0531F547D374168E.",
7942
+ description: "Fetch one proposal from the public ContinuumDAO backend (GET /proposals/:id). Id may be negative: -2 and -1 are the two proposals from the superseded Linea governor 0x4800F9f1dC1b6daCA841B71E0531F547D374168E. After this, offer ctm_continuum_dao_fetch_proposal_votes so the operator can see who voted and how.",
7882
7943
  prerequisites: ["id"],
7883
- followUp: ["ctm_continuum_dao_explain_proposal", "ctm_continuum_dao_fetch_proposal_state"],
7944
+ followUp: [
7945
+ "ctm_continuum_dao_explain_proposal",
7946
+ "ctm_continuum_dao_fetch_proposal_state",
7947
+ "ctm_continuum_dao_fetch_proposal_votes"
7948
+ ],
7884
7949
  handler: { importPath: "protocols/evm/continuum-dao", exportName: "continuumDaoFetchProposal" },
7885
7950
  inputZod: mcpContinuumDaoFetchProposalInputSchema,
7886
7951
  outputZod: mcpContinuumDaoFetchProposalOutputSchema
@@ -7890,11 +7955,12 @@ var CORE_MCP_TOOL_DEFINITIONS = [
7890
7955
  actionId: "continuum-dao.fetch-live-proposals",
7891
7956
  protocolId: "continuum-dao",
7892
7957
  chainCategory: "evm",
7893
- description: "Answer \u201Cwhat proposals are live now?\u201D. Lists the backend catalog (including negative ids on the superseded Linea governor) and overlays ContinuumDAO.state using each row\u2019s governorAddress. Rows set `committeeProposer` when the proposer is a ContinuumDAO Committee address \u2014 say Committee next to those titles. live = Active (voting). pending = Pending. readyToExecute = Succeeded (execute from here; no queue). recentlyCompleted = Canceled/Defeated/Expired/Executed in this scan. Requires Linea chainId + rpcUrl + governor for on-chain overlay. Read the `note` field aloud.",
7958
+ description: "Answer \u201Cwhat proposals are live now?\u201D. Lists the backend catalog (including negative ids on the superseded Linea governor) and overlays ContinuumDAO.state using each row\u2019s governorAddress. Rows set `committeeProposer` when the proposer is a ContinuumDAO Committee address \u2014 say Committee next to those titles. live = Active (voting). pending = Pending. readyToExecute = Succeeded (execute from here; no queue). recentlyCompleted = Canceled/Defeated/Expired/Executed in this scan. Requires Linea chainId + rpcUrl + governor for on-chain overlay. Read the `note` field aloud. Then offer ctm_continuum_dao_fetch_proposal_votes for any named proposal so the operator can see who voted and how.",
7894
7959
  prerequisites: ["load_defi_protocol continuum-dao", "Linea chainId 59144 or 59141", "rpcUrl", "governor if constant is zero"],
7895
7960
  followUp: [
7896
7961
  "ctm_continuum_dao_explain_proposal",
7897
7962
  "ctm_continuum_dao_fetch_proposal",
7963
+ "ctm_continuum_dao_fetch_proposal_votes",
7898
7964
  "ctm_continuum_dao_build_cast_vote_bravo_multisign",
7899
7965
  "ctm_continuum_dao_build_execute_multisign"
7900
7966
  ],
@@ -7907,13 +7973,32 @@ var CORE_MCP_TOOL_DEFINITIONS = [
7907
7973
  actionId: "continuum-dao.explain-proposal",
7908
7974
  protocolId: "continuum-dao",
7909
7975
  chainCategory: "evm",
7910
- description: "Deconstruct a ContinuumDAO proposal for the operator. Walks every user action (Bravo) or every option (Delta), labels encoder no-ops as signaling, flags C3 / value / approve / unknown signatures, and checks the forum thread section against the proposal type. `network.c3governor` is always present; an action is C3-remote only when network.name is not Linea (home chain 59144 / 59141). `committeeProposer` is true when the proposer is a ContinuumDAO Committee address \u2014 say that aloud. Read the `briefing` field aloud. Does not vote. For a policy recommendation load the mpc-config continuum-dao-vote-policy skill.",
7976
+ description: "Deconstruct a ContinuumDAO proposal for the operator. Walks every user action (Bravo) or every option (Delta), labels encoder no-ops as signaling, flags C3 / value / approve / unknown signatures, and checks the forum thread section against the proposal type. `network.c3governor` is always present; an action is C3-remote only when network.name is not Linea (home chain 59144 / 59141). `committeeProposer` is true when the proposer is a ContinuumDAO Committee address \u2014 say that aloud. Read the `briefing` field aloud. Then offer ctm_continuum_dao_fetch_proposal_votes so the operator can see who voted and how. Does not vote. For a policy recommendation load the mpc-config continuum-dao-vote-policy skill.",
7911
7977
  prerequisites: ["id (backend) or onchainId"],
7912
- followUp: ["ctm_continuum_dao_fetch_proposal_state", "ctm_continuum_dao_forum_fetch_thread"],
7978
+ followUp: [
7979
+ "ctm_continuum_dao_fetch_proposal_votes",
7980
+ "ctm_continuum_dao_fetch_proposal_state",
7981
+ "ctm_continuum_dao_forum_fetch_thread"
7982
+ ],
7913
7983
  handler: { importPath: "protocols/evm/continuum-dao", exportName: "continuumDaoExplainProposal" },
7914
7984
  inputZod: mcpContinuumDaoExplainProposalInputSchema,
7915
7985
  outputZod: mcpContinuumDaoExplainProposalOutputSchema
7916
7986
  }),
7987
+ defineMcpTool({
7988
+ name: "ctm_continuum_dao_fetch_proposal_votes",
7989
+ actionId: "continuum-dao.fetch-proposal-votes",
7990
+ protocolId: "continuum-dao",
7991
+ chainCategory: "evm",
7992
+ description: "Who voted on a ContinuumDAO proposal and how. Reads Governor VoteCast / VoteCastWithParams for live or past proposals. Each voter includes attached (NodeProperties.attachedTokenId after attachNodeFor) and, when they entered it at attach, nodeInfo (forum handle, VPS, DID, email, IP). Do not read email or IP aloud unless the operator asks. `proposalId` may be a backend catalog id (0, -1, -2, \u2026) or the on-chain hash. Bravo rows have For/Against/Abstain; Delta rows include option weights (last is NOTA). Offer this after listing or explaining a proposal. Linea only. Does not vote.",
7993
+ prerequisites: ["rpcUrl", "proposalId", "governor if constant is zero"],
7994
+ followUp: [
7995
+ "ctm_continuum_dao_fetch_proposal_state",
7996
+ "ctm_continuum_dao_explain_proposal"
7997
+ ],
7998
+ handler: { importPath: "protocols/evm/continuum-dao", exportName: "continuumDaoFetchProposalVotes" },
7999
+ inputZod: mcpContinuumDaoFetchProposalVotesInputSchema,
8000
+ outputZod: mcpContinuumDaoFetchProposalVotesOutputSchema
8001
+ }),
7917
8002
  defineMcpTool({
7918
8003
  name: "ctm_continuum_dao_register_proposal",
7919
8004
  actionId: "continuum-dao.register-proposal",
@@ -10488,6 +10573,7 @@ var continuumDaoProtocolModule = {
10488
10573
  { id: "continuum-dao.cancel", protocolId: CONTINUUM_DAO_PROTOCOL_ID, chainCategory: "evm", description: "Cancel a proposal", commonParams: ["keyGen", "purposeText", "useCustomGas"], params: { proposalId: { type: "string", required: true, description: "Catalog id or governor proposal hash" } } },
10489
10574
  { id: "continuum-dao.fetch-live-proposals", protocolId: CONTINUUM_DAO_PROTOCOL_ID, chainCategory: "evm", description: "List live/pending/succeeded proposals with on-chain state overlay", commonParams: [], params: { chainId: { type: "number", required: false, description: "Linea chain id" }, rpcUrl: { type: "string", required: false, description: "Linea RPC for state overlay" } } },
10490
10575
  { id: "continuum-dao.explain-proposal", protocolId: CONTINUUM_DAO_PROTOCOL_ID, chainCategory: "evm", description: "Deconstruct a proposal into a readable briefing (actions, C3, no-ops, risks)", commonParams: [], params: { id: { type: "string", required: false, description: "Backend proposal id" }, onchainId: { type: "string", required: false, description: "Governor proposal id" } } },
10576
+ { id: "continuum-dao.fetch-proposal-votes", protocolId: CONTINUUM_DAO_PROTOCOL_ID, chainCategory: "evm", description: "Who voted on a proposal and how (VoteCast / VoteCastWithParams)", commonParams: [], params: { proposalId: { type: "string", required: true, description: "Catalog id or governor proposal hash" } } },
10491
10577
  { id: "continuum-dao.forum-sign-in", protocolId: CONTINUUM_DAO_PROTOCOL_ID, chainCategory: "evm", description: "EIP-712 forum login (veCTM gate first)", commonParams: ["keyGen", "purposeText"], params: { nodeKey: { type: "string", required: false, description: "Attached node key" }, username: { type: "string", required: false, description: "Username when there is no node key" } } },
10492
10578
  { id: "continuum-dao.forum-sign-in-eligible", protocolId: CONTINUUM_DAO_PROTOCOL_ID, chainCategory: "evm", description: "Check veCTM forum login eligibility", commonParams: [], params: { address: { type: "string", required: true, description: "KeyGen or wallet address" } } },
10493
10579
  { id: "continuum-dao.forum-sign-out", protocolId: CONTINUUM_DAO_PROTOCOL_ID, chainCategory: "evm", description: "Revoke forum ticket and sessions", commonParams: [], params: { ticket: { type: "string", required: true, description: "Forum write ticket" } } },
@@ -11977,7 +12063,7 @@ var PROTOCOL_SUPPORT_ADVISORS = {
11977
12063
  if (ve) tokens.push({ address: ve, symbol: "veCTM", roles: ["position_nft"] });
11978
12064
  return {
11979
12065
  tokens,
11980
- 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). 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. 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.`
12066
+ 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.`
11981
12067
  };
11982
12068
  }
11983
12069
  }),
@@ -12270,6 +12356,8 @@ exports.mcpContinuumDaoFetchProposalInputSchema = mcpContinuumDaoFetchProposalIn
12270
12356
  exports.mcpContinuumDaoFetchProposalOutputSchema = mcpContinuumDaoFetchProposalOutputSchema;
12271
12357
  exports.mcpContinuumDaoFetchProposalStateInputSchema = mcpContinuumDaoFetchProposalStateInputSchema;
12272
12358
  exports.mcpContinuumDaoFetchProposalStateOutputSchema = mcpContinuumDaoFetchProposalStateOutputSchema;
12359
+ exports.mcpContinuumDaoFetchProposalVotesInputSchema = mcpContinuumDaoFetchProposalVotesInputSchema;
12360
+ exports.mcpContinuumDaoFetchProposalVotesOutputSchema = mcpContinuumDaoFetchProposalVotesOutputSchema;
12273
12361
  exports.mcpContinuumDaoFetchProposalsInputSchema = mcpContinuumDaoFetchProposalsInputSchema;
12274
12362
  exports.mcpContinuumDaoFetchProposalsOutputSchema = mcpContinuumDaoFetchProposalsOutputSchema;
12275
12363
  exports.mcpContinuumDaoFetchVotingPowerInputSchema = mcpContinuumDaoFetchVotingPowerInputSchema;
@@ -12329,6 +12417,7 @@ exports.mcpContinuumDaoMpaMailboxSendOutputSchema = mcpContinuumDaoMpaMailboxSen
12329
12417
  exports.mcpContinuumDaoMpaRetractInputSchema = mcpContinuumDaoMpaRetractInputSchema;
12330
12418
  exports.mcpContinuumDaoMpaRetractOutputSchema = mcpContinuumDaoMpaRetractOutputSchema;
12331
12419
  exports.mcpContinuumDaoProposalIdInputSchema = mcpContinuumDaoProposalIdInputSchema;
12420
+ exports.mcpContinuumDaoProposalVoteRowSchema = mcpContinuumDaoProposalVoteRowSchema;
12332
12421
  exports.mcpContinuumDaoProposeBravoInputSchema = mcpContinuumDaoProposeBravoInputSchema;
12333
12422
  exports.mcpContinuumDaoProposeDeltaInputSchema = mcpContinuumDaoProposeDeltaInputSchema;
12334
12423
  exports.mcpContinuumDaoRegisterProposalInputSchema = mcpContinuumDaoRegisterProposalInputSchema;