@varun-ai07/covenant-mcp 1.2.2 → 1.3.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 (165) hide show
  1. package/README.md +128 -12
  2. package/dist/abis/MultiTokenEscrow.json +836 -0
  3. package/dist/abis/v2/AgentRegistry.json +872 -0
  4. package/dist/abis/v2/DisputeResolution.json +493 -0
  5. package/dist/abis/v2/InsurancePool.json +645 -0
  6. package/dist/abis/v2/ReceiptVerifier.json +394 -0
  7. package/dist/abis/v2/RevisionManager.json +544 -0
  8. package/dist/abis/v2/TaskEscrow.json +1018 -0
  9. package/dist/cli.js +0 -0
  10. package/dist/config.d.ts +13 -1
  11. package/dist/config.d.ts.map +1 -1
  12. package/dist/config.js +84 -25
  13. package/dist/config.js.map +1 -1
  14. package/dist/handlers/wallet.d.ts.map +1 -1
  15. package/dist/handlers/wallet.js +1 -1
  16. package/dist/handlers/wallet.js.map +1 -1
  17. package/dist/lib/did.d.ts +72 -0
  18. package/dist/lib/did.d.ts.map +1 -0
  19. package/dist/lib/did.js +115 -0
  20. package/dist/lib/did.js.map +1 -0
  21. package/dist/lib/events.d.ts.map +1 -1
  22. package/dist/lib/events.js +2 -2
  23. package/dist/lib/events.js.map +1 -1
  24. package/dist/lib/formatResponse.d.ts +33 -0
  25. package/dist/lib/formatResponse.d.ts.map +1 -0
  26. package/dist/lib/formatResponse.js +92 -0
  27. package/dist/lib/formatResponse.js.map +1 -0
  28. package/dist/lib/schemaHelpers.d.ts +11 -0
  29. package/dist/lib/schemaHelpers.d.ts.map +1 -0
  30. package/dist/lib/schemaHelpers.js +11 -0
  31. package/dist/lib/schemaHelpers.js.map +1 -0
  32. package/dist/lib/store.d.ts +10 -0
  33. package/dist/lib/store.d.ts.map +1 -0
  34. package/dist/lib/store.js +39 -0
  35. package/dist/lib/store.js.map +1 -0
  36. package/dist/lib/verify.d.ts +21 -0
  37. package/dist/lib/verify.d.ts.map +1 -0
  38. package/dist/lib/verify.js +568 -0
  39. package/dist/lib/verify.js.map +1 -0
  40. package/dist/schemas.d.ts +5 -5
  41. package/dist/schemas.d.ts.map +1 -1
  42. package/dist/server.d.ts +1 -25
  43. package/dist/server.d.ts.map +1 -1
  44. package/dist/server.js +53 -37
  45. package/dist/server.js.map +1 -1
  46. package/dist/tools/account-abstraction.d.ts +3 -0
  47. package/dist/tools/account-abstraction.d.ts.map +1 -0
  48. package/dist/tools/account-abstraction.js +364 -0
  49. package/dist/tools/account-abstraction.js.map +1 -0
  50. package/dist/tools/batches.d.ts.map +1 -1
  51. package/dist/tools/batches.js +68 -37
  52. package/dist/tools/batches.js.map +1 -1
  53. package/dist/tools/bounties.d.ts +3 -0
  54. package/dist/tools/bounties.d.ts.map +1 -0
  55. package/dist/tools/bounties.js +304 -0
  56. package/dist/tools/bounties.js.map +1 -0
  57. package/dist/tools/bridge.d.ts +3 -0
  58. package/dist/tools/bridge.d.ts.map +1 -0
  59. package/dist/tools/bridge.js +190 -0
  60. package/dist/tools/bridge.js.map +1 -0
  61. package/dist/tools/collectives.d.ts.map +1 -1
  62. package/dist/tools/collectives.js +75 -48
  63. package/dist/tools/collectives.js.map +1 -1
  64. package/dist/tools/covenant-help.d.ts +3 -0
  65. package/dist/tools/covenant-help.d.ts.map +1 -0
  66. package/dist/tools/covenant-help.js +321 -0
  67. package/dist/tools/covenant-help.js.map +1 -0
  68. package/dist/tools/cross-chain.d.ts +3 -0
  69. package/dist/tools/cross-chain.d.ts.map +1 -0
  70. package/dist/tools/cross-chain.js +77 -0
  71. package/dist/tools/cross-chain.js.map +1 -0
  72. package/dist/tools/disputes.d.ts.map +1 -1
  73. package/dist/tools/disputes.js +39 -33
  74. package/dist/tools/disputes.js.map +1 -1
  75. package/dist/tools/escrow.d.ts.map +1 -1
  76. package/dist/tools/escrow.js +277 -202
  77. package/dist/tools/escrow.js.map +1 -1
  78. package/dist/tools/fiat-onramp.d.ts +3 -0
  79. package/dist/tools/fiat-onramp.d.ts.map +1 -0
  80. package/dist/tools/fiat-onramp.js +108 -0
  81. package/dist/tools/fiat-onramp.js.map +1 -0
  82. package/dist/tools/governance.d.ts +3 -0
  83. package/dist/tools/governance.d.ts.map +1 -0
  84. package/dist/tools/governance.js +271 -0
  85. package/dist/tools/governance.js.map +1 -0
  86. package/dist/tools/grants.d.ts +3 -0
  87. package/dist/tools/grants.d.ts.map +1 -0
  88. package/dist/tools/grants.js +269 -0
  89. package/dist/tools/grants.js.map +1 -0
  90. package/dist/tools/insurance.d.ts.map +1 -1
  91. package/dist/tools/insurance.js +92 -45
  92. package/dist/tools/insurance.js.map +1 -1
  93. package/dist/tools/market.d.ts.map +1 -1
  94. package/dist/tools/market.js +122 -103
  95. package/dist/tools/market.js.map +1 -1
  96. package/dist/tools/matching.d.ts +3 -0
  97. package/dist/tools/matching.d.ts.map +1 -0
  98. package/dist/tools/matching.js +233 -0
  99. package/dist/tools/matching.js.map +1 -0
  100. package/dist/tools/messaging.d.ts +3 -0
  101. package/dist/tools/messaging.d.ts.map +1 -0
  102. package/dist/tools/messaging.js +159 -0
  103. package/dist/tools/messaging.js.map +1 -0
  104. package/dist/tools/multi-token.d.ts +3 -0
  105. package/dist/tools/multi-token.d.ts.map +1 -0
  106. package/dist/tools/multi-token.js +274 -0
  107. package/dist/tools/multi-token.js.map +1 -0
  108. package/dist/tools/offchain-coordinator.d.ts +3 -0
  109. package/dist/tools/offchain-coordinator.d.ts.map +1 -0
  110. package/dist/tools/offchain-coordinator.js +436 -0
  111. package/dist/tools/offchain-coordinator.js.map +1 -0
  112. package/dist/tools/protocol.d.ts.map +1 -1
  113. package/dist/tools/protocol.js +19 -6
  114. package/dist/tools/protocol.js.map +1 -1
  115. package/dist/tools/receipts.d.ts.map +1 -1
  116. package/dist/tools/receipts.js +45 -22
  117. package/dist/tools/receipts.js.map +1 -1
  118. package/dist/tools/registry.d.ts.map +1 -1
  119. package/dist/tools/registry.js +90 -43
  120. package/dist/tools/registry.js.map +1 -1
  121. package/dist/tools/reputation-vc.d.ts +3 -0
  122. package/dist/tools/reputation-vc.d.ts.map +1 -0
  123. package/dist/tools/reputation-vc.js +438 -0
  124. package/dist/tools/reputation-vc.js.map +1 -0
  125. package/dist/tools/revisions.d.ts +3 -0
  126. package/dist/tools/revisions.d.ts.map +1 -0
  127. package/dist/tools/revisions.js +108 -0
  128. package/dist/tools/revisions.js.map +1 -0
  129. package/dist/tools/router.d.ts +3 -0
  130. package/dist/tools/router.d.ts.map +1 -0
  131. package/dist/tools/router.js +104 -0
  132. package/dist/tools/router.js.map +1 -0
  133. package/dist/tools/streaming.d.ts +3 -0
  134. package/dist/tools/streaming.d.ts.map +1 -0
  135. package/dist/tools/streaming.js +350 -0
  136. package/dist/tools/streaming.js.map +1 -0
  137. package/dist/tools/templates.d.ts +3 -0
  138. package/dist/tools/templates.d.ts.map +1 -0
  139. package/dist/tools/templates.js +392 -0
  140. package/dist/tools/templates.js.map +1 -0
  141. package/dist/tools/training.d.ts +3 -0
  142. package/dist/tools/training.d.ts.map +1 -0
  143. package/dist/tools/training.js +304 -0
  144. package/dist/tools/training.js.map +1 -0
  145. package/dist/tools/v2-settlement.d.ts +3 -0
  146. package/dist/tools/v2-settlement.d.ts.map +1 -0
  147. package/dist/tools/v2-settlement.js +226 -0
  148. package/dist/tools/v2-settlement.js.map +1 -0
  149. package/dist/tools/verification.d.ts +3 -0
  150. package/dist/tools/verification.d.ts.map +1 -0
  151. package/dist/tools/verification.js +215 -0
  152. package/dist/tools/verification.js.map +1 -0
  153. package/dist/tools/verify-deep.d.ts +3 -0
  154. package/dist/tools/verify-deep.d.ts.map +1 -0
  155. package/dist/tools/verify-deep.js +125 -0
  156. package/dist/tools/verify-deep.js.map +1 -0
  157. package/dist/types.d.ts +16 -3
  158. package/dist/types.d.ts.map +1 -1
  159. package/dist/types.js +4 -23
  160. package/dist/types.js.map +1 -1
  161. package/dist/utils.d.ts +2 -3
  162. package/dist/utils.d.ts.map +1 -1
  163. package/dist/utils.js +8 -34
  164. package/dist/utils.js.map +1 -1
  165. package/package.json +3 -1
