@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.d.ts
CHANGED
|
@@ -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>;
|
package/dist/agent/catalog.js
CHANGED
|
@@ -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
|
);
|
|
@@ -3289,7 +3302,13 @@ var govActionSchema = z.object({
|
|
|
3289
3302
|
target: evmAddressSchema,
|
|
3290
3303
|
value: z.string().optional(),
|
|
3291
3304
|
signature: z.string().optional(),
|
|
3292
|
-
inputs: z.array(
|
|
3305
|
+
inputs: z.array(
|
|
3306
|
+
z.object({
|
|
3307
|
+
name: z.string().optional().describe("Required. ABI parameter name for this input."),
|
|
3308
|
+
type: z.string(),
|
|
3309
|
+
value: z.string()
|
|
3310
|
+
})
|
|
3311
|
+
).optional()
|
|
3293
3312
|
});
|
|
3294
3313
|
var govOptionSchema = z.object({
|
|
3295
3314
|
label: z.string().min(1),
|
|
@@ -3298,8 +3317,11 @@ var govOptionSchema = z.object({
|
|
|
3298
3317
|
var forumTopicKeyField = z.string().min(1).describe(
|
|
3299
3318
|
"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
3319
|
);
|
|
3320
|
+
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
3321
|
var mcpContinuumDaoProposeBravoInputSchema = mcpMultisignInput({
|
|
3302
3322
|
title: z.string().min(1).max(128),
|
|
3323
|
+
description: z.string().describe("Catalog description stored by POST /proposals/create."),
|
|
3324
|
+
type: proposalTypeField,
|
|
3303
3325
|
actions: z.array(govActionSchema).optional(),
|
|
3304
3326
|
governor: evmAddressSchema.optional(),
|
|
3305
3327
|
noOpTarget: evmAddressSchema.optional(),
|
|
@@ -3308,6 +3330,8 @@ var mcpContinuumDaoProposeBravoInputSchema = mcpMultisignInput({
|
|
|
3308
3330
|
});
|
|
3309
3331
|
var mcpContinuumDaoProposeDeltaInputSchema = mcpMultisignInput({
|
|
3310
3332
|
title: z.string().min(1).max(128),
|
|
3333
|
+
description: z.string().describe("Catalog description stored by POST /proposals/create."),
|
|
3334
|
+
type: proposalTypeField,
|
|
3311
3335
|
options: z.array(govOptionSchema).min(2),
|
|
3312
3336
|
nWinners: z.union([z.string(), z.number()]),
|
|
3313
3337
|
governor: evmAddressSchema.optional(),
|
|
@@ -3690,6 +3714,7 @@ var mcpContinuumDaoRegisterProposalInputSchema = z.object({
|
|
|
3690
3714
|
forumKey: forumTopicKeyField,
|
|
3691
3715
|
type: z.number().int().min(0).max(4),
|
|
3692
3716
|
configuration: z.union([z.literal(0), z.literal(1)]),
|
|
3717
|
+
nWinners: z.number().int().min(0).optional(),
|
|
3693
3718
|
actions: z.array(z.unknown()).optional(),
|
|
3694
3719
|
options: z.array(z.unknown()).optional()
|
|
3695
3720
|
});
|
|
@@ -7104,7 +7129,7 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
7104
7129
|
actionId: "continuum-dao.propose-bravo",
|
|
7105
7130
|
protocolId: "continuum-dao",
|
|
7106
7131
|
chainCategory: "evm",
|
|
7107
|
-
description: "Build ContinuumDAO.propose for a Bravo (For/Against/Abstain) proposal
|
|
7132
|
+
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.",
|
|
7108
7133
|
prerequisites: [
|
|
7109
7134
|
"keyGen",
|
|
7110
7135
|
"Linea RPC",
|
|
@@ -7113,7 +7138,7 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
7113
7138
|
"forumKey from forum_create_topic",
|
|
7114
7139
|
"governor-executed actions must simulate without revert"
|
|
7115
7140
|
],
|
|
7116
|
-
followUp: [...MCP_MULTISIGN_SUBMIT_FOLLOW_UP
|
|
7141
|
+
followUp: [...MCP_MULTISIGN_SUBMIT_FOLLOW_UP],
|
|
7117
7142
|
handler: { importPath: "protocols/evm/continuum-dao", exportName: "buildEvmMultisignBodyContinuumDaoProposeBravo" },
|
|
7118
7143
|
inputZod: mcpContinuumDaoProposeBravoInputSchema
|
|
7119
7144
|
}),
|
|
@@ -7122,7 +7147,7 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
7122
7147
|
actionId: "continuum-dao.propose-delta",
|
|
7123
7148
|
protocolId: "continuum-dao",
|
|
7124
7149
|
chainCategory: "evm",
|
|
7125
|
-
description: "Build ContinuumDAO.propose for a Delta multi-option proposal
|
|
7150
|
+
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.",
|
|
7126
7151
|
prerequisites: [
|
|
7127
7152
|
"keyGen",
|
|
7128
7153
|
"at least 2 options",
|
|
@@ -7131,7 +7156,7 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
7131
7156
|
"forumKey from forum_create_topic",
|
|
7132
7157
|
"governor-executed actions must simulate without revert"
|
|
7133
7158
|
],
|
|
7134
|
-
followUp: [...MCP_MULTISIGN_SUBMIT_FOLLOW_UP
|
|
7159
|
+
followUp: [...MCP_MULTISIGN_SUBMIT_FOLLOW_UP],
|
|
7135
7160
|
handler: { importPath: "protocols/evm/continuum-dao", exportName: "buildEvmMultisignBodyContinuumDaoProposeDeltaFromMcp" },
|
|
7136
7161
|
inputZod: mcpContinuumDaoProposeDeltaInputSchema
|
|
7137
7162
|
}),
|
|
@@ -9403,7 +9428,7 @@ var CORE_MCP_TOOL_DEFINITIONS = [
|
|
|
9403
9428
|
actionId: "continuum-dao.register-proposal",
|
|
9404
9429
|
protocolId: "continuum-dao",
|
|
9405
9430
|
chainCategory: "evm",
|
|
9406
|
-
description: "POST /proposals/create
|
|
9431
|
+
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.",
|
|
9407
9432
|
prerequisites: ["onchainId from hashProposal or ProposalCreated", "title", "proposer", "forumKey", "type", "configuration"],
|
|
9408
9433
|
followUp: [],
|
|
9409
9434
|
handler: { importPath: "protocols/evm/continuum-dao", exportName: "continuumDaoRegisterProposal" },
|
|
@@ -12355,6 +12380,8 @@ var continuumDaoMarketplaceProtocolModule = {
|
|
|
12355
12380
|
|
|
12356
12381
|
// src/protocols/evm/continuum-dao/index.ts
|
|
12357
12382
|
init_constants2();
|
|
12383
|
+
init_committeeList();
|
|
12384
|
+
init_proposalCatalog();
|
|
12358
12385
|
init_governance();
|
|
12359
12386
|
init_simulateProposal();
|
|
12360
12387
|
init_foundryProposalScript();
|
|
@@ -14363,7 +14390,7 @@ var PROTOCOL_SUPPORT_ADVISORS = {
|
|
|
14363
14390
|
if (ve) tokens.push({ address: ve, symbol: "veCTM", roles: ["position_nft"] });
|
|
14364
14391
|
return {
|
|
14365
14392
|
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.
|
|
14393
|
+
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
14394
|
};
|
|
14368
14395
|
}
|
|
14369
14396
|
}),
|