@continuumdao/ctm-mpc-defi 0.2.53 → 0.2.55
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.
- package/dist/agent/catalog.cjs +40 -13
- package/dist/agent/catalog.cjs.map +1 -1
- package/dist/agent/catalog.d.ts +21 -0
- package/dist/agent/catalog.js +40 -13
- package/dist/agent/catalog.js.map +1 -1
- package/dist/agent/skills/continuum-dao/SKILL.md +3 -3
- package/dist/protocols/evm/continuum-dao/index.cjs +311 -43
- package/dist/protocols/evm/continuum-dao/index.cjs.map +1 -1
- package/dist/protocols/evm/continuum-dao/index.d.ts +109 -8
- package/dist/protocols/evm/continuum-dao/index.js +304 -43
- package/dist/protocols/evm/continuum-dao/index.js.map +1 -1
- package/package.json +1 -1
package/dist/agent/catalog.cjs
CHANGED
|
@@ -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
|
);
|
|
@@ -3292,7 +3305,13 @@ var govActionSchema = zod.z.object({
|
|
|
3292
3305
|
target: evmAddressSchema,
|
|
3293
3306
|
value: zod.z.string().optional(),
|
|
3294
3307
|
signature: zod.z.string().optional(),
|
|
3295
|
-
inputs: zod.z.array(
|
|
3308
|
+
inputs: zod.z.array(
|
|
3309
|
+
zod.z.object({
|
|
3310
|
+
name: zod.z.string().optional().describe("Required. ABI parameter name for this input."),
|
|
3311
|
+
type: zod.z.string(),
|
|
3312
|
+
value: zod.z.string()
|
|
3313
|
+
})
|
|
3314
|
+
).optional()
|
|
3296
3315
|
});
|
|
3297
3316
|
var govOptionSchema = zod.z.object({
|
|
3298
3317
|
label: zod.z.string().min(1),
|
|
@@ -3301,8 +3320,11 @@ var govOptionSchema = zod.z.object({
|
|
|
3301
3320
|
var forumTopicKeyField = zod.z.string().min(1).describe(
|
|
3302
3321
|
"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
3322
|
);
|
|
3323
|
+
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
3324
|
var mcpContinuumDaoProposeBravoInputSchema = mcpMultisignInput({
|
|
3305
3325
|
title: zod.z.string().min(1).max(128),
|
|
3326
|
+
description: zod.z.string().describe("Catalog description stored by POST /proposals/create."),
|
|
3327
|
+
type: proposalTypeField,
|
|
3306
3328
|
actions: zod.z.array(govActionSchema).optional(),
|
|
3307
3329
|
governor: evmAddressSchema.optional(),
|
|
3308
3330
|
noOpTarget: evmAddressSchema.optional(),
|
|
@@ -3311,6 +3333,8 @@ var mcpContinuumDaoProposeBravoInputSchema = mcpMultisignInput({
|
|
|
3311
3333
|
});
|
|
3312
3334
|
var mcpContinuumDaoProposeDeltaInputSchema = mcpMultisignInput({
|
|
3313
3335
|
title: zod.z.string().min(1).max(128),
|
|
3336
|
+
description: zod.z.string().describe("Catalog description stored by POST /proposals/create."),
|
|
3337
|
+
type: proposalTypeField,
|
|
3314
3338
|
options: zod.z.array(govOptionSchema).min(2),
|
|
3315
3339
|
nWinners: zod.z.union([zod.z.string(), zod.z.number()]),
|
|
3316
3340
|
governor: evmAddressSchema.optional(),
|
|
@@ -3693,6 +3717,7 @@ var mcpContinuumDaoRegisterProposalInputSchema = zod.z.object({
|
|
|
3693
3717
|
forumKey: forumTopicKeyField,
|
|
3694
3718
|
type: zod.z.number().int().min(0).max(4),
|
|
3695
3719
|
configuration: zod.z.union([zod.z.literal(0), zod.z.literal(1)]),
|
|
3720
|
+
nWinners: zod.z.number().int().min(0).optional(),
|
|
3696
3721
|
actions: zod.z.array(zod.z.unknown()).optional(),
|
|
3697
3722
|
options: zod.z.array(zod.z.unknown()).optional()
|
|
3698
3723
|
});
|
|
@@ -7107,7 +7132,7 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
7107
7132
|
actionId: "continuum-dao.propose-bravo",
|
|
7108
7133
|
protocolId: "continuum-dao",
|
|
7109
7134
|
chainCategory: "evm",
|
|
7110
|
-
description: "Build ContinuumDAO.propose for a Bravo (For/Against/Abstain) proposal
|
|
7135
|
+
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. Each action input requires a name. 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 retries the catalog write and, on 409, updates the existing row instead of creating a second proposal.",
|
|
7111
7136
|
prerequisites: [
|
|
7112
7137
|
"keyGen",
|
|
7113
7138
|
"Linea RPC",
|
|
@@ -7116,7 +7141,7 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
7116
7141
|
"forumKey from forum_create_topic",
|
|
7117
7142
|
"governor-executed actions must simulate without revert"
|
|
7118
7143
|
],
|
|
7119
|
-
followUp: [...MCP_MULTISIGN_SUBMIT_FOLLOW_UP
|
|
7144
|
+
followUp: [...MCP_MULTISIGN_SUBMIT_FOLLOW_UP],
|
|
7120
7145
|
handler: { importPath: "protocols/evm/continuum-dao", exportName: "buildEvmMultisignBodyContinuumDaoProposeBravo" },
|
|
7121
7146
|
inputZod: mcpContinuumDaoProposeBravoInputSchema
|
|
7122
7147
|
}),
|
|
@@ -7125,7 +7150,7 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
7125
7150
|
actionId: "continuum-dao.propose-delta",
|
|
7126
7151
|
protocolId: "continuum-dao",
|
|
7127
7152
|
chainCategory: "evm",
|
|
7128
|
-
description: "Build ContinuumDAO.propose for a Delta multi-option proposal
|
|
7153
|
+
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. Each action input requires a name. 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. register_proposal retries the catalog write and, on 409, updates the existing row instead of creating a second proposal.",
|
|
7129
7154
|
prerequisites: [
|
|
7130
7155
|
"keyGen",
|
|
7131
7156
|
"at least 2 options",
|
|
@@ -7134,7 +7159,7 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
7134
7159
|
"forumKey from forum_create_topic",
|
|
7135
7160
|
"governor-executed actions must simulate without revert"
|
|
7136
7161
|
],
|
|
7137
|
-
followUp: [...MCP_MULTISIGN_SUBMIT_FOLLOW_UP
|
|
7162
|
+
followUp: [...MCP_MULTISIGN_SUBMIT_FOLLOW_UP],
|
|
7138
7163
|
handler: { importPath: "protocols/evm/continuum-dao", exportName: "buildEvmMultisignBodyContinuumDaoProposeDeltaFromMcp" },
|
|
7139
7164
|
inputZod: mcpContinuumDaoProposeDeltaInputSchema
|
|
7140
7165
|
}),
|
|
@@ -9406,7 +9431,7 @@ var CORE_MCP_TOOL_DEFINITIONS = [
|
|
|
9406
9431
|
actionId: "continuum-dao.register-proposal",
|
|
9407
9432
|
protocolId: "continuum-dao",
|
|
9408
9433
|
chainCategory: "evm",
|
|
9409
|
-
description: "POST /proposals/create
|
|
9434
|
+
description: "Retry the catalog write when propose did not leave a row. POST /proposals/create, and on 409 POST /proposals/repair to update title, description, forumKey, type, and actions or option labels and actions on the existing onchainId. Each action input requires a name. A Delta repair must use the on-chain nOptions and nWinners. Does not create a second proposal and does not revert a chain tx. The node signs with Ed25519.",
|
|
9410
9435
|
prerequisites: ["onchainId from hashProposal or ProposalCreated", "title", "proposer", "forumKey", "type", "configuration"],
|
|
9411
9436
|
followUp: [],
|
|
9412
9437
|
handler: { importPath: "protocols/evm/continuum-dao", exportName: "continuumDaoRegisterProposal" },
|
|
@@ -12358,6 +12383,8 @@ var continuumDaoMarketplaceProtocolModule = {
|
|
|
12358
12383
|
|
|
12359
12384
|
// src/protocols/evm/continuum-dao/index.ts
|
|
12360
12385
|
init_constants2();
|
|
12386
|
+
init_committeeList();
|
|
12387
|
+
init_proposalCatalog();
|
|
12361
12388
|
init_governance();
|
|
12362
12389
|
init_simulateProposal();
|
|
12363
12390
|
init_foundryProposalScript();
|
|
@@ -14366,7 +14393,7 @@ var PROTOCOL_SUPPORT_ADVISORS = {
|
|
|
14366
14393
|
if (ve) tokens.push({ address: ve, symbol: "veCTM", roles: ["position_nft"] });
|
|
14367
14394
|
return {
|
|
14368
14395
|
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.
|
|
14396
|
+
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
14397
|
};
|
|
14371
14398
|
}
|
|
14372
14399
|
}),
|