@varun-ai07/covenant-mcp 2.4.3 → 3.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.
Files changed (98) hide show
  1. package/README.md +53 -10
  2. package/dist/auto-verifier.d.ts.map +1 -1
  3. package/dist/auto-verifier.js +5 -4
  4. package/dist/auto-verifier.js.map +1 -1
  5. package/dist/cli.js +23 -33
  6. package/dist/cli.js.map +1 -1
  7. package/dist/config.d.ts.map +1 -1
  8. package/dist/config.js +17 -0
  9. package/dist/config.js.map +1 -1
  10. package/dist/index.js +9 -0
  11. package/dist/index.js.map +1 -1
  12. package/dist/lib/verify.d.ts +12 -0
  13. package/dist/lib/verify.d.ts.map +1 -1
  14. package/dist/lib/verify.js +115 -13
  15. package/dist/lib/verify.js.map +1 -1
  16. package/dist/sdk.d.ts +1 -0
  17. package/dist/sdk.d.ts.map +1 -1
  18. package/dist/sdk.js +9 -0
  19. package/dist/sdk.js.map +1 -1
  20. package/dist/server.d.ts.map +1 -1
  21. package/dist/server.js +7 -2
  22. package/dist/server.js.map +1 -1
  23. package/dist/tools/corven-agent.d.ts.map +1 -1
  24. package/dist/tools/corven-agent.js +84 -11
  25. package/dist/tools/corven-agent.js.map +1 -1
  26. package/dist/tools/corven-attest.d.ts.map +1 -1
  27. package/dist/tools/corven-attest.js +2 -1
  28. package/dist/tools/corven-attest.js.map +1 -1
  29. package/dist/tools/corven-batch.d.ts.map +1 -1
  30. package/dist/tools/corven-batch.js +84 -3
  31. package/dist/tools/corven-batch.js.map +1 -1
  32. package/dist/tools/corven-bounty.d.ts.map +1 -1
  33. package/dist/tools/corven-bounty.js +1 -0
  34. package/dist/tools/corven-bounty.js.map +1 -1
  35. package/dist/tools/corven-collective.d.ts.map +1 -1
  36. package/dist/tools/corven-collective.js +2 -1
  37. package/dist/tools/corven-collective.js.map +1 -1
  38. package/dist/tools/corven-encrypt.d.ts +3 -0
  39. package/dist/tools/corven-encrypt.d.ts.map +1 -0
  40. package/dist/tools/corven-encrypt.js +107 -0
  41. package/dist/tools/corven-encrypt.js.map +1 -0
  42. package/dist/tools/corven-govern.d.ts.map +1 -1
  43. package/dist/tools/corven-govern.js +2 -1
  44. package/dist/tools/corven-govern.js.map +1 -1
  45. package/dist/tools/corven-grants.d.ts.map +1 -1
  46. package/dist/tools/corven-grants.js +2 -1
  47. package/dist/tools/corven-grants.js.map +1 -1
  48. package/dist/tools/corven-insurance.d.ts.map +1 -1
  49. package/dist/tools/corven-insurance.js +2 -1
  50. package/dist/tools/corven-insurance.js.map +1 -1
  51. package/dist/tools/corven-ipfs.d.ts.map +1 -1
  52. package/dist/tools/corven-ipfs.js +85 -12
  53. package/dist/tools/corven-ipfs.js.map +1 -1
  54. package/dist/tools/corven-market.d.ts.map +1 -1
  55. package/dist/tools/corven-market.js +2 -1
  56. package/dist/tools/corven-market.js.map +1 -1
  57. package/dist/tools/corven-message.d.ts +1 -0
  58. package/dist/tools/corven-message.d.ts.map +1 -1
  59. package/dist/tools/corven-message.js +100 -12
  60. package/dist/tools/corven-message.js.map +1 -1
  61. package/dist/tools/corven-multi.d.ts.map +1 -1
  62. package/dist/tools/corven-multi.js +2 -1
  63. package/dist/tools/corven-multi.js.map +1 -1
  64. package/dist/tools/corven-reputation.d.ts.map +1 -1
  65. package/dist/tools/corven-reputation.js +82 -5
  66. package/dist/tools/corven-reputation.js.map +1 -1
  67. package/dist/tools/corven-revision.d.ts.map +1 -1
  68. package/dist/tools/corven-revision.js +2 -1
  69. package/dist/tools/corven-revision.js.map +1 -1
  70. package/dist/tools/corven-router.d.ts.map +1 -1
  71. package/dist/tools/corven-router.js +2 -1
  72. package/dist/tools/corven-router.js.map +1 -1
  73. package/dist/tools/corven-stats.d.ts.map +1 -1
  74. package/dist/tools/corven-stats.js +72 -10
  75. package/dist/tools/corven-stats.js.map +1 -1
  76. package/dist/tools/corven-status.d.ts.map +1 -1
  77. package/dist/tools/corven-status.js +12 -13
  78. package/dist/tools/corven-status.js.map +1 -1
  79. package/dist/tools/corven-stream.d.ts.map +1 -1
  80. package/dist/tools/corven-stream.js +2 -1
  81. package/dist/tools/corven-stream.js.map +1 -1
  82. package/dist/tools/corven-task.d.ts.map +1 -1
  83. package/dist/tools/corven-task.js +190 -9
  84. package/dist/tools/corven-task.js.map +1 -1
  85. package/dist/tools/corven-training.d.ts.map +1 -1
  86. package/dist/tools/corven-training.js +2 -1
  87. package/dist/tools/corven-training.js.map +1 -1
  88. package/dist/tools/corven-version.d.ts +3 -0
  89. package/dist/tools/corven-version.d.ts.map +1 -0
  90. package/dist/tools/corven-version.js +129 -0
  91. package/dist/tools/corven-version.js.map +1 -0
  92. package/dist/tools/corven-wallet.d.ts.map +1 -1
  93. package/dist/tools/corven-wallet.js +2 -1
  94. package/dist/tools/corven-wallet.js.map +1 -1
  95. package/dist/tools/disputes.d.ts.map +1 -1
  96. package/dist/tools/disputes.js +88 -2
  97. package/dist/tools/disputes.js.map +1 -1
  98. package/package.json +1 -1
