mcpman 0.1.1 → 0.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.
- package/README.md +68 -2
- package/dist/chunk-6X6Q6UZC.js +141 -0
- package/dist/index.cjs +1769 -356
- package/dist/index.js +1479 -308
- package/dist/trust-scorer-LYC6KZCD.js +77 -0
- package/dist/vault-service-UTZAV6N6.js +29 -0
- package/package.json +1 -1
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
// src/core/trust-scorer.ts
|
|
4
|
+
var WEIGHT_VULNS = 0.3;
|
|
5
|
+
var WEIGHT_DOWNLOADS = 0.2;
|
|
6
|
+
var WEIGHT_AGE = 0.15;
|
|
7
|
+
var WEIGHT_PUBLISH_FREQ = 0.15;
|
|
8
|
+
var WEIGHT_MAINTAINERS = 0.2;
|
|
9
|
+
function vulnScore(vulns) {
|
|
10
|
+
let score = 100;
|
|
11
|
+
for (const v of vulns) {
|
|
12
|
+
if (v.severity === "critical") score -= 25;
|
|
13
|
+
else if (v.severity === "high") score -= 15;
|
|
14
|
+
else if (v.severity === "moderate") score -= 10;
|
|
15
|
+
else score -= 5;
|
|
16
|
+
}
|
|
17
|
+
return Math.max(0, score);
|
|
18
|
+
}
|
|
19
|
+
function downloadScore(weeklyDownloads) {
|
|
20
|
+
if (weeklyDownloads <= 0) return 0;
|
|
21
|
+
if (weeklyDownloads >= 1e6) return 100;
|
|
22
|
+
if (weeklyDownloads >= 1e5) return 80;
|
|
23
|
+
if (weeklyDownloads >= 1e4) return 60;
|
|
24
|
+
if (weeklyDownloads >= 1e3) return 40;
|
|
25
|
+
if (weeklyDownloads >= 100) return 20;
|
|
26
|
+
return 10;
|
|
27
|
+
}
|
|
28
|
+
function ageScore(packageAge) {
|
|
29
|
+
if (packageAge <= 0) return 0;
|
|
30
|
+
if (packageAge >= 730) return 100;
|
|
31
|
+
if (packageAge >= 365) return 80;
|
|
32
|
+
if (packageAge >= 180) return 60;
|
|
33
|
+
if (packageAge >= 30) return 30;
|
|
34
|
+
return 10;
|
|
35
|
+
}
|
|
36
|
+
function publishScore(lastPublish) {
|
|
37
|
+
const daysSince = Math.floor((Date.now() - new Date(lastPublish).getTime()) / 864e5);
|
|
38
|
+
if (daysSince <= 30) return 100;
|
|
39
|
+
if (daysSince <= 90) return 80;
|
|
40
|
+
if (daysSince <= 180) return 60;
|
|
41
|
+
if (daysSince <= 365) return 40;
|
|
42
|
+
return 20;
|
|
43
|
+
}
|
|
44
|
+
function maintainerScore(count, deprecated) {
|
|
45
|
+
let score = 0;
|
|
46
|
+
if (count >= 3) score = 90;
|
|
47
|
+
else if (count === 2) score = 70;
|
|
48
|
+
else score = 50;
|
|
49
|
+
if (!deprecated) score += 10;
|
|
50
|
+
return Math.min(100, score);
|
|
51
|
+
}
|
|
52
|
+
function toRiskLevel(score) {
|
|
53
|
+
if (score >= 80) return "LOW";
|
|
54
|
+
if (score >= 50) return "MEDIUM";
|
|
55
|
+
if (score >= 20) return "HIGH";
|
|
56
|
+
return "CRITICAL";
|
|
57
|
+
}
|
|
58
|
+
function computeTrustScore(metadata, vulns) {
|
|
59
|
+
if (!metadata) {
|
|
60
|
+
const vScore = vulnScore(vulns);
|
|
61
|
+
const score2 = Math.round(vScore * WEIGHT_VULNS * 100) / 100;
|
|
62
|
+
return { score: Math.round(score2), riskLevel: toRiskLevel(score2) };
|
|
63
|
+
}
|
|
64
|
+
const scores = {
|
|
65
|
+
vulns: vulnScore(vulns),
|
|
66
|
+
downloads: downloadScore(metadata.weeklyDownloads),
|
|
67
|
+
age: ageScore(metadata.packageAge),
|
|
68
|
+
publish: publishScore(metadata.lastPublish),
|
|
69
|
+
maintainers: maintainerScore(metadata.maintainerCount, metadata.deprecated)
|
|
70
|
+
};
|
|
71
|
+
const weighted = scores.vulns * WEIGHT_VULNS + scores.downloads * WEIGHT_DOWNLOADS + scores.age * WEIGHT_AGE + scores.publish * WEIGHT_PUBLISH_FREQ + scores.maintainers * WEIGHT_MAINTAINERS;
|
|
72
|
+
const score = Math.min(100, Math.max(0, Math.round(weighted)));
|
|
73
|
+
return { score, riskLevel: toRiskLevel(score) };
|
|
74
|
+
}
|
|
75
|
+
export {
|
|
76
|
+
computeTrustScore
|
|
77
|
+
};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
clearPasswordCache,
|
|
4
|
+
decrypt,
|
|
5
|
+
encrypt,
|
|
6
|
+
getMasterPassword,
|
|
7
|
+
getSecret,
|
|
8
|
+
getSecretsForServer,
|
|
9
|
+
getVaultPath,
|
|
10
|
+
listSecrets,
|
|
11
|
+
readVault,
|
|
12
|
+
removeSecret,
|
|
13
|
+
setSecret,
|
|
14
|
+
writeVault
|
|
15
|
+
} from "./chunk-6X6Q6UZC.js";
|
|
16
|
+
export {
|
|
17
|
+
clearPasswordCache,
|
|
18
|
+
decrypt,
|
|
19
|
+
encrypt,
|
|
20
|
+
getMasterPassword,
|
|
21
|
+
getSecret,
|
|
22
|
+
getSecretsForServer,
|
|
23
|
+
getVaultPath,
|
|
24
|
+
listSecrets,
|
|
25
|
+
readVault,
|
|
26
|
+
removeSecret,
|
|
27
|
+
setSecret,
|
|
28
|
+
writeVault
|
|
29
|
+
};
|