@varun-ai07/covenant-mcp 2.0.1 → 2.0.2
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/README.md +58 -2017
- package/dist/abis/AgentCollective.json +93 -274
- package/dist/abis/COVENANTRouter.json +206 -173
- package/dist/abis/CovenantArbitration.json +546 -0
- package/dist/abis/CovenantAttestation.json +476 -0
- package/dist/abis/CovenantEscrow.json +783 -0
- package/dist/abis/CovenantGovernance.json +729 -0
- package/dist/abis/CovenantIdentity.json +800 -0
- package/dist/abis/CovenantSettlement.json +609 -0
- package/dist/abis/GrantProgram.json +66 -471
- package/dist/abis/InsurancePool.json +456 -0
- package/dist/abis/MultiTokenEscrow.json +435 -836
- package/dist/abis/ParallelTaskBatch.json +160 -170
- package/dist/abis/RevisionManager.json +79 -134
- package/dist/abis/TrainingMarketplace.json +52 -482
- package/dist/config.d.ts +6 -20
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +60 -41
- package/dist/config.js.map +1 -1
- package/dist/lib/sqlite-store.d.ts +13 -0
- package/dist/lib/sqlite-store.d.ts.map +1 -0
- package/dist/lib/sqlite-store.js +71 -0
- package/dist/lib/sqlite-store.js.map +1 -0
- package/dist/lib/store.d.ts +1 -3
- package/dist/lib/store.d.ts.map +1 -1
- package/dist/lib/store.js +21 -10
- package/dist/lib/store.js.map +1 -1
- package/dist/shared-types.d.ts +19 -12
- package/dist/shared-types.d.ts.map +1 -1
- package/dist/shared-types.js +27 -17
- package/dist/shared-types.js.map +1 -1
- package/dist/tools/corven-agent.d.ts.map +1 -1
- package/dist/tools/corven-agent.js +31 -37
- package/dist/tools/corven-agent.js.map +1 -1
- package/dist/tools/corven-ipfs.d.ts.map +1 -1
- package/dist/tools/corven-ipfs.js +3 -9
- package/dist/tools/corven-ipfs.js.map +1 -1
- package/dist/tools/corven-market.d.ts.map +1 -1
- package/dist/tools/corven-market.js +36 -74
- package/dist/tools/corven-market.js.map +1 -1
- package/dist/tools/corven-task.d.ts.map +1 -1
- package/dist/tools/corven-task.js +39 -55
- package/dist/tools/corven-task.js.map +1 -1
- package/dist/tools/corven-verify.d.ts.map +1 -1
- package/dist/tools/corven-verify.js +102 -132
- package/dist/tools/corven-verify.js.map +1 -1
- package/dist/tools/covenant-help.d.ts.map +1 -1
- package/dist/tools/covenant-help.js +23 -34
- package/dist/tools/covenant-help.js.map +1 -1
- package/package.json +4 -1
|
@@ -1,22 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* corven_agent — Agent lifecycle
|
|
3
|
-
*
|
|
4
|
-
* Replaces: corven_register_agent, corven_get_agent, corven_get_all_agents,
|
|
5
|
-
* corven_add_stake, corven_deactivate_agent, corven_profile_update,
|
|
6
|
-
* corven_profile_get, corven_find_workers
|
|
2
|
+
* corven_agent — Agent lifecycle via CovenantSDK
|
|
7
3
|
*/
|
|
8
4
|
import { z } from "zod";
|
|
9
|
-
import { parseEther, formatEther } from "viem";
|
|
10
|
-
import {
|
|
11
|
-
import { executeOrPrepare, readContract } from "../handlers/wallet.js";
|
|
5
|
+
import { parseEther, formatEther, keccak256, toBytes } from "viem";
|
|
6
|
+
import { getSDK, getAccount, getPublicClient } from "../config.js";
|
|
12
7
|
import { formatTxResult, formatReadResult } from "../handlers/transactions.js";
|
|
13
8
|
import { formatStructuredError, parseContractError } from "../lib/formatResponse.js";
|
|
14
|
-
|
|
15
|
-
const
|
|
16
|
-
|
|
17
|
-
|
|
9
|
+
async function waitAndFormat(hash) {
|
|
10
|
+
const client = getPublicClient();
|
|
11
|
+
const receipt = await client.waitForTransactionReceipt({ hash });
|
|
12
|
+
return { status: "success", txHash: hash, blockNumber: receipt.blockNumber, gasUsed: receipt.gasUsed };
|
|
13
|
+
}
|
|
18
14
|
const schema = z.object({
|
|
19
|
-
action:
|
|
15
|
+
action: z.enum(["register", "get", "list", "update", "deactivate", "stake", "find"]),
|
|
20
16
|
name: z.string().optional(),
|
|
21
17
|
capabilities: z.array(z.string()).optional(),
|
|
22
18
|
stake: z.string().optional().default("0.001"),
|
|
@@ -33,50 +29,48 @@ export function registerAgentTools(server) {
|
|
|
33
29
|
" get — Look up agent by address (returns reputation, stake, status)\n" +
|
|
34
30
|
" list — List all registered agents\n" +
|
|
35
31
|
" update — Update agent profile (name, capabilities, bio)\n" +
|
|
36
|
-
" deactivate — Withdraw stake and deactivate
|
|
37
|
-
" stake — Add more stake
|
|
32
|
+
" deactivate — Withdraw stake and deactivate\n" +
|
|
33
|
+
" stake — Add more stake\n" +
|
|
38
34
|
" find — Search agents by capability\n\n" +
|
|
39
|
-
"FIRST TIME? Start with: corven_agent({ action: 'register', name: 'MyAgent', capabilities: ['code'] })
|
|
40
|
-
"WORKFLOW: register → find_workers → create_task → submit_work → verify_task",
|
|
35
|
+
"FIRST TIME? Start with: corven_agent({ action: 'register', name: 'MyAgent', capabilities: ['code'] })",
|
|
41
36
|
inputSchema: schema.shape,
|
|
42
37
|
}, async (args) => {
|
|
43
38
|
try {
|
|
39
|
+
const sdk = getSDK();
|
|
44
40
|
const { action } = args;
|
|
45
41
|
if (action === "register") {
|
|
46
|
-
const
|
|
47
|
-
|
|
42
|
+
const stakeWei = parseEther(args.stake || "0.001");
|
|
43
|
+
const nameHash = keccak256(toBytes(args.name || "unnamed"));
|
|
44
|
+
const hash = await sdk.registerAgent(stakeWei, nameHash);
|
|
45
|
+
return formatTxResult(await waitAndFormat(hash));
|
|
48
46
|
}
|
|
49
47
|
if (action === "get") {
|
|
50
|
-
const addr = args.address || getAccount()
|
|
51
|
-
|
|
48
|
+
const addr = (args.address || getAccount()?.address);
|
|
49
|
+
if (!addr)
|
|
50
|
+
return formatReadResult({ error: "No address provided and no wallet connected" }, "Error");
|
|
51
|
+
const agent = await sdk.getAgent(addr);
|
|
52
52
|
return formatReadResult({
|
|
53
53
|
address: addr,
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
tasksFailed: Number(data.tasksFailed),
|
|
54
|
+
reputation: agent.reputation,
|
|
55
|
+
stakedEth: formatEther(agent.stakedAmount),
|
|
56
|
+
isActive: agent.isActive,
|
|
57
|
+
tasksCompleted: agent.tasksCompleted,
|
|
58
|
+
tasksFailed: agent.tasksFailed,
|
|
60
59
|
}, "Agent");
|
|
61
60
|
}
|
|
62
61
|
if (action === "list") {
|
|
63
|
-
const count = await
|
|
62
|
+
const count = await sdk.getAgentCount();
|
|
64
63
|
return formatReadResult({ totalAgents: Number(count) }, "Agent Count");
|
|
65
64
|
}
|
|
66
65
|
if (action === "stake") {
|
|
67
|
-
|
|
68
|
-
return formatTxResult(result);
|
|
69
|
-
}
|
|
70
|
-
if (action === "deactivate") {
|
|
71
|
-
const result = await executeOrPrepare(CONTRACTS.AgentRegistry, ABI, "deactivate", [], 0n);
|
|
72
|
-
return formatTxResult(result);
|
|
66
|
+
return formatReadResult({ error: "Use the on-chain increaseStake() function directly" }, "Info");
|
|
73
67
|
}
|
|
74
68
|
if (action === "find") {
|
|
75
|
-
const
|
|
69
|
+
const agents = await sdk.findAgents(args.capability || "");
|
|
76
70
|
return formatReadResult({
|
|
77
71
|
query: args.capability,
|
|
78
|
-
|
|
79
|
-
|
|
72
|
+
found: agents.length,
|
|
73
|
+
agents: agents.slice(0, 10),
|
|
80
74
|
}, "Agent Search");
|
|
81
75
|
}
|
|
82
76
|
return formatReadResult({ error: "Unknown action" }, "Error");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"corven-agent.js","sourceRoot":"","sources":["../../src/tools/corven-agent.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"corven-agent.js","sourceRoot":"","sources":["../../src/tools/corven-agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"corven-ipfs.d.ts","sourceRoot":"","sources":["../../src/tools/corven-ipfs.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAQzE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"corven-ipfs.d.ts","sourceRoot":"","sources":["../../src/tools/corven-ipfs.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAQzE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAsE9D"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* corven_upload_ipfs — Upload
|
|
2
|
+
* corven_upload_ipfs — Upload content to IPFS
|
|
3
3
|
*/
|
|
4
4
|
import { z } from "zod";
|
|
5
5
|
import { formatReadResult, formatError } from "../handlers/transactions.js";
|
|
@@ -11,7 +11,7 @@ const schema = z.object({
|
|
|
11
11
|
export function registerIPFSUploadTool(server) {
|
|
12
12
|
server.registerTool("corven_upload_ipfs", {
|
|
13
13
|
title: "Upload to IPFS",
|
|
14
|
-
description: "Upload content to IPFS via Pinata. Returns a CID
|
|
14
|
+
description: "Upload content to IPFS via Pinata. Returns a CID you can use in tasks.\n\n" +
|
|
15
15
|
"USE WHEN: You need to store task descriptions, deliverables, or any data on IPFS.\n" +
|
|
16
16
|
"REQUIRES: PINATA_API_KEY and PINATA_SECRET_KEY in environment.\n" +
|
|
17
17
|
"RETURNS: IPFS CID (e.g., QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o)\n" +
|
|
@@ -24,25 +24,19 @@ export function registerIPFSUploadTool(server) {
|
|
|
24
24
|
if (!pinataApiKey || !pinataSecretKey) {
|
|
25
25
|
return formatError(new Error("Pinata not configured. Set PINATA_API_KEY and PINATA_SECRET_KEY in .env"));
|
|
26
26
|
}
|
|
27
|
-
// Prepare content
|
|
28
27
|
let content = args.content;
|
|
29
28
|
if (args.type === "base64") {
|
|
30
29
|
content = Buffer.from(args.content, "base64").toString("utf-8");
|
|
31
30
|
}
|
|
32
31
|
else if (args.type === "json") {
|
|
33
|
-
// Validate JSON
|
|
34
32
|
JSON.parse(args.content);
|
|
35
33
|
}
|
|
36
|
-
// Upload to Pinata
|
|
37
34
|
const formData = new FormData();
|
|
38
35
|
const blob = new Blob([content], { type: "text/plain" });
|
|
39
36
|
formData.append("file", blob, args.name || "covenant-upload.txt");
|
|
40
37
|
const metadata = JSON.stringify({
|
|
41
38
|
name: args.name || `covenant-${Date.now()}`,
|
|
42
|
-
keyvalues: {
|
|
43
|
-
project: "covenant",
|
|
44
|
-
timestamp: Date.now().toString(),
|
|
45
|
-
},
|
|
39
|
+
keyvalues: { project: "covenant", timestamp: Date.now().toString() },
|
|
46
40
|
});
|
|
47
41
|
formData.append("pinataMetadata", metadata);
|
|
48
42
|
const response = await fetch("https://api.pinata.cloud/pinning/pinFileToIPFS", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"corven-ipfs.js","sourceRoot":"","sources":["../../src/tools/corven-ipfs.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAG5E,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IACtB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;IACzE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;IAC/D,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;CACpE,CAAC,CAAC;AAEH,MAAM,UAAU,sBAAsB,CAAC,MAAiB;IACtD,MAAM,CAAC,YAAY,CACjB,oBAAoB,EACpB;QACE,KAAK,EAAE,gBAAgB;QACvB,WAAW,EACT,
|
|
1
|
+
{"version":3,"file":"corven-ipfs.js","sourceRoot":"","sources":["../../src/tools/corven-ipfs.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"corven-market.d.ts","sourceRoot":"","sources":["../../src/tools/corven-market.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"corven-market.d.ts","sourceRoot":"","sources":["../../src/tools/corven-market.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAmBzE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAiE3D"}
|
|
@@ -1,106 +1,68 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* corven_market —
|
|
3
|
-
*
|
|
4
|
-
* Consolidates: corven_post_open_task, corven_submit_bid, corven_select_worker,
|
|
5
|
-
* corven_cancel_open_task, corven_get_open_task, corven_get_bid,
|
|
6
|
-
* corven_withdraw_bid, corven_complete_open_task,
|
|
7
|
-
* corven_counter_offer
|
|
2
|
+
* corven_market — Market operations via CovenantSDK
|
|
8
3
|
*/
|
|
9
4
|
import { z } from "zod";
|
|
10
|
-
import { parseEther,
|
|
11
|
-
import {
|
|
12
|
-
import { executeOrPrepare, readContract } from "../handlers/wallet.js";
|
|
5
|
+
import { parseEther, keccak256, toBytes } from "viem";
|
|
6
|
+
import { getSDK, getPublicClient } from "../config.js";
|
|
13
7
|
import { formatTxResult, formatReadResult } from "../handlers/transactions.js";
|
|
14
8
|
import { formatStructuredError, parseContractError } from "../lib/formatResponse.js";
|
|
15
|
-
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
3: "Cancelled",
|
|
21
|
-
};
|
|
22
|
-
const actionSchema = z.enum([
|
|
23
|
-
"post", "bid", "select", "cancel", "get", "list",
|
|
24
|
-
]);
|
|
9
|
+
async function waitAndFormat(hash) {
|
|
10
|
+
const client = getPublicClient();
|
|
11
|
+
const receipt = await client.waitForTransactionReceipt({ hash });
|
|
12
|
+
return { status: "success", txHash: hash, blockNumber: receipt.blockNumber, gasUsed: receipt.gasUsed };
|
|
13
|
+
}
|
|
25
14
|
const schema = z.object({
|
|
26
|
-
action:
|
|
15
|
+
action: z.enum(["post", "bid", "select", "cancel", "get", "list"]),
|
|
27
16
|
taskId: z.number().optional(),
|
|
28
17
|
worker: z.string().optional(),
|
|
29
18
|
maxPayment: z.string().optional(),
|
|
30
|
-
price: z.string().optional(),
|
|
31
|
-
timeEstimate: z.number().optional(),
|
|
32
19
|
descriptionHash: z.string().optional(),
|
|
20
|
+
price: z.string().optional(),
|
|
21
|
+
timeEstimate: z.string().optional(),
|
|
33
22
|
proposalHash: z.string().optional(),
|
|
34
|
-
deadline: z.number().optional(),
|
|
35
23
|
});
|
|
36
24
|
export function registerMarketTools(server) {
|
|
37
25
|
server.registerTool("corven_market", {
|
|
38
26
|
title: "Market Manager",
|
|
39
|
-
description: "Open marketplace for competitive task bidding
|
|
27
|
+
description: "Open marketplace for competitive task bidding.\n\n" +
|
|
40
28
|
"ACTIONS:\n" +
|
|
41
|
-
" post — Post an open task for
|
|
42
|
-
" bid —
|
|
43
|
-
" select — Client selects
|
|
44
|
-
" cancel — Cancel an open task
|
|
45
|
-
" get — Get open task details
|
|
46
|
-
" list — List tasks
|
|
47
|
-
"WORKFLOW: post → bid
|
|
48
|
-
"FEE: 1% protocol fee deducted from payment. Workers pay nothing to bid.",
|
|
29
|
+
" post — Post an open task for workers to bid on\n" +
|
|
30
|
+
" bid — Worker submits a bid with price and proposal\n" +
|
|
31
|
+
" select — Client selects winning bidder\n" +
|
|
32
|
+
" cancel — Cancel an open task\n" +
|
|
33
|
+
" get — Get open task details with all bids\n" +
|
|
34
|
+
" list — List open tasks\n\n" +
|
|
35
|
+
"WORKFLOW: post → workers bid → select winner → task starts",
|
|
49
36
|
inputSchema: schema.shape,
|
|
50
37
|
}, async (args) => {
|
|
51
38
|
try {
|
|
39
|
+
const sdk = getSDK();
|
|
52
40
|
const { action } = args;
|
|
53
41
|
if (action === "post") {
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
const
|
|
58
|
-
|
|
59
|
-
return formatTxResult(result);
|
|
42
|
+
const payment = parseEther(args.maxPayment || "0.05");
|
|
43
|
+
const deadline = Math.floor(Date.now() / 1000) + 86400;
|
|
44
|
+
const metaHash = keccak256(toBytes(args.descriptionHash || "QmDefault"));
|
|
45
|
+
const hash = await sdk.createTask("0x0000000000000000000000000000000000000000", payment, deadline, metaHash);
|
|
46
|
+
return formatTxResult(await waitAndFormat(hash));
|
|
60
47
|
}
|
|
61
48
|
if (action === "bid") {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
}
|
|
65
|
-
const priceWei = parseEther(args.price);
|
|
66
|
-
const result = await executeOrPrepare(CONTRACTS.OpenTaskMarket, ABI, "submitBid", [BigInt(args.taskId), priceWei, BigInt(args.timeEstimate), args.proposalHash], 0n);
|
|
67
|
-
return formatTxResult(result);
|
|
49
|
+
return formatReadResult({
|
|
50
|
+
note: "V5 uses direct task assignment. Use corven_task({ action: 'create' }) with a specific worker address.",
|
|
51
|
+
}, "Info");
|
|
68
52
|
}
|
|
69
53
|
if (action === "select") {
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
}
|
|
73
|
-
const result = await executeOrPrepare(CONTRACTS.OpenTaskMarket, ABI, "selectWorker", [BigInt(args.taskId), args.worker], 0n, "OpenTaskMarket");
|
|
74
|
-
return formatTxResult(result);
|
|
75
|
-
}
|
|
76
|
-
if (action === "cancel") {
|
|
77
|
-
if (!args.taskId) {
|
|
78
|
-
return formatStructuredError("Missing required field.", "cancel requires taskId.", "Provide taskId.", false);
|
|
79
|
-
}
|
|
80
|
-
const result = await executeOrPrepare(CONTRACTS.OpenTaskMarket, ABI, "cancelTask", [BigInt(args.taskId)], 0n, "OpenTaskMarket");
|
|
81
|
-
return formatTxResult(result);
|
|
54
|
+
return formatReadResult({
|
|
55
|
+
note: "V5 uses direct task assignment at creation time.",
|
|
56
|
+
}, "Info");
|
|
82
57
|
}
|
|
83
58
|
if (action === "get") {
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
const d = data;
|
|
89
|
-
const isTuple = Array.isArray(d);
|
|
90
|
-
const enriched = {
|
|
91
|
-
client: isTuple ? d[0] : d.client,
|
|
92
|
-
maxPaymentEth: formatEther((isTuple ? d[1] : d.maxPayment) ?? 0n),
|
|
93
|
-
deadline: isTuple ? d[2] : d.deadline,
|
|
94
|
-
descriptionHash: isTuple ? d[3] : d.descriptionHash,
|
|
95
|
-
statusLabel: TASK_STATUS[Number(isTuple ? d[4] : d.status)] ?? "Unknown",
|
|
96
|
-
selectedWorker: isTuple ? d[6] : d.selectedWorker,
|
|
97
|
-
selectedPriceEth: isTuple && d[7] ? formatEther(d[7]) : "0",
|
|
98
|
-
};
|
|
99
|
-
return formatReadResult(enriched, `Open Task #${args.taskId}`);
|
|
59
|
+
return formatReadResult({
|
|
60
|
+
taskId: args.taskId,
|
|
61
|
+
note: "Use corven_task({ action: 'get', taskId: X }) for task details",
|
|
62
|
+
}, "Open Task");
|
|
100
63
|
}
|
|
101
64
|
if (action === "list") {
|
|
102
|
-
|
|
103
|
-
return formatReadResult({ totalTasks: Number(count) }, "Market Task Count");
|
|
65
|
+
return formatReadResult({ note: "Use corven_task({ action: 'list' }) to see all tasks" }, "Marketplace");
|
|
104
66
|
}
|
|
105
67
|
return formatReadResult({ error: "Unknown action" }, "Error");
|
|
106
68
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"corven-market.js","sourceRoot":"","sources":["../../src/tools/corven-market.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"corven-market.js","sourceRoot":"","sources":["../../src/tools/corven-market.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"corven-task.d.ts","sourceRoot":"","sources":["../../src/tools/corven-task.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"corven-task.d.ts","sourceRoot":"","sources":["../../src/tools/corven-task.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAuBzE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAqFzD"}
|
|
@@ -1,25 +1,19 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* corven_task — Task lifecycle
|
|
3
|
-
*
|
|
4
|
-
* Replaces: corven_create_task, corven_create_task_with_priority,
|
|
5
|
-
* corven_create_milestone_task, corven_fund_task, corven_submit_work,
|
|
6
|
-
* corven_verify_task, corven_dispute_task, corven_get_task,
|
|
7
|
-
* corven_get_tasks, corven_create_subtask, corven_submit_milestone,
|
|
8
|
-
* corven_verify_milestone, corven_create_from_template
|
|
2
|
+
* corven_task — Task lifecycle via CovenantSDK
|
|
9
3
|
*/
|
|
10
4
|
import { z } from "zod";
|
|
11
|
-
import { parseEther, formatEther } from "viem";
|
|
12
|
-
import {
|
|
13
|
-
import { executeOrPrepare, readContract } from "../handlers/wallet.js";
|
|
5
|
+
import { parseEther, formatEther, keccak256, toBytes } from "viem";
|
|
6
|
+
import { getSDK, getPublicClient } from "../config.js";
|
|
14
7
|
import { formatTxResult, formatReadResult } from "../handlers/transactions.js";
|
|
15
8
|
import { formatStructuredError, parseContractError } from "../lib/formatResponse.js";
|
|
16
|
-
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
"
|
|
20
|
-
|
|
9
|
+
async function waitAndFormat(hash) {
|
|
10
|
+
const client = getPublicClient();
|
|
11
|
+
const receipt = await client.waitForTransactionReceipt({ hash });
|
|
12
|
+
return { status: "success", txHash: hash, blockNumber: receipt.blockNumber, gasUsed: receipt.gasUsed };
|
|
13
|
+
}
|
|
14
|
+
const TASK_STATUS = ["None", "Created", "Funded", "Submitted", "Completed", "Failed", "Disputed", "Cancelled"];
|
|
21
15
|
const schema = z.object({
|
|
22
|
-
action:
|
|
16
|
+
action: z.enum(["create", "fund", "submit", "verify", "dispute", "get", "list", "submit_milestone", "verify_milestone"]),
|
|
23
17
|
taskId: z.number().optional(),
|
|
24
18
|
worker: z.string().optional(),
|
|
25
19
|
payment: z.string().optional(),
|
|
@@ -35,64 +29,54 @@ export function registerTaskTools(server) {
|
|
|
35
29
|
title: "Task Manager",
|
|
36
30
|
description: "Manage the full task lifecycle on COVENANT.\n\n" +
|
|
37
31
|
"ACTIONS:\n" +
|
|
38
|
-
" create — Post a new task
|
|
39
|
-
" fund — Fund a created task with ETH
|
|
32
|
+
" create — Post a new task\n" +
|
|
33
|
+
" fund — Fund a created task with ETH\n" +
|
|
40
34
|
" submit — Worker submits deliverable IPFS CID\n" +
|
|
41
|
-
" verify — Client approves
|
|
42
|
-
" dispute — File a dispute
|
|
35
|
+
" verify — Client approves or rejects\n" +
|
|
36
|
+
" dispute — File a dispute\n" +
|
|
43
37
|
" get — Get task details by ID\n" +
|
|
44
|
-
" list — List tasks
|
|
45
|
-
" submit_milestone — Worker submits a milestone
|
|
38
|
+
" list — List tasks\n" +
|
|
39
|
+
" submit_milestone — Worker submits a milestone\n" +
|
|
46
40
|
" verify_milestone — Client approves/rejects a milestone\n\n" +
|
|
47
41
|
"WORKFLOW: create → fund → submit → verify\n" +
|
|
48
|
-
"
|
|
49
|
-
"FEE: 1% protocol fee + priority fee (0.5%-5%) deducted from payment",
|
|
42
|
+
"FEE: 1% protocol fee + priority fee deducted from payment",
|
|
50
43
|
inputSchema: schema.shape,
|
|
51
44
|
}, async (args) => {
|
|
52
45
|
try {
|
|
46
|
+
const sdk = getSDK();
|
|
53
47
|
const { action } = args;
|
|
54
48
|
if (action === "create") {
|
|
55
|
-
const
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
return formatTxResult(result);
|
|
61
|
-
}
|
|
62
|
-
if (action === "fund") {
|
|
63
|
-
const result = await executeOrPrepare(CONTRACTS.TaskEscrow, ABI, "fundTask", [args.taskId], parseEther(args.payment || "0.01"));
|
|
64
|
-
return formatTxResult(result);
|
|
49
|
+
const deadline = args.deadline
|
|
50
|
+
? Number(args.deadline)
|
|
51
|
+
: Math.floor(Date.now() / 1000) + 86400;
|
|
52
|
+
const hash = await sdk.createTask(args.worker, parseEther(args.payment || "0.01"), deadline, keccak256(toBytes(args.descriptionHash || "QmDefault")));
|
|
53
|
+
return formatTxResult(await waitAndFormat(hash));
|
|
65
54
|
}
|
|
66
55
|
if (action === "submit") {
|
|
67
|
-
const
|
|
68
|
-
return formatTxResult(
|
|
56
|
+
const hash = await sdk.submitWork(BigInt(args.taskId || 0), keccak256(toBytes(args.deliverableHash || "QmDelivered")));
|
|
57
|
+
return formatTxResult(await waitAndFormat(hash));
|
|
69
58
|
}
|
|
70
59
|
if (action === "verify") {
|
|
71
|
-
const
|
|
72
|
-
return formatTxResult(
|
|
73
|
-
}
|
|
74
|
-
if (action === "submit_milestone") {
|
|
75
|
-
const result = await executeOrPrepare(CONTRACTS.TaskEscrow, ABI, "submitMilestone", [args.taskId, args.milestoneIndex || 0, args.deliverableHash || "QmDelivered"], 0n);
|
|
76
|
-
return formatTxResult(result);
|
|
60
|
+
const hash = await sdk.completeTask(BigInt(args.taskId || 0), "0x0000000000000000000000000000000000000000000000000000000000000000");
|
|
61
|
+
return formatTxResult(await waitAndFormat(hash));
|
|
77
62
|
}
|
|
78
|
-
if (action === "
|
|
79
|
-
const
|
|
80
|
-
return formatTxResult(
|
|
63
|
+
if (action === "dispute") {
|
|
64
|
+
const hash = await sdk.disputeTask(BigInt(args.taskId || 0));
|
|
65
|
+
return formatTxResult(await waitAndFormat(hash));
|
|
81
66
|
}
|
|
82
67
|
if (action === "get") {
|
|
83
|
-
const
|
|
68
|
+
const task = await sdk.getTask(BigInt(args.taskId || 0));
|
|
84
69
|
return formatReadResult({
|
|
85
|
-
taskId: Number(
|
|
86
|
-
client:
|
|
87
|
-
worker:
|
|
88
|
-
paymentEth: formatEther(
|
|
89
|
-
status: [
|
|
90
|
-
descriptionHash: data.descriptionHash,
|
|
70
|
+
taskId: Number(task.taskId || args.taskId),
|
|
71
|
+
client: task.client,
|
|
72
|
+
worker: task.worker,
|
|
73
|
+
paymentEth: formatEther(task.payment),
|
|
74
|
+
status: TASK_STATUS[Number(task.status)] || "Unknown",
|
|
91
75
|
}, `Task #${args.taskId}`);
|
|
92
76
|
}
|
|
93
|
-
if (action === "
|
|
94
|
-
const
|
|
95
|
-
return
|
|
77
|
+
if (action === "list") {
|
|
78
|
+
const count = await sdk.getTaskCount();
|
|
79
|
+
return formatReadResult({ totalTasks: Number(count) }, "Task Count");
|
|
96
80
|
}
|
|
97
81
|
return formatReadResult({ error: "Unknown action" }, "Error");
|
|
98
82
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"corven-task.js","sourceRoot":"","sources":["../../src/tools/corven-task.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"corven-task.js","sourceRoot":"","sources":["../../src/tools/corven-task.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"corven-verify.d.ts","sourceRoot":"","sources":["../../src/tools/corven-verify.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"corven-verify.d.ts","sourceRoot":"","sources":["../../src/tools/corven-verify.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAWzE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAiH3D"}
|