@@ -1,22 +1,75 @@
1
1
  /**
2
- * corven_upload_ipfs — Upload content to IPFS
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
- content: z.string().describe("Content to upload (text, JSON, or base64)"),
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("corven_upload_ipfs", {
13
- title: "Upload to IPFS",
14
- description: "Upload content to IPFS via Pinata on COVENANT returns a CID for task descriptions and deliverables.\n\n" +
15
- "USE WHEN: You need to store task descriptions, deliverables, or any data on IPFS.\n" +
16
- "REQUIRES: PINATA_API_KEY and PINATA_SECRET_KEY in environment.\n" +
17
- "RETURNS: IPFS CID (e.g., QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o)\n" +
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 upload description first to get a CID.\n\n" +
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(args.content, "base64").toString("utf-8");
109
+ content = Buffer.from(content, "base64").toString("utf-8");
37
110
  }
38
111
  else if (args.type === "json") {
39
- JSON.parse(args.content);
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":"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"}
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,CA6E3D"}
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,CA8E3D"}
@@ -20,7 +20,7 @@ const schema = z.object({
20
20
  price: z.string().optional(),
21
21
  timeEstimate: z.string().optional(),
22
22
  proposalHash: z.string().optional(),
23
- confirm: z.boolean().optional().default(false).describe('Set to true to execute. Without this, shows what will happen.'),
23
+ confirm: z.boolean().optional().default(false).describe('NEVER set this yourself. ALWAYS ask the user first. Show the exact ETH cost and what will happen. Only set to true AFTER the user explicitly says yes.'),
24
24
  });
25
25
  export function registerMarketTools(server) {
26
26
  server.registerTool("corven_market", {
@@ -36,6 +36,7 @@ export function registerMarketTools(server) {
36
36
  "WORKFLOW: post → workers bid → select winner → task starts\n\n" +
37
37
  "WHEN TO USE: When you want workers to compete and bid on your task.\n\n" +
38
38
  "NEXT STEP: Wait for bids, then select a winner with corven_market({ action: 'select' })\n\n" +
39
+ "CRITICAL SAFETY: The AI must NEVER auto-set confirm=true. ALWAYS present the cost summary to the user first and wait for explicit approval. This is real money. Violating this is unacceptable.\n\n" +
39
40
  "OUTPUT RULES:\n" +
40
41
  "- Present results as clean, readable text. Never show raw JSON.\n" +
41
42
  "- On error: Explain in plain language what went wrong and suggest next step.\n" +
@@ -1 +1 @@
1
- {"version":3,"file":"corven-market.js","sourceRoot":"","sources":["../../src/tools/corven-market.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"corven-market.js","sourceRoot":"","sources":["../../src/tools/corven-market.ts"],"names":[],"mappings":"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"}
@@ -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":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA0BzE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAkF5D"}
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
- const actionSchema = z.enum(["send", "list", "unread"]);
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
- const messages = [];
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 check inbox.\n\n" +
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\n" +
23
- "WORKFLOW: send list read respond\n" +
24
- "NOTE: In-memory MVP. Messages persist for the MCP session lifetime.\n\n" +
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).slice(-(args.limit || 50));
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
- messageCount: taskMessages.length,
66
- messages: taskMessages.map(m => ({
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":"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"}
1
+ {"version":3,"file":"corven-message.js","sourceRoot":"","sources":["../../src/tools/corven-message.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"corven-multi.d.ts","sourceRoot":"","sources":["../../src/tools/corven-multi.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAkDzE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAoN1D"}
1
+ {"version":3,"file":"corven-multi.d.ts","sourceRoot":"","sources":["../../src/tools/corven-multi.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAkDzE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAqN1D"}
@@ -63,6 +63,7 @@ export function registerMultiTools(server) {
63
63
  "WORKFLOW: ERC-20 approve() → corven_multi create → [worker does work] → corven_multi submit → corven_multi verify.\n" +
64
64
  "WHEN TO USE: When you want to pay for tasks with stablecoins (USDC/DAI/USDT) instead of ETH.\n\n" +
65
65
  "NEXT STEP: After creation, wait for worker submission then verify with corven_multi({ action: 'verify' })\n\n" +
66
+ "CRITICAL SAFETY: The AI must NEVER auto-set confirm=true. ALWAYS present the cost summary to the user first and wait for explicit approval. This is real money. Violating this is unacceptable.\n\n" +
66
67
  "OUTPUT RULES:\n" +
67
68
  "- Present results as clean, readable text. Never show raw JSON.\n" +
68
69
  "- On error: Explain in plain language what went wrong and suggest next step.\n" +
@@ -79,7 +80,7 @@ export function registerMultiTools(server) {
79
80
  taskId: z.number().optional().describe("Task ID (for submit/verify/get)"),
80
81
  deliverableHash: z.string().optional().describe("IPFS CID (for submit)"),
81
82
  success: z.boolean().optional().describe("Approve or reject (for verify)"),
82
- confirm: z.boolean().optional().default(false).describe('Set to true to execute. Without this, shows what will happen.'),
83
+ confirm: z.boolean().optional().default(false).describe('NEVER set this yourself. ALWAYS ask the user first. Show the exact ETH cost and what will happen. Only set to true AFTER the user explicitly says yes.'),
83
84
  },
84
85
  }, async (params) => {
85
86
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"corven-multi.js","sourceRoot":"","sources":["../../src/tools/corven-multi.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"corven-multi.js","sourceRoot":"","sources":["../../src/tools/corven-multi.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"corven-reputation.d.ts","sourceRoot":"","sources":["../../src/tools/corven-reputation.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAazE,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAqI/D"}
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
- const actionSchema = z.enum(["export", "import", "did"]);
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\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
- const payload = JSON.parse(Buffer.from(parts[1], "base64").toString());
82
- const issuerAddress = didToAddress(payload.iss);
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: payload.vc?.credentialSubject || payload,
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) {