@@ -0,0 +1,568 @@
1
+ import { execSync } from "child_process";
2
+ import { readFileSync, readdirSync, statSync, existsSync } from "fs";
3
+ import { join } from "path";
4
+ import { createHash } from "crypto";
5
+ // ─── Clone ───────────────────────────────────────────────────
6
+ export async function cloneRepo(url) {
7
+ const tmpDir = `/tmp/covenant-verify-${Date.now()}`;
8
+ execSync(`git clone --depth 1 ${url} ${tmpDir}`, { timeout: 60000 });
9
+ return tmpDir;
10
+ }
11
+ // ─── Main Verification ───────────────────────────────────────
12
+ export async function verifyProject(repoUrl, requirements, depth = "standard") {
13
+ const repoDir = await cloneRepo(repoUrl);
14
+ const checks = [];
15
+ checks.push(await checkCodeQuality(repoDir));
16
+ checks.push(await checkArchitecture(repoDir));
17
+ checks.push(await checkSecurity(repoDir));
18
+ checks.push(await checkPerformance(repoDir));
19
+ checks.push(await checkTesting(repoDir));
20
+ checks.push(await checkDocumentation(repoDir));
21
+ checks.push(await checkDependencies(repoDir));
22
+ checks.push(await checkBestPractices(repoDir));
23
+ // Weighted score
24
+ const weights = {
25
+ code_quality: 0.20,
26
+ architecture: 0.15,
27
+ security: 0.20,
28
+ performance: 0.15,
29
+ testing: 0.15,
30
+ documentation: 0.05,
31
+ dependencies: 0.05,
32
+ best_practices: 0.05,
33
+ };
34
+ let totalScore = 0;
35
+ for (const check of checks) {
36
+ totalScore += check.score * (weights[check.dimension] || 0.1);
37
+ }
38
+ const score = Math.round(totalScore);
39
+ const verdict = score >= 70 ? "pass" : score >= 40 ? "partial" : "fail";
40
+ const summary = generateSummary(checks, score, requirements);
41
+ const recommendations = generateRecommendations(checks);
42
+ const report = {
43
+ checks,
44
+ score,
45
+ verdict,
46
+ summary,
47
+ recommendations,
48
+ timestamp: Date.now(),
49
+ };
50
+ const evidenceHash = createHash("sha256")
51
+ .update(JSON.stringify(report))
52
+ .digest("hex");
53
+ // Cleanup
54
+ try {
55
+ execSync(`rm -rf ${repoDir}`);
56
+ }
57
+ catch { /* best-effort cleanup */ }
58
+ return {
59
+ score,
60
+ verdict,
61
+ checks,
62
+ summary,
63
+ recommendations,
64
+ evidenceHash,
65
+ repoUrl,
66
+ timestamp: Date.now(),
67
+ };
68
+ }
69
+ // ─── Checkers ────────────────────────────────────────────────
70
+ async function checkCodeQuality(dir) {
71
+ const issues = [];
72
+ let score = 100;
73
+ const loc = countLines(dir);
74
+ if (loc < 10) {
75
+ issues.push("Very few lines of code");
76
+ score -= 30;
77
+ }
78
+ const consoleLogs = countPattern(dir, /console\.log\(/g);
79
+ if (consoleLogs > 5) {
80
+ issues.push(`${consoleLogs} console.log statements found`);
81
+ score -= 10;
82
+ }
83
+ const anyTypes = countPattern(dir, /:\s*any/g);
84
+ if (anyTypes > 10) {
85
+ issues.push(`${anyTypes} uses of 'any' type`);
86
+ score -= 15;
87
+ }
88
+ const todos = countPattern(dir, /TODO|FIXME|HACK/gi);
89
+ if (todos > 0) {
90
+ issues.push(`${todos} TODO/FIXME comments`);
91
+ score -= 5;
92
+ }
93
+ // Simple unused import heuristic
94
+ const files = getFiles(dir, [".ts", ".tsx", ".js", ".jsx"]);
95
+ let unusedImports = 0;
96
+ for (const file of files.slice(0, 100)) {
97
+ // cap at 100 files for perf
98
+ const content = readFileSync(file, "utf-8");
99
+ const imports = content.match(/import\s+.*\s+from\s+['"](.+)['"]/g) || [];
100
+ for (const imp of imports) {
101
+ const match = imp.match(/import\s+\{\s*(.+?)\s*\}/);
102
+ if (match) {
103
+ const symbols = match[1].split(",").map((s) => s.trim());
104
+ for (const sym of symbols) {
105
+ if (sym.length > 0 && !content.includes(sym.replace("type ", ""))) {
106
+ unusedImports++;
107
+ }
108
+ }
109
+ }
110
+ }
111
+ }
112
+ if (unusedImports > 5) {
113
+ issues.push(`${unusedImports} potentially unused imports`);
114
+ score -= 5;
115
+ }
116
+ return {
117
+ dimension: "code_quality",
118
+ score: Math.max(0, score),
119
+ details: `LOC: ${loc}, Console logs: ${consoleLogs}, Any types: ${anyTypes}, TODOs: ${todos}`,
120
+ issues,
121
+ passed: score >= 70,
122
+ };
123
+ }
124
+ async function checkArchitecture(dir) {
125
+ const issues = [];
126
+ let score = 100;
127
+ const hasSrc = existsSync(join(dir, "src")) || existsSync(join(dir, "app"));
128
+ const hasTests = existsSync(join(dir, "test")) ||
129
+ existsSync(join(dir, "tests")) ||
130
+ existsSync(join(dir, "__tests__"));
131
+ const hasDocs = existsSync(join(dir, "docs")) || existsSync(join(dir, "README.md"));
132
+ const hasConfig = existsSync(join(dir, "package.json")) ||
133
+ existsSync(join(dir, "tsconfig.json"));
134
+ if (!hasSrc && !hasConfig) {
135
+ issues.push("No src/ or config found");
136
+ score -= 20;
137
+ }
138
+ if (!hasTests) {
139
+ issues.push("No test directory found");
140
+ score -= 15;
141
+ }
142
+ if (!hasDocs) {
143
+ issues.push("No documentation found");
144
+ score -= 10;
145
+ }
146
+ const fileCount = countFiles(dir);
147
+ if (fileCount < 3) {
148
+ issues.push("Very few files");
149
+ score -= 20;
150
+ }
151
+ if (fileCount > 500) {
152
+ issues.push("Very large codebase (500+ files)");
153
+ score -= 5;
154
+ }
155
+ return {
156
+ dimension: "architecture",
157
+ score: Math.max(0, score),
158
+ details: `Files: ${fileCount}, Has src: ${hasSrc}, Has tests: ${hasTests}, Has docs: ${hasDocs}`,
159
+ issues,
160
+ passed: score >= 70,
161
+ };
162
+ }
163
+ async function checkSecurity(dir) {
164
+ const issues = [];
165
+ let score = 100;
166
+ const secretPatterns = [
167
+ /API_KEY\s*=\s*['"][^'"]+['"]/gi,
168
+ /SECRET\s*=\s*['"][^'"]+['"]/gi,
169
+ /PASSWORD\s*=\s*['"][^'"]+['"]/gi,
170
+ /PRIVATE_KEY\s*=\s*['"][^'"]+['"]/gi,
171
+ ];
172
+ for (const pattern of secretPatterns) {
173
+ const matches = countPattern(dir, pattern);
174
+ if (matches > 0) {
175
+ issues.push(`${matches} potential hardcoded secrets`);
176
+ score -= 20;
177
+ break; // one deduction is enough for secrets
178
+ }
179
+ }
180
+ if (existsSync(join(dir, ".env"))) {
181
+ issues.push(".env file committed to repo");
182
+ score -= 15;
183
+ }
184
+ const evals = countPattern(dir, /\beval\s*\(/g);
185
+ if (evals > 0) {
186
+ issues.push(`${evals} eval() usage`);
187
+ score -= 15;
188
+ }
189
+ const innerHTML = countPattern(dir, /innerHTML/g);
190
+ if (innerHTML > 0) {
191
+ issues.push(`${innerHTML} innerHTML usage (XSS risk)`);
192
+ score -= 10;
193
+ }
194
+ const sqlInjection = countPattern(dir, /query\s*\(\s*['"`].*\$\{/g);
195
+ if (sqlInjection > 0) {
196
+ issues.push(`${sqlInjection} potential SQL injection`);
197
+ score -= 20;
198
+ }
199
+ return {
200
+ dimension: "security",
201
+ score: Math.max(0, score),
202
+ details: `Hardcoded secrets checked, eval: ${evals}, innerHTML: ${innerHTML}`,
203
+ issues,
204
+ passed: score >= 70,
205
+ };
206
+ }
207
+ async function checkPerformance(dir) {
208
+ const issues = [];
209
+ let score = 100;
210
+ // Check for build output
211
+ const buildDirs = ["dist", "build", ".next"];
212
+ for (const bd of buildDirs) {
213
+ const bdPath = join(dir, bd);
214
+ if (existsSync(bdPath)) {
215
+ const size = getDirSize(bdPath);
216
+ const sizeMB = size / (1024 * 1024);
217
+ if (sizeMB > 10) {
218
+ issues.push(`Bundle size: ${sizeMB.toFixed(1)}MB (very large)`);
219
+ score -= 20;
220
+ }
221
+ else if (sizeMB > 5) {
222
+ issues.push(`Bundle size: ${sizeMB.toFixed(1)}MB (large)`);
223
+ score -= 10;
224
+ }
225
+ break;
226
+ }
227
+ }
228
+ const largeFiles = findLargeFiles(dir, 1024 * 1024);
229
+ if (largeFiles.length > 0) {
230
+ issues.push(`${largeFiles.length} files larger than 1MB`);
231
+ score -= 10;
232
+ }
233
+ const asyncFiles = countPattern(dir, /async\s+function|async\s*\(/g);
234
+ const totalFiles = countFiles(dir);
235
+ if (totalFiles > 10 && asyncFiles === 0) {
236
+ issues.push("No async/await usage found");
237
+ score -= 5;
238
+ }
239
+ return {
240
+ dimension: "performance",
241
+ score: Math.max(0, score),
242
+ details: `Large files: ${largeFiles.length}, Async usage: ${asyncFiles}`,
243
+ issues,
244
+ passed: score >= 70,
245
+ };
246
+ }
247
+ async function checkTesting(dir) {
248
+ const issues = [];
249
+ let score = 100;
250
+ const hasTests = existsSync(join(dir, "test")) ||
251
+ existsSync(join(dir, "tests")) ||
252
+ existsSync(join(dir, "__tests__")) ||
253
+ existsSync(join(dir, "spec"));
254
+ if (!hasTests) {
255
+ issues.push("No test files found");
256
+ score -= 50;
257
+ }
258
+ else {
259
+ const testFiles = getFiles(dir, [
260
+ ".test.ts",
261
+ ".test.js",
262
+ ".spec.ts",
263
+ ".spec.js",
264
+ ".test.tsx",
265
+ ]);
266
+ const sourceFiles = getFiles(dir, [".ts", ".tsx", ".js", ".jsx"]);
267
+ const coverage = sourceFiles.length > 0
268
+ ? (testFiles.length / sourceFiles.length) * 100
269
+ : 0;
270
+ if (coverage < 30) {
271
+ issues.push(`Low test coverage: ${coverage.toFixed(0)}%`);
272
+ score -= 20;
273
+ }
274
+ else if (coverage < 60) {
275
+ issues.push(`Moderate test coverage: ${coverage.toFixed(0)}%`);
276
+ score -= 10;
277
+ }
278
+ let assertionCount = 0;
279
+ for (const testFile of testFiles.slice(0, 50)) {
280
+ const content = readFileSync(testFile, "utf-8");
281
+ assertionCount += (content.match(/expect\(/g) || []).length;
282
+ }
283
+ if (testFiles.length > 0 && assertionCount / testFiles.length < 3) {
284
+ issues.push("Low assertion density in tests");
285
+ score -= 10;
286
+ }
287
+ }
288
+ return {
289
+ dimension: "testing",
290
+ score: Math.max(0, score),
291
+ details: `Tests found: ${hasTests}`,
292
+ issues,
293
+ passed: score >= 70,
294
+ };
295
+ }
296
+ async function checkDocumentation(dir) {
297
+ const issues = [];
298
+ let score = 100;
299
+ const readmePath = join(dir, "README.md");
300
+ if (existsSync(readmePath)) {
301
+ const readme = readFileSync(readmePath, "utf-8");
302
+ if (readme.length < 100) {
303
+ issues.push("README is too short (<100 chars)");
304
+ score -= 20;
305
+ }
306
+ if (!readme.includes("#")) {
307
+ issues.push("README has no headers");
308
+ score -= 10;
309
+ }
310
+ if (!readme.includes("```")) {
311
+ issues.push("README has no code examples");
312
+ score -= 5;
313
+ }
314
+ }
315
+ else {
316
+ issues.push("No README.md found");
317
+ score -= 30;
318
+ }
319
+ const docComments = countPattern(dir, /\/\*\*[\s\S]*?\*\//g);
320
+ if (docComments < 5) {
321
+ issues.push("Few code documentation comments");
322
+ score -= 10;
323
+ }
324
+ return {
325
+ dimension: "documentation",
326
+ score: Math.max(0, score),
327
+ details: `README: ${existsSync(readmePath)}, Doc comments: ${docComments}`,
328
+ issues,
329
+ passed: score >= 70,
330
+ };
331
+ }
332
+ async function checkDependencies(dir) {
333
+ const issues = [];
334
+ let score = 100;
335
+ const pkgPath = join(dir, "package.json");
336
+ if (existsSync(pkgPath)) {
337
+ const pkg = JSON.parse(readFileSync(pkgPath, "utf-8"));
338
+ const deps = Object.keys(pkg.dependencies || {});
339
+ const devDeps = Object.keys(pkg.devDependencies || {});
340
+ if (deps.length > 50) {
341
+ issues.push(`${deps.length} dependencies (may be bloated)`);
342
+ score -= 10;
343
+ }
344
+ if (deps.length === 0 && devDeps.length === 0) {
345
+ issues.push("No dependencies declared");
346
+ score -= 10;
347
+ }
348
+ const deprecated = ["lodash", "moment", "request"];
349
+ for (const v of deprecated) {
350
+ if (deps.includes(v)) {
351
+ issues.push(`Uses ${v} (consider alternatives)`);
352
+ score -= 5;
353
+ }
354
+ }
355
+ }
356
+ const hasLock = existsSync(join(dir, "package-lock.json")) ||
357
+ existsSync(join(dir, "yarn.lock")) ||
358
+ existsSync(join(dir, "pnpm-lock.yaml"));
359
+ if (!hasLock) {
360
+ issues.push("No lock file found");
361
+ score -= 10;
362
+ }
363
+ return {
364
+ dimension: "dependencies",
365
+ score: Math.max(0, score),
366
+ details: `Dependencies: ${existsSync(pkgPath) ? "found" : "none"}, Lock file: ${hasLock}`,
367
+ issues,
368
+ passed: score >= 70,
369
+ };
370
+ }
371
+ async function checkBestPractices(dir) {
372
+ const issues = [];
373
+ let score = 100;
374
+ if (!existsSync(join(dir, ".gitignore"))) {
375
+ issues.push("No .gitignore found");
376
+ score -= 10;
377
+ }
378
+ if (existsSync(join(dir, "tsconfig.json"))) {
379
+ const tsconfig = JSON.parse(readFileSync(join(dir, "tsconfig.json"), "utf-8"));
380
+ if (!tsconfig.compilerOptions?.strict) {
381
+ issues.push("TypeScript strict mode not enabled");
382
+ score -= 10;
383
+ }
384
+ }
385
+ const hasLint = existsSync(join(dir, ".eslintrc")) ||
386
+ existsSync(join(dir, ".eslintrc.js")) ||
387
+ existsSync(join(dir, ".eslintrc.json")) ||
388
+ existsSync(join(dir, "eslint.config.js"));
389
+ if (!hasLint) {
390
+ issues.push("No ESLint configuration found");
391
+ score -= 10;
392
+ }
393
+ const tryCatch = countPattern(dir, /try\s*\{/g);
394
+ const asyncFiles = countPattern(dir, /async\s+function|async\s*\(/g);
395
+ if (asyncFiles > 5 && tryCatch < asyncFiles * 0.3) {
396
+ issues.push("Low error handling coverage");
397
+ score -= 10;
398
+ }
399
+ return {
400
+ dimension: "best_practices",
401
+ score: Math.max(0, score),
402
+ details: `Gitignore: ${existsSync(join(dir, ".gitignore"))}, Lint: ${hasLint}`,
403
+ issues,
404
+ passed: score >= 70,
405
+ };
406
+ }
407
+ // ─── Helpers ─────────────────────────────────────────────────
408
+ const SKIP_DIRS = new Set([
409
+ "node_modules",
410
+ ".git",
411
+ "dist",
412
+ "build",
413
+ ".next",
414
+ "coverage",
415
+ "__pycache__",
416
+ ]);
417
+ function countLines(dir) {
418
+ let total = 0;
419
+ const files = getFiles(dir, [
420
+ ".ts",
421
+ ".tsx",
422
+ ".js",
423
+ ".jsx",
424
+ ".py",
425
+ ".go",
426
+ ".rs",
427
+ ".sol",
428
+ ]);
429
+ for (const file of files) {
430
+ const content = readFileSync(file, "utf-8");
431
+ total += content.split("\n").length;
432
+ }
433
+ return total;
434
+ }
435
+ function countPattern(dir, pattern) {
436
+ let count = 0;
437
+ const files = getFiles(dir, [".ts", ".tsx", ".js", ".jsx", ".py", ".sol"]);
438
+ for (const file of files.slice(0, 200)) {
439
+ const content = readFileSync(file, "utf-8");
440
+ const matches = content.match(pattern);
441
+ if (matches)
442
+ count += matches.length;
443
+ }
444
+ return count;
445
+ }
446
+ function getFiles(dir, extensions) {
447
+ const files = [];
448
+ let entries;
449
+ try {
450
+ entries = readdirSync(dir);
451
+ }
452
+ catch {
453
+ return files;
454
+ }
455
+ for (const entry of entries) {
456
+ if (SKIP_DIRS.has(entry) || entry.startsWith("."))
457
+ continue;
458
+ const fullPath = join(dir, entry);
459
+ let stat;
460
+ try {
461
+ stat = statSync(fullPath);
462
+ }
463
+ catch {
464
+ continue;
465
+ }
466
+ if (stat.isDirectory()) {
467
+ files.push(...getFiles(fullPath, extensions));
468
+ }
469
+ else if (extensions.some((ext) => entry.endsWith(ext))) {
470
+ files.push(fullPath);
471
+ }
472
+ }
473
+ return files;
474
+ }
475
+ function countFiles(dir) {
476
+ return getFiles(dir, [
477
+ ".ts",
478
+ ".tsx",
479
+ ".js",
480
+ ".jsx",
481
+ ".py",
482
+ ".go",
483
+ ".rs",
484
+ ".sol",
485
+ ".md",
486
+ ".json",
487
+ ".yaml",
488
+ ".yml",
489
+ ]).length;
490
+ }
491
+ function getDirSize(dir) {
492
+ let size = 0;
493
+ let entries;
494
+ try {
495
+ entries = readdirSync(dir);
496
+ }
497
+ catch {
498
+ return 0;
499
+ }
500
+ for (const entry of entries) {
501
+ if (SKIP_DIRS.has(entry))
502
+ continue;
503
+ const fullPath = join(dir, entry);
504
+ let stat;
505
+ try {
506
+ stat = statSync(fullPath);
507
+ }
508
+ catch {
509
+ continue;
510
+ }
511
+ if (stat.isDirectory()) {
512
+ size += getDirSize(fullPath);
513
+ }
514
+ else {
515
+ size += stat.size;
516
+ }
517
+ }
518
+ return size;
519
+ }
520
+ function findLargeFiles(dir, maxSize) {
521
+ const large = [];
522
+ let entries;
523
+ try {
524
+ entries = readdirSync(dir);
525
+ }
526
+ catch {
527
+ return large;
528
+ }
529
+ for (const entry of entries) {
530
+ if (SKIP_DIRS.has(entry))
531
+ continue;
532
+ const fullPath = join(dir, entry);
533
+ let stat;
534
+ try {
535
+ stat = statSync(fullPath);
536
+ }
537
+ catch {
538
+ continue;
539
+ }
540
+ if (stat.isDirectory()) {
541
+ large.push(...findLargeFiles(fullPath, maxSize));
542
+ }
543
+ else if (stat.size > maxSize) {
544
+ large.push(fullPath);
545
+ }
546
+ }
547
+ return large;
548
+ }
549
+ function generateSummary(checks, score, requirements) {
550
+ const passed = checks.filter((c) => c.passed).length;
551
+ const total = checks.length;
552
+ const topIssues = checks.flatMap((c) => c.issues).slice(0, 3);
553
+ return (`Score: ${score}/100 (${passed}/${total} checks passed). ` +
554
+ `Requirements: ${requirements}. ` +
555
+ (topIssues.length > 0
556
+ ? `Top issues: ${topIssues.join("; ")}`
557
+ : "No major issues found."));
558
+ }
559
+ function generateRecommendations(checks) {
560
+ const recs = [];
561
+ for (const check of checks) {
562
+ if (!check.passed) {
563
+ recs.push(`Improve ${check.dimension}: ${check.issues[0] || "needs work"}`);
564
+ }
565
+ }
566
+ return recs.slice(0, 5);
567
+ }
568
+ //# sourceMappingURL=verify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/lib/verify.ts"],"names":[],"mappings":"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"}
package/dist/schemas.d.ts CHANGED
@@ -13,13 +13,13 @@ import { z } from "zod";
13
13
  * - Must be between 0.0001 and 10,000 ETH
14
14
  * - Allows optional decimal point
15
15
  */
16
- export declare const ethAmountSchema: z.ZodString;
16
+ export declare const ethAmountSchema: z.ZodEffects<z.ZodString, string, string>;
17
17
  /**
18
18
  * Validates ETH amounts for escrow operations (stricter bounds).
19
19
  * - Minimum 0.001 ETH
20
20
  * - Maximum 1000 ETH
21
21
  */
22
- export declare const escrowPaymentSchema: z.ZodString;
22
+ export declare const escrowPaymentSchema: z.ZodEffects<z.ZodString, string, string>;
23
23
  /**
24
24
  * Validates IPFS Content Identifiers (CIDs).
25
25
  * - CIDv0: Qm... (base58btc, 46 characters starting with Qm)
@@ -27,16 +27,16 @@ export declare const escrowPaymentSchema: z.ZodString;
27
27
  *
28
28
  * Also allows short strings (min 1) for test fixtures.
29
29
  */
30
- export declare const ipfsCidSchema: z.ZodString;
30
+ export declare const ipfsCidSchema: z.ZodEffects<z.ZodString, string, string>;
31
31
  /**
32
32
  * Validates Ethereum addresses using viem's isAddress.
33
33
  */
34
- export declare const addressSchema: z.ZodString & z.ZodType<`0x${string}`, string, z.core.$ZodTypeInternals<`0x${string}`, string>>;
34
+ export declare const addressSchema: z.ZodEffects<z.ZodString, `0x${string}`, string>;
35
35
  /**
36
36
  * Validates future timestamps for deadlines.
37
37
  * Must be a positive integer and within 1 year from now.
38
38
  */
39
- export declare const futureTimestampSchema: z.ZodNumber;
39
+ export declare const futureTimestampSchema: z.ZodEffects<z.ZodNumber, number, number>;
40
40
  /**
41
41
  * Sanitizes error messages before returning to clients.
42
42
  * Removes sensitive information like:
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB;;;;;GAKG;AACH,eAAO,MAAM,eAAe,aASzB,CAAC;AAEJ;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,aAS7B,CAAC;AAMJ;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,aAgBvB,CAAC;AAMJ;;GAEG;AACH,eAAO,MAAM,aAAa,iGAExB,CAAC;AAMH;;;GAGG;AACH,eAAO,MAAM,qBAAqB,aAY/B,CAAC;AAMJ;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAexD"}
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB;;;;;GAKG;AACH,eAAO,MAAM,eAAe,2CASzB,CAAC;AAEJ;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,2CAS7B,CAAC;AAMJ;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,2CAgBvB,CAAC;AAMJ;;GAEG;AACH,eAAO,MAAM,aAAa,kDAExB,CAAC;AAMH;;;GAGG;AACH,eAAO,MAAM,qBAAqB,2CAY/B,CAAC;AAMJ;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAexD"}
package/dist/server.d.ts CHANGED
@@ -1,31 +1,7 @@
1
1
  /**
2
2
  * COVENANT MCP Server — tool registration hub.
3
3
  *
4
- * Registers 70 MCP tools (all prefixed with corven_) across 9 contracts:
5
- * AgentRegistry (6): corven_register_agent, corven_get_agent, corven_find_workers,
6
- * corven_add_stake, corven_deactivate_agent, corven_get_all_agents
7
- * TaskEscrow (19): corven_create_task, corven_get_task, corven_submit_work, corven_verify_task,
8
- * corven_dispute_task, corven_create_task_with_priority, corven_create_milestone_task,
9
- * corven_submit_milestone, corven_verify_milestone, corven_get_milestone,
10
- * corven_get_milestone_count, corven_create_subtask, corven_get_child_tasks,
11
- * corven_submit_query, corven_respond_to_query, corven_get_query,
12
- * corven_get_query_count, corven_get_client_tasks, corven_get_worker_tasks
13
- * ReceiptVerifier (4): corven_get_receipts, corven_verify_receipt, corven_create_receipt, corven_get_receipt_count
14
- * Protocol (2): corven_get_stats, corven_get_leaderboard
15
- * OpenTaskMarket (11): corven_post_open_task, corven_get_open_task, corven_submit_bid, corven_get_bid,
16
- * corven_select_worker, corven_make_counter_offer, corven_accept_counter_offer,
17
- * corven_withdraw_bid, corven_cancel_open_task, corven_complete_open_task,
18
- * corven_reject_counter_offer
19
- * ParallelTaskBatch (7):corven_create_batch, corven_get_batch, corven_get_batch_status,
20
- * corven_aggregate_results, corven_get_batch_counter, corven_check_batch_submitted,
21
- * corven_get_aggregated_result
22
- * AgentCollective (7): corven_create_collective, corven_join_collective, corven_launch_collective_task,
23
- * corven_get_collective, corven_get_collective_counter, corven_submit_deliverable,
24
- * corven_claim_deliverable
25
- * DisputeArbitration (4):corven_file_dispute, corven_cast_vote, corven_get_dispute, corven_get_dispute_counter
26
- * AgentInsurance (10): corven_claim_insurance, corven_get_claim, corven_get_claim_counter,
27
- * corven_get_coverage_percent, corven_join_insurance_pool, corven_pay_premium,
28
- * corven_vote_on_claim, corven_pay_claim, corven_get_pool_balance, corven_get_member_info
4
+ * 12 files, ~70 tools. Settlement onchain, coordination offchain.
29
5
  */
30
6
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
31
7
  export declare function createServer(): McpServer;
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAYpE,wBAAgB,YAAY,IAAI,SAAS,CAqBxC"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAgCpE,wBAAgB,YAAY,IAAI,SAAS,CAyCxC"}