@varun-ai07/covenant-mcp 1.3.2 → 2.0.0
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/abis/GrantProgram.json +778 -0
- package/dist/abis/RevisionManager.json +544 -0
- package/dist/abis/TrainingMarketplace.json +787 -0
- package/dist/cli.js +0 -0
- package/dist/config.d.ts +15 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +23 -3
- package/dist/config.js.map +1 -1
- package/dist/server.d.ts +3 -2
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +63 -63
- package/dist/server.js.map +1 -1
- package/dist/shared-types.js +8 -8
- package/dist/tools/{registry.d.ts → corven-agent.d.ts} +1 -1
- package/dist/tools/corven-agent.d.ts.map +1 -0
- package/dist/tools/corven-agent.js +90 -0
- package/dist/tools/corven-agent.js.map +1 -0
- package/dist/tools/corven-attest.d.ts +3 -0
- package/dist/tools/corven-attest.d.ts.map +1 -0
- package/dist/tools/corven-attest.js +87 -0
- package/dist/tools/corven-attest.js.map +1 -0
- package/dist/tools/{batches.d.ts → corven-batch.d.ts} +1 -1
- package/dist/tools/corven-batch.d.ts.map +1 -0
- package/dist/tools/corven-batch.js +116 -0
- package/dist/tools/corven-batch.js.map +1 -0
- package/dist/tools/{bounties.d.ts → corven-bounty.d.ts} +1 -1
- package/dist/tools/corven-bounty.d.ts.map +1 -0
- package/dist/tools/corven-bounty.js +72 -0
- package/dist/tools/corven-bounty.js.map +1 -0
- package/dist/tools/{collectives.d.ts → corven-collective.d.ts} +1 -1
- package/dist/tools/corven-collective.d.ts.map +1 -0
- package/dist/tools/corven-collective.js +105 -0
- package/dist/tools/corven-collective.js.map +1 -0
- package/dist/tools/corven-fiat.d.ts +3 -0
- package/dist/tools/corven-fiat.d.ts.map +1 -0
- package/dist/tools/corven-fiat.js +42 -0
- package/dist/tools/corven-fiat.js.map +1 -0
- package/dist/tools/corven-govern.d.ts +3 -0
- package/dist/tools/corven-govern.d.ts.map +1 -0
- package/dist/tools/corven-govern.js +65 -0
- package/dist/tools/corven-govern.js.map +1 -0
- package/dist/tools/{grants.d.ts → corven-grants.d.ts} +1 -1
- package/dist/tools/corven-grants.d.ts.map +1 -0
- package/dist/tools/corven-grants.js +67 -0
- package/dist/tools/corven-grants.js.map +1 -0
- package/dist/tools/{insurance.d.ts → corven-insurance.d.ts} +1 -1
- package/dist/tools/corven-insurance.d.ts.map +1 -0
- package/dist/tools/corven-insurance.js +103 -0
- package/dist/tools/corven-insurance.js.map +1 -0
- package/dist/tools/{market.d.ts → corven-market.d.ts} +1 -1
- package/dist/tools/corven-market.d.ts.map +1 -0
- package/dist/tools/corven-market.js +113 -0
- package/dist/tools/corven-market.js.map +1 -0
- package/dist/tools/corven-match.d.ts +3 -0
- package/dist/tools/corven-match.d.ts.map +1 -0
- package/dist/tools/corven-match.js +235 -0
- package/dist/tools/corven-match.js.map +1 -0
- package/dist/tools/corven-message.d.ts +3 -0
- package/dist/tools/corven-message.d.ts.map +1 -0
- package/dist/tools/corven-message.js +82 -0
- package/dist/tools/corven-message.js.map +1 -0
- package/dist/tools/corven-multi.d.ts +3 -0
- package/dist/tools/corven-multi.d.ts.map +1 -0
- package/dist/tools/corven-multi.js +197 -0
- package/dist/tools/corven-multi.js.map +1 -0
- package/dist/tools/corven-reputation.d.ts +3 -0
- package/dist/tools/corven-reputation.d.ts.map +1 -0
- package/dist/tools/corven-reputation.js +126 -0
- package/dist/tools/corven-reputation.js.map +1 -0
- package/dist/tools/{revisions.d.ts → corven-revision.d.ts} +1 -1
- package/dist/tools/corven-revision.d.ts.map +1 -0
- package/dist/tools/corven-revision.js +73 -0
- package/dist/tools/corven-revision.js.map +1 -0
- package/dist/tools/{router.d.ts → corven-router.d.ts} +1 -1
- package/dist/tools/corven-router.d.ts.map +1 -0
- package/dist/tools/corven-router.js +116 -0
- package/dist/tools/corven-router.js.map +1 -0
- package/dist/tools/corven-stats.d.ts +3 -0
- package/dist/tools/corven-stats.d.ts.map +1 -0
- package/dist/tools/corven-stats.js +97 -0
- package/dist/tools/corven-stats.js.map +1 -0
- package/dist/tools/corven-stream.d.ts +3 -0
- package/dist/tools/corven-stream.d.ts.map +1 -0
- package/dist/tools/corven-stream.js +197 -0
- package/dist/tools/corven-stream.js.map +1 -0
- package/dist/tools/corven-task.d.ts +3 -0
- package/dist/tools/corven-task.d.ts.map +1 -0
- package/dist/tools/corven-task.js +105 -0
- package/dist/tools/corven-task.js.map +1 -0
- package/dist/tools/{training.d.ts → corven-training.d.ts} +1 -1
- package/dist/tools/corven-training.d.ts.map +1 -0
- package/dist/tools/corven-training.js +73 -0
- package/dist/tools/corven-training.js.map +1 -0
- package/dist/tools/corven-verify.d.ts +3 -0
- package/dist/tools/corven-verify.d.ts.map +1 -0
- package/dist/tools/corven-verify.js +149 -0
- package/dist/tools/corven-verify.js.map +1 -0
- package/dist/tools/corven-wallet.d.ts +3 -0
- package/dist/tools/corven-wallet.d.ts.map +1 -0
- package/dist/tools/corven-wallet.js +235 -0
- package/dist/tools/corven-wallet.js.map +1 -0
- package/dist/tools/covenant-help.d.ts.map +1 -1
- package/dist/tools/covenant-help.js +88 -312
- package/dist/tools/covenant-help.js.map +1 -1
- package/dist/tools/disputes.d.ts.map +1 -1
- package/dist/tools/disputes.js +26 -0
- package/dist/tools/disputes.js.map +1 -1
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/abis/v2/DisputeResolution.json +0 -493
- package/dist/abis/v2/InsurancePool.json +0 -645
- package/dist/tools/account-abstraction.d.ts +0 -3
- package/dist/tools/account-abstraction.d.ts.map +0 -1
- package/dist/tools/account-abstraction.js +0 -364
- package/dist/tools/account-abstraction.js.map +0 -1
- package/dist/tools/batches.d.ts.map +0 -1
- package/dist/tools/batches.js +0 -231
- package/dist/tools/batches.js.map +0 -1
- package/dist/tools/bounties.d.ts.map +0 -1
- package/dist/tools/bounties.js +0 -304
- package/dist/tools/bounties.js.map +0 -1
- package/dist/tools/bridge.d.ts +0 -3
- package/dist/tools/bridge.d.ts.map +0 -1
- package/dist/tools/bridge.js +0 -190
- package/dist/tools/bridge.js.map +0 -1
- package/dist/tools/collectives.d.ts.map +0 -1
- package/dist/tools/collectives.js +0 -249
- package/dist/tools/collectives.js.map +0 -1
- package/dist/tools/cross-chain.d.ts +0 -3
- package/dist/tools/cross-chain.d.ts.map +0 -1
- package/dist/tools/cross-chain.js +0 -77
- package/dist/tools/cross-chain.js.map +0 -1
- package/dist/tools/escrow.d.ts +0 -3
- package/dist/tools/escrow.d.ts.map +0 -1
- package/dist/tools/escrow.js +0 -606
- package/dist/tools/escrow.js.map +0 -1
- package/dist/tools/fiat-onramp.d.ts +0 -3
- package/dist/tools/fiat-onramp.d.ts.map +0 -1
- package/dist/tools/fiat-onramp.js +0 -108
- package/dist/tools/fiat-onramp.js.map +0 -1
- package/dist/tools/governance.d.ts +0 -3
- package/dist/tools/governance.d.ts.map +0 -1
- package/dist/tools/governance.js +0 -271
- package/dist/tools/governance.js.map +0 -1
- package/dist/tools/grants.d.ts.map +0 -1
- package/dist/tools/grants.js +0 -269
- package/dist/tools/grants.js.map +0 -1
- package/dist/tools/insurance.d.ts.map +0 -1
- package/dist/tools/insurance.js +0 -271
- package/dist/tools/insurance.js.map +0 -1
- package/dist/tools/market.d.ts.map +0 -1
- package/dist/tools/market.js +0 -393
- package/dist/tools/market.js.map +0 -1
- package/dist/tools/matching.d.ts +0 -3
- package/dist/tools/matching.d.ts.map +0 -1
- package/dist/tools/matching.js +0 -233
- package/dist/tools/matching.js.map +0 -1
- package/dist/tools/messaging.d.ts +0 -3
- package/dist/tools/messaging.d.ts.map +0 -1
- package/dist/tools/messaging.js +0 -159
- package/dist/tools/messaging.js.map +0 -1
- package/dist/tools/multi-token.d.ts +0 -3
- package/dist/tools/multi-token.d.ts.map +0 -1
- package/dist/tools/multi-token.js +0 -274
- package/dist/tools/multi-token.js.map +0 -1
- package/dist/tools/offchain-coordinator.d.ts +0 -3
- package/dist/tools/offchain-coordinator.d.ts.map +0 -1
- package/dist/tools/offchain-coordinator.js +0 -436
- package/dist/tools/offchain-coordinator.js.map +0 -1
- package/dist/tools/protocol.d.ts +0 -3
- package/dist/tools/protocol.d.ts.map +0 -1
- package/dist/tools/protocol.js +0 -127
- package/dist/tools/protocol.js.map +0 -1
- package/dist/tools/receipts.d.ts +0 -3
- package/dist/tools/receipts.d.ts.map +0 -1
- package/dist/tools/receipts.js +0 -147
- package/dist/tools/receipts.js.map +0 -1
- package/dist/tools/registry.d.ts.map +0 -1
- package/dist/tools/registry.js +0 -245
- package/dist/tools/registry.js.map +0 -1
- package/dist/tools/reputation-vc.d.ts +0 -3
- package/dist/tools/reputation-vc.d.ts.map +0 -1
- package/dist/tools/reputation-vc.js +0 -438
- package/dist/tools/reputation-vc.js.map +0 -1
- package/dist/tools/revisions.d.ts.map +0 -1
- package/dist/tools/revisions.js +0 -108
- package/dist/tools/revisions.js.map +0 -1
- package/dist/tools/router.d.ts.map +0 -1
- package/dist/tools/router.js +0 -104
- package/dist/tools/router.js.map +0 -1
- package/dist/tools/streaming.d.ts +0 -3
- package/dist/tools/streaming.d.ts.map +0 -1
- package/dist/tools/streaming.js +0 -350
- package/dist/tools/streaming.js.map +0 -1
- package/dist/tools/templates.d.ts +0 -3
- package/dist/tools/templates.d.ts.map +0 -1
- package/dist/tools/templates.js +0 -392
- package/dist/tools/templates.js.map +0 -1
- package/dist/tools/training.d.ts.map +0 -1
- package/dist/tools/training.js +0 -304
- package/dist/tools/training.js.map +0 -1
- package/dist/tools/v2-settlement.d.ts +0 -3
- package/dist/tools/v2-settlement.d.ts.map +0 -1
- package/dist/tools/v2-settlement.js +0 -226
- package/dist/tools/v2-settlement.js.map +0 -1
- package/dist/tools/verification.d.ts +0 -3
- package/dist/tools/verification.d.ts.map +0 -1
- package/dist/tools/verification.js +0 -215
- package/dist/tools/verification.js.map +0 -1
- package/dist/tools/verify-deep.d.ts +0 -3
- package/dist/tools/verify-deep.d.ts.map +0 -1
- package/dist/tools/verify-deep.js +0 -125
- package/dist/tools/verify-deep.js.map +0 -1
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* corven_batch — Parallel task batches
|
|
3
|
+
*
|
|
4
|
+
* Consolidates: corven_create_batch, corven_aggregate_results,
|
|
5
|
+
* corven_get_batch, corven_get_batch_status,
|
|
6
|
+
* corven_check_batch_submitted, corven_get_aggregated_result
|
|
7
|
+
*/
|
|
8
|
+
import { z } from "zod";
|
|
9
|
+
import { parseEther, formatEther } from "viem";
|
|
10
|
+
import { loadAbi, CONTRACTS } from "../config.js";
|
|
11
|
+
import { executeOrPrepare, readContract } from "../handlers/wallet.js";
|
|
12
|
+
import { formatTxResult, formatReadResult } from "../handlers/transactions.js";
|
|
13
|
+
import { formatStructuredError, parseContractError } from "../lib/formatResponse.js";
|
|
14
|
+
import { stringToBytes32, stringsToBytes32 } from "../utils.js";
|
|
15
|
+
const ABI = loadAbi("ParallelTaskBatch");
|
|
16
|
+
const BATCH_STATUS = {
|
|
17
|
+
0: "Pending",
|
|
18
|
+
1: "InProgress",
|
|
19
|
+
2: "Aggregated",
|
|
20
|
+
3: "Completed",
|
|
21
|
+
4: "Failed",
|
|
22
|
+
};
|
|
23
|
+
const actionSchema = z.enum([
|
|
24
|
+
"create", "submit", "verify", "get", "check",
|
|
25
|
+
]);
|
|
26
|
+
const schema = z.object({
|
|
27
|
+
action: actionSchema,
|
|
28
|
+
batchId: z.number().optional(),
|
|
29
|
+
workers: z.array(z.string()).optional(),
|
|
30
|
+
payments: z.array(z.string()).optional(),
|
|
31
|
+
deadlines: z.array(z.number()).optional(),
|
|
32
|
+
descriptionHashes: z.array(z.string()).optional(),
|
|
33
|
+
aggregationSpec: z.string().optional(),
|
|
34
|
+
});
|
|
35
|
+
export function registerBatchTools(server) {
|
|
36
|
+
server.registerTool("corven_batch", {
|
|
37
|
+
title: "Batch Manager",
|
|
38
|
+
description: "Run multiple tasks in parallel via COVENANT batches.\n\n" +
|
|
39
|
+
"ACTIONS:\n" +
|
|
40
|
+
" create — Create a batch of parallel tasks (requires workers, payments, deadlines, descriptionHashes, aggregationSpec)\n" +
|
|
41
|
+
" submit — Worker submits deliverable for a batch subtask\n" +
|
|
42
|
+
" verify — Finalize batch by aggregating all results (requires batchId)\n" +
|
|
43
|
+
" get — Get batch details or total count (pass batchId for details, omit for count)\n" +
|
|
44
|
+
" check — Check if all subtasks are submitted (requires batchId)\n\n" +
|
|
45
|
+
"WORKFLOW: create → workers execute → check (all submitted?) → verify (aggregate)\n" +
|
|
46
|
+
"FEE: 1% protocol fee per subtask. Max 50 workers per batch.",
|
|
47
|
+
inputSchema: schema.shape,
|
|
48
|
+
}, async (args) => {
|
|
49
|
+
try {
|
|
50
|
+
const { action } = args;
|
|
51
|
+
if (action === "create") {
|
|
52
|
+
if (!args.workers || !args.payments || !args.deadlines || !args.descriptionHashes || !args.aggregationSpec) {
|
|
53
|
+
return formatStructuredError("Missing required fields.", "create requires workers, payments, deadlines, descriptionHashes, and aggregationSpec.", "Provide all five parameters as arrays of equal length.", false);
|
|
54
|
+
}
|
|
55
|
+
if (args.workers.length !== args.payments.length || args.workers.length !== args.deadlines.length || args.workers.length !== args.descriptionHashes.length) {
|
|
56
|
+
return formatStructuredError("Array length mismatch.", "All arrays must have the same length.", "Ensure workers, payments, deadlines, and descriptionHashes arrays are all the same size.", false);
|
|
57
|
+
}
|
|
58
|
+
const paymentsWei = args.payments.map(p => parseEther(p));
|
|
59
|
+
const totalPayment = paymentsWei.reduce((sum, p) => sum + p, 0n);
|
|
60
|
+
const descBytes32 = stringsToBytes32(args.descriptionHashes);
|
|
61
|
+
const aggBytes32 = stringToBytes32(args.aggregationSpec);
|
|
62
|
+
const result = await executeOrPrepare(CONTRACTS.ParallelTaskBatch, ABI, "createBatch", [
|
|
63
|
+
args.workers,
|
|
64
|
+
paymentsWei,
|
|
65
|
+
args.deadlines.map(BigInt),
|
|
66
|
+
descBytes32,
|
|
67
|
+
aggBytes32,
|
|
68
|
+
], totalPayment);
|
|
69
|
+
return formatTxResult(result);
|
|
70
|
+
}
|
|
71
|
+
if (action === "submit") {
|
|
72
|
+
if (args.batchId === undefined) {
|
|
73
|
+
return formatStructuredError("Missing required field.", "submit requires batchId.", "Provide the batchId.", false);
|
|
74
|
+
}
|
|
75
|
+
const result = await executeOrPrepare(CONTRACTS.ParallelTaskBatch, ABI, "submitSubtask", [BigInt(args.batchId)], 0n);
|
|
76
|
+
return formatTxResult(result);
|
|
77
|
+
}
|
|
78
|
+
if (action === "verify") {
|
|
79
|
+
if (args.batchId === undefined) {
|
|
80
|
+
return formatStructuredError("Missing required field.", "verify requires batchId.", "Provide the batchId.", false);
|
|
81
|
+
}
|
|
82
|
+
const result = await executeOrPrepare(CONTRACTS.ParallelTaskBatch, ABI, "aggregateResults", [BigInt(args.batchId)], 0n);
|
|
83
|
+
return formatTxResult(result);
|
|
84
|
+
}
|
|
85
|
+
if (action === "get") {
|
|
86
|
+
if (args.batchId === undefined) {
|
|
87
|
+
const count = await readContract(CONTRACTS.ParallelTaskBatch, ABI, "batchCounter", []);
|
|
88
|
+
return formatReadResult({ totalBatches: Number(count) }, "Batch Count");
|
|
89
|
+
}
|
|
90
|
+
const data = await readContract(CONTRACTS.ParallelTaskBatch, ABI, "getBatchDetails", [BigInt(args.batchId)]);
|
|
91
|
+
const enriched = {
|
|
92
|
+
client: data.client,
|
|
93
|
+
totalBudgetEth: formatEther(data.totalBudget),
|
|
94
|
+
taskIds: data.taskIds.map((id) => Number(id)),
|
|
95
|
+
aggregationSpec: data.aggregationSpec,
|
|
96
|
+
statusLabel: BATCH_STATUS[data.status] ?? "Unknown",
|
|
97
|
+
createdAt: data.createdAt,
|
|
98
|
+
};
|
|
99
|
+
return formatReadResult(enriched, `Batch #${args.batchId}`);
|
|
100
|
+
}
|
|
101
|
+
if (action === "check") {
|
|
102
|
+
if (args.batchId === undefined) {
|
|
103
|
+
return formatStructuredError("Missing required field.", "check requires batchId.", "Provide the batchId.", false);
|
|
104
|
+
}
|
|
105
|
+
const allSubmitted = await readContract(CONTRACTS.ParallelTaskBatch, ABI, "areAllSubtasksSubmitted", [BigInt(args.batchId)]);
|
|
106
|
+
return formatReadResult({ batchId: args.batchId, allSubmitted }, `Batch #${args.batchId} Status`);
|
|
107
|
+
}
|
|
108
|
+
return formatReadResult({ error: "Unknown action" }, "Error");
|
|
109
|
+
}
|
|
110
|
+
catch (e) {
|
|
111
|
+
const parsed = parseContractError(e);
|
|
112
|
+
return formatStructuredError(parsed.error, parsed.cause, parsed.fix, parsed.retryable);
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=corven-batch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"corven-batch.js","sourceRoot":"","sources":["../../src/tools/corven-batch.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"corven-bounty.d.ts","sourceRoot":"","sources":["../../src/tools/corven-bounty.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAiBzE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA0E3D"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { parseEther, formatEther } from "viem";
|
|
3
|
+
import { loadAbi, CONTRACTS } from "../config.js";
|
|
4
|
+
import { executeOrPrepare, readContract } from "../handlers/wallet.js";
|
|
5
|
+
import { formatTxResult, formatReadResult } from "../handlers/transactions.js";
|
|
6
|
+
import { formatStructuredError, parseContractError } from "../lib/formatResponse.js";
|
|
7
|
+
const ABI = loadAbi("AgentRegistry");
|
|
8
|
+
const actionSchema = z.enum(["post", "claim", "winner", "list", "get"]);
|
|
9
|
+
const schema = z.object({
|
|
10
|
+
action: actionSchema,
|
|
11
|
+
title: z.string().optional(),
|
|
12
|
+
description: z.string().optional(),
|
|
13
|
+
reward: z.string().optional(),
|
|
14
|
+
deadline: z.number().optional(),
|
|
15
|
+
bountyId: z.number().optional(),
|
|
16
|
+
deliverableHash: z.string().optional(),
|
|
17
|
+
winnerAddress: z.string().optional(),
|
|
18
|
+
});
|
|
19
|
+
export function registerBountyTools(server) {
|
|
20
|
+
server.registerTool("corven_bounty", {
|
|
21
|
+
title: "Bounty Board",
|
|
22
|
+
description: "Post bounties for specific tasks. Workers claim and compete.\n\n" +
|
|
23
|
+
"ACTIONS:\n" +
|
|
24
|
+
" post — Post a bounty (requires title, description, reward, deadline)\n" +
|
|
25
|
+
" claim — Submit work to claim a bounty (requires bountyId, deliverableHash)\n" +
|
|
26
|
+
" winner — Select the winning submission (requires bountyId, winnerAddress)\n" +
|
|
27
|
+
" list — List available bounties\n" +
|
|
28
|
+
" get — Get bounty details by ID (requires bountyId)\n\n" +
|
|
29
|
+
"WORKFLOW: post → claim (workers submit) → winner (creator picks)\n" +
|
|
30
|
+
"NOTE: Bounties are offchain MVP. In production, reward ETH is escrowed.",
|
|
31
|
+
inputSchema: schema.shape,
|
|
32
|
+
}, async (args) => {
|
|
33
|
+
try {
|
|
34
|
+
const { action } = args;
|
|
35
|
+
if (action === "post") {
|
|
36
|
+
const result = await executeOrPrepare(CONTRACTS.AgentRegistry, ABI, "postBounty", [args.title, args.description, parseEther(args.reward || "0.01"), BigInt(args.deadline)], parseEther(args.reward || "0.01"));
|
|
37
|
+
return formatTxResult(result);
|
|
38
|
+
}
|
|
39
|
+
if (action === "claim") {
|
|
40
|
+
const result = await executeOrPrepare(CONTRACTS.AgentRegistry, ABI, "claimBounty", [BigInt(args.bountyId), args.deliverableHash], 0n);
|
|
41
|
+
return formatTxResult(result);
|
|
42
|
+
}
|
|
43
|
+
if (action === "winner") {
|
|
44
|
+
const result = await executeOrPrepare(CONTRACTS.AgentRegistry, ABI, "selectWinner", [BigInt(args.bountyId), args.winnerAddress], 0n);
|
|
45
|
+
return formatTxResult(result);
|
|
46
|
+
}
|
|
47
|
+
if (action === "list") {
|
|
48
|
+
const count = await readContract(CONTRACTS.AgentRegistry, ABI, "getBountyCount", []);
|
|
49
|
+
return formatReadResult({ totalBounties: Number(count) }, "Bounties");
|
|
50
|
+
}
|
|
51
|
+
if (action === "get") {
|
|
52
|
+
const data = await readContract(CONTRACTS.AgentRegistry, ABI, "getBounty", [BigInt(args.bountyId)]);
|
|
53
|
+
return formatReadResult({
|
|
54
|
+
id: Number(data.id),
|
|
55
|
+
title: data.title,
|
|
56
|
+
description: data.description,
|
|
57
|
+
creator: data.creator,
|
|
58
|
+
reward: formatEther(data.reward),
|
|
59
|
+
status: ["Open", "Claimed", "Completed", "Cancelled"][data.status] || "Unknown",
|
|
60
|
+
deadline: Number(data.deadline),
|
|
61
|
+
submissions: Number(data.submissions),
|
|
62
|
+
}, `Bounty #${args.bountyId}`);
|
|
63
|
+
}
|
|
64
|
+
return formatReadResult({ error: "Unknown action" }, "Error");
|
|
65
|
+
}
|
|
66
|
+
catch (e) {
|
|
67
|
+
const parsed = parseContractError(e);
|
|
68
|
+
return formatStructuredError(parsed.error, parsed.cause, parsed.fix, parsed.retryable);
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=corven-bounty.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"corven-bounty.js","sourceRoot":"","sources":["../../src/tools/corven-bounty.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"corven-collective.d.ts","sourceRoot":"","sources":["../../src/tools/corven-collective.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAqBzE,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAoG/D"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* corven_collective — Agent collectives/pools
|
|
3
|
+
*
|
|
4
|
+
* Consolidates: corven_create_collective, corven_join_collective,
|
|
5
|
+
* corven_launch_collective_task, corven_get_collective
|
|
6
|
+
*/
|
|
7
|
+
import { z } from "zod";
|
|
8
|
+
import { parseEther, formatEther } from "viem";
|
|
9
|
+
import { loadAbi, CONTRACTS } from "../config.js";
|
|
10
|
+
import { executeOrPrepare, readContract } from "../handlers/wallet.js";
|
|
11
|
+
import { formatTxResult, formatReadResult } from "../handlers/transactions.js";
|
|
12
|
+
import { formatStructuredError, parseContractError } from "../lib/formatResponse.js";
|
|
13
|
+
import { stringToBytes32 } from "../utils.js";
|
|
14
|
+
const ABI = loadAbi("AgentCollective");
|
|
15
|
+
const actionSchema = z.enum([
|
|
16
|
+
"create", "join", "launch", "propose", "get",
|
|
17
|
+
]);
|
|
18
|
+
const schema = z.object({
|
|
19
|
+
action: actionSchema,
|
|
20
|
+
collectiveId: z.number().optional(),
|
|
21
|
+
minContribution: z.string().optional(),
|
|
22
|
+
maxMembers: z.number().optional(),
|
|
23
|
+
contribution: z.string().optional(),
|
|
24
|
+
worker: z.string().optional(),
|
|
25
|
+
payment: z.string().optional(),
|
|
26
|
+
deadline: z.number().optional(),
|
|
27
|
+
descriptionHash: z.string().optional(),
|
|
28
|
+
taskId: z.number().optional(),
|
|
29
|
+
});
|
|
30
|
+
export function registerCollectiveTools(server) {
|
|
31
|
+
server.registerTool("corven_collective", {
|
|
32
|
+
title: "Collective Manager",
|
|
33
|
+
description: "Pool resources with other agents to fund expensive tasks together.\n\n" +
|
|
34
|
+
"ACTIONS:\n" +
|
|
35
|
+
" create — Create a new collective (requires minContribution, maxMembers)\n" +
|
|
36
|
+
" join — Join an existing collective by contributing ETH (requires collectiveId, contribution)\n" +
|
|
37
|
+
" launch — Launch a task from pooled funds (requires collectiveId, worker, payment, deadline, descriptionHash)\n" +
|
|
38
|
+
" propose — Submit a governance proposal to the collective\n" +
|
|
39
|
+
" get — Get collective details or total count (pass collectiveId for details, omit for count)\n\n" +
|
|
40
|
+
"WORKFLOW: create → join (others contribute) → launch (use pooled funds for tasks)\n" +
|
|
41
|
+
"NOTE: maxMembers is permanent. Initial contribution defaults to minContribution.",
|
|
42
|
+
inputSchema: schema.shape,
|
|
43
|
+
}, async (args) => {
|
|
44
|
+
try {
|
|
45
|
+
const { action } = args;
|
|
46
|
+
if (action === "create") {
|
|
47
|
+
if (!args.minContribution || !args.maxMembers) {
|
|
48
|
+
return formatStructuredError("Missing required fields.", "create requires minContribution and maxMembers.", "Provide both parameters.", false);
|
|
49
|
+
}
|
|
50
|
+
const minWei = parseEther(args.minContribution);
|
|
51
|
+
const result = await executeOrPrepare(CONTRACTS.AgentCollective, ABI, "createCollective", [minWei, BigInt(args.maxMembers)], minWei);
|
|
52
|
+
return formatTxResult(result);
|
|
53
|
+
}
|
|
54
|
+
if (action === "join") {
|
|
55
|
+
if (args.collectiveId === undefined || !args.contribution) {
|
|
56
|
+
return formatStructuredError("Missing required fields.", "join requires collectiveId and contribution.", "Provide both parameters.", false);
|
|
57
|
+
}
|
|
58
|
+
const contribWei = parseEther(args.contribution);
|
|
59
|
+
const result = await executeOrPrepare(CONTRACTS.AgentCollective, ABI, "joinCollective", [BigInt(args.collectiveId)], contribWei);
|
|
60
|
+
return formatTxResult(result);
|
|
61
|
+
}
|
|
62
|
+
if (action === "launch") {
|
|
63
|
+
if (args.collectiveId === undefined || !args.worker || !args.payment || !args.deadline || !args.descriptionHash) {
|
|
64
|
+
return formatStructuredError("Missing required fields.", "launch requires collectiveId, worker, payment, deadline, and descriptionHash.", "Provide all five parameters.", false);
|
|
65
|
+
}
|
|
66
|
+
const paymentWei = parseEther(args.payment);
|
|
67
|
+
const descBytes32 = stringToBytes32(args.descriptionHash);
|
|
68
|
+
const result = await executeOrPrepare(CONTRACTS.AgentCollective, ABI, "launchTask", [
|
|
69
|
+
BigInt(args.collectiveId),
|
|
70
|
+
args.worker,
|
|
71
|
+
paymentWei,
|
|
72
|
+
BigInt(args.deadline),
|
|
73
|
+
descBytes32,
|
|
74
|
+
], 0n);
|
|
75
|
+
return formatTxResult(result);
|
|
76
|
+
}
|
|
77
|
+
if (action === "propose") {
|
|
78
|
+
if (args.collectiveId === undefined || !args.descriptionHash) {
|
|
79
|
+
return formatStructuredError("Missing required fields.", "propose requires collectiveId and descriptionHash.", "Provide both parameters.", false);
|
|
80
|
+
}
|
|
81
|
+
const descBytes32 = stringToBytes32(args.descriptionHash);
|
|
82
|
+
const result = await executeOrPrepare(CONTRACTS.AgentCollective, ABI, "submitProposal", [BigInt(args.collectiveId), descBytes32], 0n);
|
|
83
|
+
return formatTxResult(result);
|
|
84
|
+
}
|
|
85
|
+
if (action === "get") {
|
|
86
|
+
if (args.collectiveId === undefined) {
|
|
87
|
+
const count = await readContract(CONTRACTS.AgentCollective, ABI, "collectiveCounter", []);
|
|
88
|
+
return formatReadResult({ totalCollectives: Number(count) }, "Collective Count");
|
|
89
|
+
}
|
|
90
|
+
const data = await readContract(CONTRACTS.AgentCollective, ABI, "getCollective", [BigInt(args.collectiveId)]);
|
|
91
|
+
const enriched = {
|
|
92
|
+
...data,
|
|
93
|
+
totalFundEth: formatEther(data.totalFund),
|
|
94
|
+
};
|
|
95
|
+
return formatReadResult(enriched, `Collective #${args.collectiveId}`);
|
|
96
|
+
}
|
|
97
|
+
return formatReadResult({ error: "Unknown action" }, "Error");
|
|
98
|
+
}
|
|
99
|
+
catch (e) {
|
|
100
|
+
const parsed = parseContractError(e);
|
|
101
|
+
return formatStructuredError(parsed.error, parsed.cause, parsed.fix, parsed.retryable);
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=corven-collective.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"corven-collective.js","sourceRoot":"","sources":["../../src/tools/corven-collective.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"corven-fiat.d.ts","sourceRoot":"","sources":["../../src/tools/corven-fiat.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAczE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA8BzD"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* corven_fiat — Fiat on-ramp: buy crypto with card
|
|
3
|
+
*/
|
|
4
|
+
import { z } from "zod";
|
|
5
|
+
import { formatReadResult } from "../handlers/transactions.js";
|
|
6
|
+
const schema = z.object({
|
|
7
|
+
action: z.enum(["url", "providers"]),
|
|
8
|
+
amount: z.string().optional(),
|
|
9
|
+
currency: z.string().optional().default("USD"),
|
|
10
|
+
});
|
|
11
|
+
const PROVIDERS = [
|
|
12
|
+
{ name: "MoonPay", url: "https://moonpay.com", fees: "~4.5%", chains: ["base"] },
|
|
13
|
+
{ name: "Transak", url: "https://transak.com", fees: "~3.5%", chains: ["base"] },
|
|
14
|
+
{ name: "Stripe Onramp", url: "https://stripe.com/crypto", fees: "~1.5%", chains: ["base"] },
|
|
15
|
+
];
|
|
16
|
+
export function registerFiatTools(server) {
|
|
17
|
+
server.registerTool("corven_fiat", {
|
|
18
|
+
title: "Fiat On-Ramp",
|
|
19
|
+
description: "Buy crypto with fiat currency to use on COVENANT.\n\n" +
|
|
20
|
+
"ACTIONS:\n" +
|
|
21
|
+
" url — Get a direct purchase URL for a specific amount\n" +
|
|
22
|
+
" providers — List all supported on-ramp providers\n\n" +
|
|
23
|
+
"USE WHEN: You need ETH or USDC on Base to pay for tasks.\n" +
|
|
24
|
+
"NOTE: COVENANT runs on Base L2. You need Base ETH for gas and task payments.",
|
|
25
|
+
inputSchema: schema.shape,
|
|
26
|
+
}, async (args) => {
|
|
27
|
+
if (args.action === "providers") {
|
|
28
|
+
return formatReadResult(PROVIDERS, "Fiat Providers");
|
|
29
|
+
}
|
|
30
|
+
const amount = args.amount || "10";
|
|
31
|
+
return formatReadResult({
|
|
32
|
+
amount: `${amount} ${args.currency}`,
|
|
33
|
+
providers: PROVIDERS.map(p => ({
|
|
34
|
+
name: p.name,
|
|
35
|
+
url: `${p.url}/buy?currency=eth&network=base&amount=${amount}`,
|
|
36
|
+
fees: p.fees,
|
|
37
|
+
})),
|
|
38
|
+
note: "Click the URL to buy directly. Funds arrive on Base L2 in ~2 minutes.",
|
|
39
|
+
}, "Purchase Options");
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=corven-fiat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"corven-fiat.js","sourceRoot":"","sources":["../../src/tools/corven-fiat.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAG/D,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IACtB,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IACpC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CAC/C,CAAC,CAAC;AAEH,MAAM,SAAS,GAAG;IAChB,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,qBAAqB,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE;IAChF,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,qBAAqB,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE;IAChF,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,2BAA2B,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE;CAC7F,CAAC;AAEF,MAAM,UAAU,iBAAiB,CAAC,MAAiB;IACjD,MAAM,CAAC,YAAY,CACjB,aAAa,EACb;QACE,KAAK,EAAE,cAAc;QACrB,WAAW,EACT,uDAAuD;YACvD,YAAY;YACZ,2DAA2D;YAC3D,wDAAwD;YACxD,4DAA4D;YAC5D,8EAA8E;QAChF,WAAW,EAAE,MAAM,CAAC,KAAK;KAC1B,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YAChC,OAAO,gBAAgB,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;QACvD,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC;QACnC,OAAO,gBAAgB,CAAC;YACtB,MAAM,EAAE,GAAG,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE;YACpC,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC7B,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,yCAAyC,MAAM,EAAE;gBAC9D,IAAI,EAAE,CAAC,CAAC,IAAI;aACb,CAAC,CAAC;YACH,IAAI,EAAE,uEAAuE;SAC9E,EAAE,kBAAkB,CAAC,CAAC;IACzB,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"corven-govern.d.ts","sourceRoot":"","sources":["../../src/tools/corven-govern.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAezE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAiE3D"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { loadAbi, CONTRACTS } from "../config.js";
|
|
3
|
+
import { executeOrPrepare, readContract } from "../handlers/wallet.js";
|
|
4
|
+
import { formatTxResult, formatReadResult } from "../handlers/transactions.js";
|
|
5
|
+
import { formatStructuredError, parseContractError } from "../lib/formatResponse.js";
|
|
6
|
+
const ABI = loadAbi("AgentRegistry");
|
|
7
|
+
const actionSchema = z.enum(["create", "vote", "list", "get"]);
|
|
8
|
+
const schema = z.object({
|
|
9
|
+
action: actionSchema,
|
|
10
|
+
title: z.string().optional(),
|
|
11
|
+
description: z.string().optional(),
|
|
12
|
+
proposalType: z.string().optional(),
|
|
13
|
+
proposalId: z.number().optional(),
|
|
14
|
+
support: z.boolean().optional(),
|
|
15
|
+
});
|
|
16
|
+
export function registerGovernTools(server) {
|
|
17
|
+
server.registerTool("corven_govern", {
|
|
18
|
+
title: "Governance DAO",
|
|
19
|
+
description: "Protocol governance. Create proposals, vote, shape the future.\n\n" +
|
|
20
|
+
"ACTIONS:\n" +
|
|
21
|
+
" create — Create a governance proposal (requires title, description, proposalType)\n" +
|
|
22
|
+
" vote — Vote on a proposal (requires proposalId, support)\n" +
|
|
23
|
+
" list — List governance proposals\n" +
|
|
24
|
+
" get — Get proposal details by ID (requires proposalId)\n\n" +
|
|
25
|
+
"WORKFLOW: create → vote → execute\n" +
|
|
26
|
+
"TYPES: parameter_change, feature_addition, treasury_spend, emergency_action\n" +
|
|
27
|
+
"NOTE: Governance is offchain MVP. Voting weight = agent reputation (0-1000).",
|
|
28
|
+
inputSchema: schema.shape,
|
|
29
|
+
}, async (args) => {
|
|
30
|
+
try {
|
|
31
|
+
const { action } = args;
|
|
32
|
+
if (action === "create") {
|
|
33
|
+
const result = await executeOrPrepare(CONTRACTS.AgentRegistry, ABI, "createProposal", [args.title, args.description, args.proposalType], 0n);
|
|
34
|
+
return formatTxResult(result);
|
|
35
|
+
}
|
|
36
|
+
if (action === "vote") {
|
|
37
|
+
const result = await executeOrPrepare(CONTRACTS.AgentRegistry, ABI, "voteProposal", [BigInt(args.proposalId), args.support], 0n);
|
|
38
|
+
return formatTxResult(result);
|
|
39
|
+
}
|
|
40
|
+
if (action === "list") {
|
|
41
|
+
const count = await readContract(CONTRACTS.AgentRegistry, ABI, "getProposalCount", []);
|
|
42
|
+
return formatReadResult({ totalProposals: Number(count) }, "Governance Proposals");
|
|
43
|
+
}
|
|
44
|
+
if (action === "get") {
|
|
45
|
+
const data = await readContract(CONTRACTS.AgentRegistry, ABI, "getProposal", [BigInt(args.proposalId)]);
|
|
46
|
+
return formatReadResult({
|
|
47
|
+
id: Number(data.id),
|
|
48
|
+
title: data.title,
|
|
49
|
+
description: data.description,
|
|
50
|
+
proposer: data.proposer,
|
|
51
|
+
proposalType: data.proposalType,
|
|
52
|
+
status: ["Active", "Passed", "Rejected", "Executed"][data.status] || "Unknown",
|
|
53
|
+
votesFor: Number(data.votesFor),
|
|
54
|
+
votesAgainst: Number(data.votesAgainst),
|
|
55
|
+
}, `Proposal #${args.proposalId}`);
|
|
56
|
+
}
|
|
57
|
+
return formatReadResult({ error: "Unknown action" }, "Error");
|
|
58
|
+
}
|
|
59
|
+
catch (e) {
|
|
60
|
+
const parsed = parseContractError(e);
|
|
61
|
+
return formatStructuredError(parsed.error, parsed.cause, parsed.fix, parsed.retryable);
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=corven-govern.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"corven-govern.js","sourceRoot":"","sources":["../../src/tools/corven-govern.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,SAAS,EAAc,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/E,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAGrF,MAAM,GAAG,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;AAErC,MAAM,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AAE/D,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IACtB,MAAM,EAAE,YAAY;IACpB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CAChC,CAAC,CAAC;AAEH,MAAM,UAAU,mBAAmB,CAAC,MAAiB;IACnD,MAAM,CAAC,YAAY,CACjB,eAAe,EACf;QACE,KAAK,EAAE,gBAAgB;QACvB,WAAW,EACT,oEAAoE;YACpE,YAAY;YACZ,uFAAuF;YACvF,8DAA8D;YAC9D,sCAAsC;YACtC,8DAA8D;YAC9D,qCAAqC;YACrC,+EAA+E;YAC/E,8EAA8E;QAChF,WAAW,EAAE,MAAM,CAAC,KAAK;KAC1B,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;YAExB,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACxB,MAAM,MAAM,GAAG,MAAM,gBAAgB,CACnC,SAAS,CAAC,aAAa,EAAE,GAAG,EAAE,gBAAgB,EAC9C,CAAC,IAAI,CAAC,KAAM,EAAE,IAAI,CAAC,WAAY,EAAE,IAAI,CAAC,YAAa,CAAC,EACpD,EAAE,CACH,CAAC;gBACF,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC;YAChC,CAAC;YAED,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;gBACtB,MAAM,MAAM,GAAG,MAAM,gBAAgB,CACnC,SAAS,CAAC,aAAa,EAAE,GAAG,EAAE,cAAc,EAC5C,CAAC,MAAM,CAAC,IAAI,CAAC,UAAW,CAAC,EAAE,IAAI,CAAC,OAAQ,CAAC,EACzC,EAAE,CACH,CAAC;gBACF,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC;YAChC,CAAC;YAED,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;gBACtB,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,SAAS,CAAC,aAAa,EAAE,GAAG,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAC;gBACvF,OAAO,gBAAgB,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,sBAAsB,CAAC,CAAC;YACrF,CAAC;YAED,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;gBACrB,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,SAAS,CAAC,aAAa,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,UAAW,CAAC,CAAC,CAAC,CAAC;gBACzG,OAAO,gBAAgB,CAAC;oBACtB,EAAE,EAAE,MAAM,CAAE,IAAY,CAAC,EAAE,CAAC;oBAC5B,KAAK,EAAG,IAAY,CAAC,KAAK;oBAC1B,WAAW,EAAG,IAAY,CAAC,WAAW;oBACtC,QAAQ,EAAG,IAAY,CAAC,QAAQ;oBAChC,YAAY,EAAG,IAAY,CAAC,YAAY;oBACxC,MAAM,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAC,CAAE,IAAY,CAAC,MAAM,CAAC,IAAI,SAAS;oBACvF,QAAQ,EAAE,MAAM,CAAE,IAAY,CAAC,QAAQ,CAAC;oBACxC,YAAY,EAAE,MAAM,CAAE,IAAY,CAAC,YAAY,CAAC;iBACjD,EAAE,aAAa,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;YACrC,CAAC;YAED,OAAO,gBAAgB,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,EAAE,OAAO,CAAC,CAAC;QAChE,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,MAAM,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC;YACrC,OAAO,qBAAqB,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;QACzF,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"corven-grants.d.ts","sourceRoot":"","sources":["../../src/tools/corven-grants.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAgBzE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAiE1D"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { parseEther, formatEther } from "viem";
|
|
3
|
+
import { loadAbi, CONTRACTS } from "../config.js";
|
|
4
|
+
import { executeOrPrepare, readContract } from "../handlers/wallet.js";
|
|
5
|
+
import { formatTxResult, formatReadResult } from "../handlers/transactions.js";
|
|
6
|
+
import { formatStructuredError, parseContractError } from "../lib/formatResponse.js";
|
|
7
|
+
const ABI = loadAbi("GrantProgram");
|
|
8
|
+
const actionSchema = z.enum(["apply", "vote", "list", "get"]);
|
|
9
|
+
const schema = z.object({
|
|
10
|
+
action: actionSchema,
|
|
11
|
+
title: z.string().optional(),
|
|
12
|
+
description: z.string().optional(),
|
|
13
|
+
category: z.string().optional(),
|
|
14
|
+
amount: z.string().optional(),
|
|
15
|
+
grantId: z.number().optional(),
|
|
16
|
+
support: z.boolean().optional(),
|
|
17
|
+
});
|
|
18
|
+
export function registerGrantTools(server) {
|
|
19
|
+
server.registerTool("corven_grants", {
|
|
20
|
+
title: "Grant Program",
|
|
21
|
+
description: "DAO-funded grants for agent development. Apply, vote, fund.\n\n" +
|
|
22
|
+
"ACTIONS:\n" +
|
|
23
|
+
" apply — Submit a grant application (requires title, description, category, amount)\n" +
|
|
24
|
+
" vote — Vote on a grant application (requires grantId, support)\n" +
|
|
25
|
+
" list — List grant applications\n" +
|
|
26
|
+
" get — Get grant details by ID (requires grantId)\n\n" +
|
|
27
|
+
"WORKFLOW: apply → vote → approve → fund\n" +
|
|
28
|
+
"CATEGORIES: ecosystem_growth, research, community, security",
|
|
29
|
+
inputSchema: schema.shape,
|
|
30
|
+
}, async (args) => {
|
|
31
|
+
try {
|
|
32
|
+
const { action } = args;
|
|
33
|
+
if (action === "apply") {
|
|
34
|
+
const result = await executeOrPrepare(CONTRACTS.GrantProgram, ABI, "applyGrant", [args.title, args.description, args.category, parseEther(args.amount || "1")], 0n);
|
|
35
|
+
return formatTxResult(result);
|
|
36
|
+
}
|
|
37
|
+
if (action === "vote") {
|
|
38
|
+
const result = await executeOrPrepare(CONTRACTS.GrantProgram, ABI, "voteGrant", [BigInt(args.grantId), args.support], 0n);
|
|
39
|
+
return formatTxResult(result);
|
|
40
|
+
}
|
|
41
|
+
if (action === "list") {
|
|
42
|
+
const count = await readContract(CONTRACTS.GrantProgram, ABI, "getGrantCount", []);
|
|
43
|
+
return formatReadResult({ totalGrants: Number(count) }, "Grant Applications");
|
|
44
|
+
}
|
|
45
|
+
if (action === "get") {
|
|
46
|
+
const data = await readContract(CONTRACTS.GrantProgram, ABI, "getGrant", [BigInt(args.grantId)]);
|
|
47
|
+
return formatReadResult({
|
|
48
|
+
id: Number(data.id),
|
|
49
|
+
title: data.title,
|
|
50
|
+
description: data.description,
|
|
51
|
+
applicant: data.applicant,
|
|
52
|
+
category: data.category,
|
|
53
|
+
amountRequested: formatEther(data.amountRequested),
|
|
54
|
+
status: ["Pending", "Approved", "Rejected", "Funded"][data.status] || "Unknown",
|
|
55
|
+
votesFor: Number(data.votesFor),
|
|
56
|
+
votesAgainst: Number(data.votesAgainst),
|
|
57
|
+
}, `Grant #${args.grantId}`);
|
|
58
|
+
}
|
|
59
|
+
return formatReadResult({ error: "Unknown action" }, "Error");
|
|
60
|
+
}
|
|
61
|
+
catch (e) {
|
|
62
|
+
const parsed = parseContractError(e);
|
|
63
|
+
return formatStructuredError(parsed.error, parsed.cause, parsed.fix, parsed.retryable);
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=corven-grants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"corven-grants.js","sourceRoot":"","sources":["../../src/tools/corven-grants.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"corven-insurance.d.ts","sourceRoot":"","sources":["../../src/tools/corven-insurance.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAkBzE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAkG9D"}
|