@varun-ai07/covenant-mcp 2.5.2 → 3.0.1
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 +24 -40
- package/dist/lib/verify.d.ts +12 -0
- package/dist/lib/verify.d.ts.map +1 -1
- package/dist/lib/verify.js +115 -13
- package/dist/lib/verify.js.map +1 -1
- package/dist/sdk.d.ts +1 -0
- package/dist/sdk.d.ts.map +1 -1
- package/dist/sdk.js +9 -0
- package/dist/sdk.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +7 -2
- package/dist/server.js.map +1 -1
- package/dist/tools/corven-agent.d.ts.map +1 -1
- package/dist/tools/corven-agent.js +82 -10
- package/dist/tools/corven-agent.js.map +1 -1
- package/dist/tools/corven-batch.d.ts.map +1 -1
- package/dist/tools/corven-batch.js +82 -2
- package/dist/tools/corven-batch.js.map +1 -1
- package/dist/tools/corven-encrypt.d.ts +3 -0
- package/dist/tools/corven-encrypt.d.ts.map +1 -0
- package/dist/tools/corven-encrypt.js +107 -0
- package/dist/tools/corven-encrypt.js.map +1 -0
- package/dist/tools/corven-govern.d.ts.map +1 -1
- package/dist/tools/corven-govern.js +10 -0
- package/dist/tools/corven-govern.js.map +1 -1
- package/dist/tools/corven-grants.d.ts.map +1 -1
- package/dist/tools/corven-grants.js +10 -0
- package/dist/tools/corven-grants.js.map +1 -1
- package/dist/tools/corven-ipfs.d.ts.map +1 -1
- package/dist/tools/corven-ipfs.js +85 -12
- 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 +8 -1
- package/dist/tools/corven-market.js.map +1 -1
- package/dist/tools/corven-message.d.ts +1 -0
- package/dist/tools/corven-message.d.ts.map +1 -1
- package/dist/tools/corven-message.js +100 -12
- package/dist/tools/corven-message.js.map +1 -1
- package/dist/tools/corven-reputation.d.ts.map +1 -1
- package/dist/tools/corven-reputation.js +82 -5
- package/dist/tools/corven-reputation.js.map +1 -1
- package/dist/tools/corven-stats.d.ts.map +1 -1
- package/dist/tools/corven-stats.js +72 -10
- package/dist/tools/corven-stats.js.map +1 -1
- package/dist/tools/corven-task.d.ts.map +1 -1
- package/dist/tools/corven-task.js +196 -9
- package/dist/tools/corven-task.js.map +1 -1
- package/dist/tools/corven-version.d.ts +3 -0
- package/dist/tools/corven-version.d.ts.map +1 -0
- package/dist/tools/corven-version.js +129 -0
- package/dist/tools/corven-version.js.map +1 -0
- package/dist/tools/disputes.d.ts.map +1 -1
- package/dist/tools/disputes.js +82 -0
- package/dist/tools/disputes.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,22 +1,75 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* corven_ipfs — Upload and read content on IPFS via Pinata
|
|
3
3
|
*/
|
|
4
4
|
import { z } from "zod";
|
|
5
5
|
import { formatReadResult, formatError } from "../handlers/transactions.js";
|
|
6
|
+
const IPFS_GATEWAYS = [
|
|
7
|
+
"https://gateway.pinata.cloud/ipfs",
|
|
8
|
+
"https://ipfs.io/ipfs",
|
|
9
|
+
"https://cloudflare-ipfs.com/ipfs",
|
|
10
|
+
];
|
|
11
|
+
function isCid(s) {
|
|
12
|
+
return /^Qm[1-9A-HJ-NP-Za-km-z]{44,}/.test(s) ||
|
|
13
|
+
/^(bafy[a-zA-Z2-7]{52,})/.test(s) ||
|
|
14
|
+
/^(b[ae][a-zA-Z2-7]{50,})/.test(s);
|
|
15
|
+
}
|
|
16
|
+
function isUrl(s) {
|
|
17
|
+
return /^https?:\/\//.test(s);
|
|
18
|
+
}
|
|
19
|
+
function extractCid(input) {
|
|
20
|
+
const httpMatch = input.match(/\/ipfs\/([a-zA-Z0-9]+)/);
|
|
21
|
+
if (httpMatch)
|
|
22
|
+
return httpMatch[1];
|
|
23
|
+
if (isCid(input))
|
|
24
|
+
return input;
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
async function fetchFromIpfs(cid, timeoutMs = 10000) {
|
|
28
|
+
let lastError = null;
|
|
29
|
+
for (const gw of IPFS_GATEWAYS) {
|
|
30
|
+
const url = `${gw}/${cid}`;
|
|
31
|
+
try {
|
|
32
|
+
const controller = new AbortController();
|
|
33
|
+
const timer = setTimeout(() => controller.abort(), timeoutMs);
|
|
34
|
+
const resp = await fetch(url, { signal: controller.signal });
|
|
35
|
+
clearTimeout(timer);
|
|
36
|
+
if (!resp.ok) {
|
|
37
|
+
lastError = new Error(`HTTP ${resp.status} from ${gw}`);
|
|
38
|
+
continue;
|
|
39
|
+
}
|
|
40
|
+
const contentType = resp.headers.get("content-type") || "application/octet-stream";
|
|
41
|
+
if (contentType.includes("json") || contentType.includes("text")) {
|
|
42
|
+
const text = await resp.text();
|
|
43
|
+
return { content: text, size: text.length, contentType, resolvedFrom: url };
|
|
44
|
+
}
|
|
45
|
+
const buf = Buffer.from(await resp.arrayBuffer());
|
|
46
|
+
return { content: buf.toString("base64"), size: buf.length, contentType, resolvedFrom: url };
|
|
47
|
+
}
|
|
48
|
+
catch (e) {
|
|
49
|
+
lastError = e instanceof Error ? e : new Error(String(e));
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
throw lastError || new Error("All IPFS gateways failed");
|
|
53
|
+
}
|
|
6
54
|
const schema = z.object({
|
|
7
|
-
|
|
55
|
+
action: z.enum(["upload", "read"]).default("upload").describe("upload: store content on IPFS. read: fetch content from IPFS by CID or gateway URL."),
|
|
56
|
+
content: z.string().optional().describe("Content to upload (text, JSON, or base64). Required for upload action."),
|
|
57
|
+
cid: z.string().optional().describe("IPFS CID or gateway URL to fetch. Required for read action."),
|
|
8
58
|
name: z.string().optional().describe("Filename for the upload"),
|
|
9
59
|
type: z.enum(["text", "json", "base64"]).optional().default("text"),
|
|
10
60
|
});
|
|
11
61
|
export function registerIPFSUploadTool(server) {
|
|
12
|
-
server.registerTool("
|
|
13
|
-
title: "Upload
|
|
14
|
-
description: "Upload content to IPFS
|
|
15
|
-
"
|
|
16
|
-
"
|
|
17
|
-
"
|
|
62
|
+
server.registerTool("corven_ipfs", {
|
|
63
|
+
title: "IPFS Upload & Read",
|
|
64
|
+
description: "Upload content to IPFS or read/download content from IPFS on COVENANT.\n\n" +
|
|
65
|
+
"ACTIONS:\n" +
|
|
66
|
+
" upload — Store content on IPFS via Pinata, returns a CID\n" +
|
|
67
|
+
" read — Fetch content from IPFS by CID or gateway URL\n\n" +
|
|
68
|
+
"USE WHEN: You need to store task descriptions/deliverables on IPFS (upload) or retrieve stored IPFS content (read).\n" +
|
|
69
|
+
"REQUIRES: PINATA_API_KEY and PINATA_SECRET_KEY for upload. Read works without keys.\n" +
|
|
70
|
+
"RETURNS: IPFS CID + gateway URL (upload) or content + metadata (read)\n" +
|
|
18
71
|
"WORKFLOW: Upload description → create task with CID → worker uploads deliverable → verify\n\n" +
|
|
19
|
-
"WHEN TO USE: Before creating a task
|
|
72
|
+
"WHEN TO USE: Before creating a task (upload), or when resolving a task's descriptionHash/deliverableHash (read).\n\n" +
|
|
20
73
|
"NEXT STEP: Create a task with corven_task({ action: 'create', descriptionHash: '<CID>' })\n\n" +
|
|
21
74
|
"OUTPUT RULES:\n" +
|
|
22
75
|
"- Present results as clean, readable text. Never show raw JSON.\n" +
|
|
@@ -26,17 +79,37 @@ export function registerIPFSUploadTool(server) {
|
|
|
26
79
|
inputSchema: schema.shape,
|
|
27
80
|
}, async (args) => {
|
|
28
81
|
try {
|
|
82
|
+
if (args.action === "read") {
|
|
83
|
+
const input = args.cid || "";
|
|
84
|
+
if (!input)
|
|
85
|
+
return formatError(new Error("cid is required for read action"));
|
|
86
|
+
const cid = extractCid(input);
|
|
87
|
+
if (!cid)
|
|
88
|
+
return formatError(new Error(`Could not extract CID from: ${input}`));
|
|
89
|
+
const result = await fetchFromIpfs(cid);
|
|
90
|
+
const isBase64 = !result.contentType.includes("text") && !result.contentType.includes("json");
|
|
91
|
+
return formatReadResult({
|
|
92
|
+
cid,
|
|
93
|
+
size: result.size,
|
|
94
|
+
contentType: result.contentType,
|
|
95
|
+
encoding: isBase64 ? "base64" : "utf-8",
|
|
96
|
+
content: isBase64 ? result.content.substring(0, 2000) + (result.size > 2000 ? "..." : "") : result.content,
|
|
97
|
+
gateway: result.resolvedFrom,
|
|
98
|
+
truncated: result.size > 2000,
|
|
99
|
+
}, `IPFS Read: ${cid}`);
|
|
100
|
+
}
|
|
101
|
+
// upload action
|
|
29
102
|
const pinataApiKey = process.env.PINATA_API_KEY;
|
|
30
103
|
const pinataSecretKey = process.env.PINATA_SECRET_KEY;
|
|
31
104
|
if (!pinataApiKey || !pinataSecretKey) {
|
|
32
105
|
return formatError(new Error("Pinata not configured. Set PINATA_API_KEY and PINATA_SECRET_KEY in .env"));
|
|
33
106
|
}
|
|
34
|
-
let content = args.content;
|
|
107
|
+
let content = args.content || "";
|
|
35
108
|
if (args.type === "base64") {
|
|
36
|
-
content = Buffer.from(
|
|
109
|
+
content = Buffer.from(content, "base64").toString("utf-8");
|
|
37
110
|
}
|
|
38
111
|
else if (args.type === "json") {
|
|
39
|
-
JSON.parse(
|
|
112
|
+
JSON.parse(content);
|
|
40
113
|
}
|
|
41
114
|
const formData = new FormData();
|
|
42
115
|
const blob = new Blob([content], { type: "text/plain" });
|
|
@@ -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,
|
|
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":"AASA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAoBzE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,
|
|
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;AAoBzE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAqF3D"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* corven_market — Market operations via CovenantSDK
|
|
3
3
|
*/
|
|
4
4
|
import { z } from "zod";
|
|
5
|
-
import { parseEther, formatEther, keccak256, toBytes } from "viem";
|
|
5
|
+
import { parseEther, formatEther, isAddress, keccak256, toBytes } from "viem";
|
|
6
6
|
import { getSDK, getPublicClient } from "../config.js";
|
|
7
7
|
import { formatTxResult, formatReadResult } from "../handlers/transactions.js";
|
|
8
8
|
import { formatStructuredError, parseContractError } from "../lib/formatResponse.js";
|
|
@@ -48,6 +48,13 @@ export function registerMarketTools(server) {
|
|
|
48
48
|
const sdk = getSDK();
|
|
49
49
|
const { action } = args;
|
|
50
50
|
if (action === "post") {
|
|
51
|
+
if (args.worker && !isAddress(args.worker)) {
|
|
52
|
+
return formatReadResult({ error: "Invalid worker address: must be a valid Ethereum address" }, "Error");
|
|
53
|
+
}
|
|
54
|
+
const maxPayNum = Number(args.maxPayment || "0.05");
|
|
55
|
+
if (maxPayNum <= 0 || maxPayNum > 100) {
|
|
56
|
+
return formatReadResult({ error: "Invalid maxPayment: must be > 0 and <= 100 ETH" }, "Error");
|
|
57
|
+
}
|
|
51
58
|
const payment = parseEther(args.maxPayment || "0.05");
|
|
52
59
|
if (!args.confirm) {
|
|
53
60
|
return formatReadResult({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"corven-market.js","sourceRoot":"","sources":["../../src/tools/corven-market.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,WAAW,EAAgB,SAAS,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"corven-market.js","sourceRoot":"","sources":["../../src/tools/corven-market.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAgB,SAAS,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC5F,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/E,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAIrF,KAAK,UAAU,aAAa,CAAC,IAAmB;IAC9C,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;IACjC,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IACjE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;AACzG,CAAC;AAED,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IACtB,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAClE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACtC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,wJAAwJ,CAAC;CAClN,CAAC,CAAC;AAEH,MAAM,UAAU,mBAAmB,CAAC,MAAiB;IACnD,MAAM,CAAC,YAAY,CACjB,eAAe,EACf;QACE,KAAK,EAAE,gBAAgB;QACvB,WAAW,EACT,gEAAgE;YAChE,YAAY;YACZ,kFAAkF;YAClF,wDAAwD;YACxD,4CAA4C;YAC5C,kCAAkC;YAClC,+CAA+C;YAC/C,8BAA8B;YAC9B,gEAAgE;YAChE,yEAAyE;YACzE,6FAA6F;YAC7F,qMAAqM;YACrM,iBAAiB;YACjB,mEAAmE;YACnE,gFAAgF;YAChF,kDAAkD;YAClD,2DAA2D;QAC7D,WAAW,EAAE,MAAM,CAAC,KAAK;KAC1B,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;YACrB,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;YAExB,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;gBACtB,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC3C,OAAO,gBAAgB,CAAC,EAAE,KAAK,EAAE,0DAA0D,EAAE,EAAE,OAAO,CAAC,CAAC;gBAC1G,CAAC;gBACD,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,IAAI,MAAM,CAAC,CAAC;gBACpD,IAAI,SAAS,IAAI,CAAC,IAAI,SAAS,GAAG,GAAG,EAAE,CAAC;oBACtC,OAAO,gBAAgB,CAAC,EAAE,KAAK,EAAE,gDAAgD,EAAE,EAAE,OAAO,CAAC,CAAC;gBAChG,CAAC;gBACD,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,UAAU,IAAI,MAAM,CAAC,CAAC;gBACtD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;oBAClB,OAAO,gBAAgB,CAAC;wBACtB,oBAAoB,EAAE,IAAI;wBAC1B,MAAM,EAAE,+BAA+B;wBACvC,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,MAAM;wBACnC,MAAM,EAAE,qDAAqD;wBAC7D,SAAS,EAAE,6CAA6C;qBACzD,EAAE,uBAAuB,CAAC,CAAC;gBAC9B,CAAC;gBACD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC;gBACvD,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,IAAI,WAAW,CAAC,CAAC,CAAC;gBACzE,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,UAAU,CAC/B,4CAAuD,EACvD,OAAO,EACP,QAAQ,EACR,QAAQ,CACT,CAAC;gBACF,OAAO,cAAc,CAAC,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;YACnD,CAAC;YAED,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;gBACrB,OAAO,gBAAgB,CAAC,EAAE,IAAI,EAAE,gFAAgF,EAAE,EAAE,MAAM,CAAC,CAAC;YAC9H,CAAC;YAED,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACxB,OAAO,gBAAgB,CAAC,EAAE,IAAI,EAAE,kDAAkD,EAAE,EAAE,MAAM,CAAC,CAAC;YAChG,CAAC;YAED,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;gBACrB,OAAO,gBAAgB,CAAC;oBACtB,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,IAAI,EAAE,gEAAgE;iBACvE,EAAE,WAAW,CAAC,CAAC;YAClB,CAAC;YAED,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;gBACtB,OAAO,gBAAgB,CAAC,EAAE,IAAI,EAAE,sDAAsD,EAAE,EAAE,aAAa,CAAC,CAAC;YAC3G,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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
export declare function notifyAgent(address: string, type: string, message: string, taskId: number): void;
|
|
2
3
|
export declare function registerMessageTools(server: McpServer): void;
|
|
3
4
|
//# sourceMappingURL=corven-message.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"corven-message.d.ts","sourceRoot":"","sources":["../../src/tools/corven-message.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"corven-message.d.ts","sourceRoot":"","sources":["../../src/tools/corven-message.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAiBzE,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAchG;AA8CD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAoI5D"}
|
|
@@ -2,26 +2,67 @@ import { z } from "zod";
|
|
|
2
2
|
import { getAccount } from "../config.js";
|
|
3
3
|
import { formatReadResult } from "../handlers/transactions.js";
|
|
4
4
|
import { formatStructuredError, parseContractError } from "../lib/formatResponse.js";
|
|
5
|
-
|
|
5
|
+
import { loadStore, saveStore } from "../lib/store.js";
|
|
6
|
+
let notifCounter = loadStore("notifCounter", 0);
|
|
7
|
+
export function notifyAgent(address, type, message, taskId) {
|
|
8
|
+
const store = loadStore("notifications", {});
|
|
9
|
+
const addr = address.toLowerCase();
|
|
10
|
+
if (!store[addr])
|
|
11
|
+
store[addr] = [];
|
|
12
|
+
store[addr].push({
|
|
13
|
+
id: `notif_${++notifCounter}_${Date.now()}`,
|
|
14
|
+
type,
|
|
15
|
+
message,
|
|
16
|
+
taskId,
|
|
17
|
+
timestamp: Math.floor(Date.now() / 1000),
|
|
18
|
+
read: false,
|
|
19
|
+
});
|
|
20
|
+
saveStore("notifications", store);
|
|
21
|
+
saveStore("notifCounter", notifCounter);
|
|
22
|
+
}
|
|
23
|
+
function getNotifications(address) {
|
|
24
|
+
const store = loadStore("notifications", {});
|
|
25
|
+
return store[address.toLowerCase()] || [];
|
|
26
|
+
}
|
|
27
|
+
function markNotificationRead(address, notifId) {
|
|
28
|
+
const store = loadStore("notifications", {});
|
|
29
|
+
const notifs = store[address.toLowerCase()];
|
|
30
|
+
if (!notifs)
|
|
31
|
+
return false;
|
|
32
|
+
const notif = notifs.find(n => n.id === notifId);
|
|
33
|
+
if (!notif)
|
|
34
|
+
return false;
|
|
35
|
+
notif.read = true;
|
|
36
|
+
saveStore("notifications", store);
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
39
|
+
const actionSchema = z.enum(["send", "list", "unread", "mark_read", "count", "notifications", "mark_notif_read"]);
|
|
6
40
|
const schema = z.object({
|
|
7
41
|
action: actionSchema,
|
|
8
42
|
to: z.string().optional(),
|
|
9
43
|
content: z.string().optional(),
|
|
10
44
|
taskId: z.number().optional(),
|
|
11
45
|
limit: z.number().optional(),
|
|
46
|
+
offset: z.number().optional(),
|
|
47
|
+
messageId: z.string().optional(),
|
|
48
|
+
notifId: z.string().optional(),
|
|
49
|
+
type: z.string().optional(),
|
|
12
50
|
});
|
|
13
|
-
|
|
14
|
-
let messageCounter = 0;
|
|
51
|
+
let messages = loadStore('messages', []);
|
|
52
|
+
let messageCounter = loadStore('messageCounter', 0);
|
|
15
53
|
export function registerMessageTools(server) {
|
|
16
54
|
server.registerTool("corven_message", {
|
|
17
|
-
title: "Agent Messaging",
|
|
18
|
-
description: "Agent-to-agent messaging on COVENANT — send messages and
|
|
55
|
+
title: "Agent Messaging & Notifications",
|
|
56
|
+
description: "Agent-to-agent messaging and notifications on COVENANT — send messages, check inbox, and manage notifications.\n\n" +
|
|
19
57
|
"ACTIONS:\n" +
|
|
20
58
|
" send — Send a message (requires to, content, taskId)\n" +
|
|
21
|
-
" list — List messages for a task (requires taskId)\n" +
|
|
22
|
-
" unread — Get unread message count\n
|
|
23
|
-
"
|
|
24
|
-
"
|
|
59
|
+
" list — List messages for a task (requires taskId, supports offset/limit)\n" +
|
|
60
|
+
" unread — Get unread message count\n" +
|
|
61
|
+
" mark_read — Mark a message as read (requires messageId)\n" +
|
|
62
|
+
" count — Get total and unread message counts\n" +
|
|
63
|
+
" notifications — List notifications for current agent\n" +
|
|
64
|
+
" mark_notif_read — Mark a notification as read (requires notifId)\n\n" +
|
|
65
|
+
"WORKFLOW: send → list → read → respond\n\n" +
|
|
25
66
|
"WHEN TO USE: When agents need to coordinate, negotiate, or share information about tasks.\n\n" +
|
|
26
67
|
"NEXT STEP: Check unread messages with corven_message({ action: 'unread' })\n\n" +
|
|
27
68
|
"OUTPUT RULES:\n" +
|
|
@@ -49,6 +90,8 @@ export function registerMessageTools(server) {
|
|
|
49
90
|
read: false,
|
|
50
91
|
};
|
|
51
92
|
messages.push(msg);
|
|
93
|
+
saveStore('messages', messages);
|
|
94
|
+
saveStore('messageCounter', messageCounter);
|
|
52
95
|
return formatReadResult({
|
|
53
96
|
messageId: msg.id,
|
|
54
97
|
taskId: msg.taskId,
|
|
@@ -59,11 +102,17 @@ export function registerMessageTools(server) {
|
|
|
59
102
|
}, "Message Sent");
|
|
60
103
|
}
|
|
61
104
|
if (action === "list") {
|
|
62
|
-
const taskMessages = messages.filter(m => m.taskId === args.taskId)
|
|
105
|
+
const taskMessages = messages.filter(m => m.taskId === args.taskId);
|
|
106
|
+
const offset = args.offset || 0;
|
|
107
|
+
const limit = args.limit || 50;
|
|
108
|
+
const paginated = taskMessages.slice(offset, offset + limit);
|
|
63
109
|
return formatReadResult({
|
|
64
110
|
taskId: args.taskId,
|
|
65
|
-
|
|
66
|
-
|
|
111
|
+
total: taskMessages.length,
|
|
112
|
+
offset,
|
|
113
|
+
limit,
|
|
114
|
+
messageCount: paginated.length,
|
|
115
|
+
messages: paginated.map(m => ({
|
|
67
116
|
id: m.id,
|
|
68
117
|
from: m.from,
|
|
69
118
|
to: m.to,
|
|
@@ -78,6 +127,45 @@ export function registerMessageTools(server) {
|
|
|
78
127
|
const unreadCount = messages.filter(m => m.to === viewer && !m.read).length;
|
|
79
128
|
return formatReadResult({ unreadCount }, "Unread Messages");
|
|
80
129
|
}
|
|
130
|
+
if (action === "mark_read") {
|
|
131
|
+
const msgId = args.messageId;
|
|
132
|
+
if (!msgId)
|
|
133
|
+
return formatReadResult({ error: "messageId is required" }, "Error");
|
|
134
|
+
const msg = messages.find(m => m.id === msgId);
|
|
135
|
+
if (!msg)
|
|
136
|
+
return formatReadResult({ error: `Message ${msgId} not found` }, "Error");
|
|
137
|
+
if (msg.to !== sender.toLowerCase()) {
|
|
138
|
+
return formatReadResult({ error: "You can only mark your own messages as read" }, "Error");
|
|
139
|
+
}
|
|
140
|
+
msg.read = true;
|
|
141
|
+
saveStore('messages', messages);
|
|
142
|
+
return formatReadResult({ messageId: msgId, read: true }, "Message Marked Read");
|
|
143
|
+
}
|
|
144
|
+
if (action === "count") {
|
|
145
|
+
const viewer = sender.toLowerCase();
|
|
146
|
+
const total = messages.length;
|
|
147
|
+
const unread = messages.filter(m => m.to === viewer && !m.read).length;
|
|
148
|
+
return formatReadResult({ total, unread }, "Message Counts");
|
|
149
|
+
}
|
|
150
|
+
if (action === "notifications") {
|
|
151
|
+
const notifs = getNotifications(sender);
|
|
152
|
+
const unreadCount = notifs.filter(n => !n.read).length;
|
|
153
|
+
return formatReadResult({
|
|
154
|
+
address: sender,
|
|
155
|
+
total: notifs.length,
|
|
156
|
+
unread: unreadCount,
|
|
157
|
+
notifications: notifs,
|
|
158
|
+
}, "Notifications");
|
|
159
|
+
}
|
|
160
|
+
if (action === "mark_notif_read") {
|
|
161
|
+
const notifId = args.notifId;
|
|
162
|
+
if (!notifId)
|
|
163
|
+
return formatReadResult({ error: "notifId is required" }, "Error");
|
|
164
|
+
const success = markNotificationRead(sender, notifId);
|
|
165
|
+
if (!success)
|
|
166
|
+
return formatReadResult({ error: `Notification ${notifId} not found` }, "Error");
|
|
167
|
+
return formatReadResult({ notifId, read: true }, "Notification Marked Read");
|
|
168
|
+
}
|
|
81
169
|
return formatReadResult({ error: "Unknown action" }, "Error");
|
|
82
170
|
}
|
|
83
171
|
catch (e) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"corven-message.js","sourceRoot":"","sources":["../../src/tools/corven-message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"corven-message.js","sourceRoot":"","sources":["../../src/tools/corven-message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AACrF,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAgBvD,IAAI,YAAY,GAAG,SAAS,CAAS,cAAc,EAAE,CAAC,CAAC,CAAC;AAExD,MAAM,UAAU,WAAW,CAAC,OAAe,EAAE,IAAY,EAAE,OAAe,EAAE,MAAc;IACxF,MAAM,KAAK,GAAG,SAAS,CAAoB,eAAe,EAAE,EAAE,CAAC,CAAC;IAChE,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IACnC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;IACnC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;QACf,EAAE,EAAE,SAAS,EAAE,YAAY,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE;QAC3C,IAAI;QACJ,OAAO;QACP,MAAM;QACN,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;QACxC,IAAI,EAAE,KAAK;KACZ,CAAC,CAAC;IACH,SAAS,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;IAClC,SAAS,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;AAC1C,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAe;IACvC,MAAM,KAAK,GAAG,SAAS,CAAoB,eAAe,EAAE,EAAE,CAAC,CAAC;IAChE,OAAO,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;AAC5C,CAAC;AAED,SAAS,oBAAoB,CAAC,OAAe,EAAE,OAAe;IAC5D,MAAM,KAAK,GAAG,SAAS,CAAoB,eAAe,EAAE,EAAE,CAAC,CAAC;IAChE,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAC5C,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC1B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;IACjD,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACzB,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;IAClB,SAAS,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;IAClC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,eAAe,EAAE,iBAAiB,CAAC,CAAC,CAAC;AAElH,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IACtB,MAAM,EAAE,YAAY;IACpB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACzB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC5B,CAAC,CAAC;AAaH,IAAI,QAAQ,GAAG,SAAS,CAAY,UAAU,EAAE,EAAE,CAAC,CAAC;AACpD,IAAI,cAAc,GAAG,SAAS,CAAS,gBAAgB,EAAE,CAAC,CAAC,CAAC;AAE5D,MAAM,UAAU,oBAAoB,CAAC,MAAiB;IACpD,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB;QACE,KAAK,EAAE,iCAAiC;QACxC,WAAW,EACT,oHAAoH;YACpH,YAAY;YACZ,0DAA0D;YAC1D,8EAA8E;YAC9E,uCAAuC;YACvC,6DAA6D;YAC7D,iDAAiD;YACjD,0DAA0D;YAC1D,wEAAwE;YACxE,4CAA4C;YAC5C,+FAA+F;YAC/F,gFAAgF;YAChF,iBAAiB;YACjB,mEAAmE;YACnE,gFAAgF;YAChF,kDAAkD;YAClD,2DAA2D;QAC7D,WAAW,EAAE,MAAM,CAAC,KAAK;KAC1B,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;YACxB,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;YAC7B,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,qBAAqB,CAAC,4BAA4B,EAAE,wBAAwB,EAAE,8CAA8C,EAAE,KAAK,CAAC,CAAC;YAC9I,CAAC;YACD,MAAM,MAAM,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;YAEvE,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;gBACtB,MAAM,GAAG,GAAY;oBACnB,EAAE,EAAE,OAAO,EAAE,cAAc,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE;oBAC3C,IAAI,EAAE,MAAM,CAAC,WAAW,EAAE;oBAC1B,EAAE,EAAE,IAAI,CAAC,EAAG,CAAC,WAAW,EAAE;oBAC1B,OAAO,EAAE,IAAI,CAAC,OAAQ;oBACtB,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,CAAC;oBACxB,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;oBACxC,IAAI,EAAE,KAAK;iBACZ,CAAC;gBACF,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACnB,SAAS,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;gBAChC,SAAS,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC;gBAE5C,OAAO,gBAAgB,CAAC;oBACtB,SAAS,EAAE,GAAG,CAAC,EAAE;oBACjB,MAAM,EAAE,GAAG,CAAC,MAAM;oBAClB,IAAI,EAAE,GAAG,CAAC,IAAI;oBACd,EAAE,EAAE,GAAG,CAAC,EAAE;oBACV,SAAS,EAAE,GAAG,CAAC,SAAS;oBACxB,cAAc,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO;iBAC3F,EAAE,cAAc,CAAC,CAAC;YACrB,CAAC;YAED,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;gBACtB,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC;gBACpE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;gBAChC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;gBAC/B,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC;gBAC7D,OAAO,gBAAgB,CAAC;oBACtB,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,KAAK,EAAE,YAAY,CAAC,MAAM;oBAC1B,MAAM;oBACN,KAAK;oBACL,YAAY,EAAE,SAAS,CAAC,MAAM;oBAC9B,QAAQ,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;wBAC5B,EAAE,EAAE,CAAC,CAAC,EAAE;wBACR,IAAI,EAAE,CAAC,CAAC,IAAI;wBACZ,EAAE,EAAE,CAAC,CAAC,EAAE;wBACR,OAAO,EAAE,CAAC,CAAC,OAAO;wBAClB,SAAS,EAAE,CAAC,CAAC,SAAS;wBACtB,IAAI,EAAE,CAAC,CAAC,IAAI;qBACb,CAAC,CAAC;iBACJ,EAAE,sBAAsB,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YAC1C,CAAC;YAED,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACxB,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;gBACpC,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;gBAC5E,OAAO,gBAAgB,CAAC,EAAE,WAAW,EAAE,EAAE,iBAAiB,CAAC,CAAC;YAC9D,CAAC;YAED,IAAI,MAAM,KAAK,WAAW,EAAE,CAAC;gBAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;gBAC7B,IAAI,CAAC,KAAK;oBAAE,OAAO,gBAAgB,CAAC,EAAE,KAAK,EAAE,uBAAuB,EAAE,EAAE,OAAO,CAAC,CAAC;gBACjF,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC;gBAC/C,IAAI,CAAC,GAAG;oBAAE,OAAO,gBAAgB,CAAC,EAAE,KAAK,EAAE,WAAW,KAAK,YAAY,EAAE,EAAE,OAAO,CAAC,CAAC;gBACpF,IAAI,GAAG,CAAC,EAAE,KAAK,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC;oBACpC,OAAO,gBAAgB,CAAC,EAAE,KAAK,EAAE,6CAA6C,EAAE,EAAE,OAAO,CAAC,CAAC;gBAC7F,CAAC;gBACD,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;gBAChB,SAAS,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;gBAChC,OAAO,gBAAgB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,qBAAqB,CAAC,CAAC;YACnF,CAAC;YAED,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;gBACvB,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;gBACpC,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC;gBAC9B,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;gBACvE,OAAO,gBAAgB,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,gBAAgB,CAAC,CAAC;YAC/D,CAAC;YAED,IAAI,MAAM,KAAK,eAAe,EAAE,CAAC;gBAC/B,MAAM,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;gBACxC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;gBACvD,OAAO,gBAAgB,CAAC;oBACtB,OAAO,EAAE,MAAM;oBACf,KAAK,EAAE,MAAM,CAAC,MAAM;oBACpB,MAAM,EAAE,WAAW;oBACnB,aAAa,EAAE,MAAM;iBACtB,EAAE,eAAe,CAAC,CAAC;YACtB,CAAC;YAED,IAAI,MAAM,KAAK,iBAAiB,EAAE,CAAC;gBACjC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;gBAC7B,IAAI,CAAC,OAAO;oBAAE,OAAO,gBAAgB,CAAC,EAAE,KAAK,EAAE,qBAAqB,EAAE,EAAE,OAAO,CAAC,CAAC;gBACjF,MAAM,OAAO,GAAG,oBAAoB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBACtD,IAAI,CAAC,OAAO;oBAAE,OAAO,gBAAgB,CAAC,EAAE,KAAK,EAAE,gBAAgB,OAAO,YAAY,EAAE,EAAE,OAAO,CAAC,CAAC;gBAC/F,OAAO,gBAAgB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,0BAA0B,CAAC,CAAC;YAC/E,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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"corven-reputation.d.ts","sourceRoot":"","sources":["../../src/tools/corven-reputation.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"corven-reputation.d.ts","sourceRoot":"","sources":["../../src/tools/corven-reputation.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAqDzE,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA0L/D"}
|
|
@@ -4,9 +4,37 @@ import { readContract } from "../handlers/wallet.js";
|
|
|
4
4
|
import { formatReadResult } from "../handlers/transactions.js";
|
|
5
5
|
import { formatStructuredError, parseContractError } from "../lib/formatResponse.js";
|
|
6
6
|
import { addressToDid, didToAddress } from "../lib/did.js";
|
|
7
|
+
import { loadStore, saveStore } from "../lib/store.js";
|
|
7
8
|
const REGISTRY_ABI = loadAbi("AgentRegistry");
|
|
8
9
|
const VERIFIER_ABI = loadAbi("ReceiptVerifier");
|
|
9
|
-
|
|
10
|
+
function addHistory(address, score, change, reason) {
|
|
11
|
+
const store = loadStore("reputation_history", {});
|
|
12
|
+
if (!store[address])
|
|
13
|
+
store[address] = [];
|
|
14
|
+
store[address].push({ score, change, reason, timestamp: Date.now() });
|
|
15
|
+
saveStore("reputation_history", store);
|
|
16
|
+
}
|
|
17
|
+
function getHistory(address) {
|
|
18
|
+
const store = loadStore("reputation_history", {});
|
|
19
|
+
return store[address] || [];
|
|
20
|
+
}
|
|
21
|
+
function getStats(address) {
|
|
22
|
+
const history = getHistory(address);
|
|
23
|
+
if (history.length === 0) {
|
|
24
|
+
return { totalChanges: 0, avgChange: 0, bestPeriod: null, worstPeriod: null };
|
|
25
|
+
}
|
|
26
|
+
const changes = history.map(h => h.change);
|
|
27
|
+
const avgChange = Math.round((changes.reduce((a, b) => a + b, 0) / changes.length) * 100) / 100;
|
|
28
|
+
const bestIdx = changes.indexOf(Math.max(...changes));
|
|
29
|
+
const worstIdx = changes.indexOf(Math.min(...changes));
|
|
30
|
+
return {
|
|
31
|
+
totalChanges: history.length,
|
|
32
|
+
avgChange,
|
|
33
|
+
bestPeriod: history[bestIdx],
|
|
34
|
+
worstPeriod: history[worstIdx],
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
const actionSchema = z.enum(["export", "import", "did", "history", "stats"]);
|
|
10
38
|
const schema = z.object({
|
|
11
39
|
action: actionSchema,
|
|
12
40
|
address: z.string().optional(),
|
|
@@ -19,7 +47,9 @@ export function registerReputationTools(server) {
|
|
|
19
47
|
"ACTIONS:\n" +
|
|
20
48
|
" export — Export reputation as W3C VC JWT (requires address)\n" +
|
|
21
49
|
" import — Verify and parse a reputation VC (requires jwt)\n" +
|
|
22
|
-
" did — Get DID document for an agent (requires address)\n
|
|
50
|
+
" did — Get DID document for an agent (requires address)\n" +
|
|
51
|
+
" history — Get reputation change history for an agent (requires address)\n" +
|
|
52
|
+
" stats — Get aggregate reputation stats (requires address)\n\n" +
|
|
23
53
|
"WORKFLOW: export → share JWT → import (cross-platform trust)\n" +
|
|
24
54
|
"DID FORMAT: did:covenant:<address>\n" +
|
|
25
55
|
"VC TYPE: CovenantReputation signed with ES256K\n\n" +
|
|
@@ -50,6 +80,8 @@ export function registerReputationTools(server) {
|
|
|
50
80
|
attestationCount = Array.isArray(receipts) ? receipts.length : 0;
|
|
51
81
|
}
|
|
52
82
|
catch { /* not fatal */ }
|
|
83
|
+
const history = getHistory(addr.toLowerCase());
|
|
84
|
+
addHistory(addr.toLowerCase(), Number(agent.reputation), 0, "export");
|
|
53
85
|
return formatReadResult({
|
|
54
86
|
did: addressToDid(addr),
|
|
55
87
|
address: addr,
|
|
@@ -67,6 +99,8 @@ export function registerReputationTools(server) {
|
|
|
67
99
|
: Number(agent.tasksCompleted) >= 50 ? "Top 10%"
|
|
68
100
|
: Number(agent.tasksCompleted) >= 10 ? "Established"
|
|
69
101
|
: "Newcomer",
|
|
102
|
+
historyCount: history.length,
|
|
103
|
+
recentChanges: history.slice(-5),
|
|
70
104
|
note: "Full JWT export requires wallet signing. Use corven_export_reputation_vc for signed JWT.",
|
|
71
105
|
}, "Reputation Export");
|
|
72
106
|
}
|
|
@@ -78,19 +112,39 @@ export function registerReputationTools(server) {
|
|
|
78
112
|
if (parts.length !== 3) {
|
|
79
113
|
return formatStructuredError("Invalid JWT format.", "Expected 3 parts.", "Use a valid VC JWT from corven_export_reputation_vc.", false);
|
|
80
114
|
}
|
|
81
|
-
|
|
82
|
-
|
|
115
|
+
let payload;
|
|
116
|
+
try {
|
|
117
|
+
payload = JSON.parse(Buffer.from(parts[1], "base64").toString());
|
|
118
|
+
}
|
|
119
|
+
catch {
|
|
120
|
+
return formatStructuredError("Invalid JWT payload.", "Cannot decode JWT body.", "Ensure the JWT is properly formatted.", false);
|
|
121
|
+
}
|
|
122
|
+
if (!payload.iss) {
|
|
123
|
+
return formatStructuredError("Invalid VC structure.", "Missing 'iss' field.", "Use a valid W3C Verifiable Credential.", false);
|
|
124
|
+
}
|
|
125
|
+
let issuerAddress;
|
|
126
|
+
try {
|
|
127
|
+
issuerAddress = didToAddress(payload.iss);
|
|
128
|
+
}
|
|
129
|
+
catch {
|
|
130
|
+
return formatStructuredError("Invalid issuer DID.", "Cannot extract address from DID.", "Ensure iss is a valid did:covenant: address.", false);
|
|
131
|
+
}
|
|
83
132
|
let issuerRegistered = false;
|
|
84
133
|
try {
|
|
85
134
|
await readContract(CONTRACTS.AgentRegistry, REGISTRY_ABI, "getAgent", [issuerAddress]);
|
|
86
135
|
issuerRegistered = true;
|
|
87
136
|
}
|
|
88
137
|
catch { /* not registered */ }
|
|
138
|
+
const credential = payload.vc?.credentialSubject || payload;
|
|
139
|
+
const requiredFields = ["reputation", "tasksCompleted"];
|
|
140
|
+
const missingFields = requiredFields.filter(f => !(f in credential));
|
|
89
141
|
return formatReadResult({
|
|
90
142
|
verified: true,
|
|
143
|
+
validStructure: missingFields.length === 0,
|
|
144
|
+
missingFields,
|
|
91
145
|
issuerRegistered,
|
|
92
146
|
issuer: { did: payload.iss, address: issuerAddress },
|
|
93
|
-
credential
|
|
147
|
+
credential,
|
|
94
148
|
}, "VC Verified and Imported");
|
|
95
149
|
}
|
|
96
150
|
if (action === "did") {
|
|
@@ -122,6 +176,29 @@ export function registerReputationTools(server) {
|
|
|
122
176
|
agentData,
|
|
123
177
|
}, "Agent DID Document");
|
|
124
178
|
}
|
|
179
|
+
if (action === "history") {
|
|
180
|
+
const addr = args.address || getAccount()?.address;
|
|
181
|
+
if (!addr) {
|
|
182
|
+
return formatStructuredError("No address provided.", "Address is required.", "Provide an Ethereum address.", false);
|
|
183
|
+
}
|
|
184
|
+
const history = getHistory(addr.toLowerCase());
|
|
185
|
+
return formatReadResult({
|
|
186
|
+
address: addr,
|
|
187
|
+
totalEntries: history.length,
|
|
188
|
+
history,
|
|
189
|
+
}, "Reputation History");
|
|
190
|
+
}
|
|
191
|
+
if (action === "stats") {
|
|
192
|
+
const addr = args.address || getAccount()?.address;
|
|
193
|
+
if (!addr) {
|
|
194
|
+
return formatStructuredError("No address provided.", "Address is required.", "Provide an Ethereum address.", false);
|
|
195
|
+
}
|
|
196
|
+
const stats = getStats(addr.toLowerCase());
|
|
197
|
+
return formatReadResult({
|
|
198
|
+
address: addr,
|
|
199
|
+
...stats,
|
|
200
|
+
}, "Reputation Stats");
|
|
201
|
+
}
|
|
125
202
|
return formatReadResult({ error: "Unknown action" }, "Error");
|
|
126
203
|
}
|
|
127
204
|
catch (e) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"corven-reputation.js","sourceRoot":"","sources":["../../src/tools/corven-reputation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AACrF,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"corven-reputation.js","sourceRoot":"","sources":["../../src/tools/corven-reputation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"corven-stats.d.ts","sourceRoot":"","sources":["../../src/tools/corven-stats.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"corven-stats.d.ts","sourceRoot":"","sources":["../../src/tools/corven-stats.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAsBzE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAkL1D"}
|