vaspera 2.5.0 → 2.7.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/CHANGELOG.md +45 -0
- package/dist/agents/agent-integrity.test.d.ts +5 -0
- package/dist/agents/agent-integrity.test.d.ts.map +1 -0
- package/dist/agents/agent-integrity.test.js +364 -0
- package/dist/agents/agent-integrity.test.js.map +1 -0
- package/dist/agents/agent-privacy.test.d.ts +5 -0
- package/dist/agents/agent-privacy.test.d.ts.map +1 -0
- package/dist/agents/agent-privacy.test.js +373 -0
- package/dist/agents/agent-privacy.test.js.map +1 -0
- package/dist/compliance/mapper.d.ts.map +1 -1
- package/dist/compliance/mapper.js +2 -2
- package/dist/compliance/mapper.js.map +1 -1
- package/dist/compliance/nist-800-53.d.ts +34 -0
- package/dist/compliance/nist-800-53.d.ts.map +1 -0
- package/dist/compliance/nist-800-53.js +664 -0
- package/dist/compliance/nist-800-53.js.map +1 -0
- package/dist/config/flags.test.d.ts +5 -0
- package/dist/config/flags.test.d.ts.map +1 -0
- package/dist/config/flags.test.js +489 -0
- package/dist/config/flags.test.js.map +1 -0
- package/dist/enterprise/policy/opa.test.js +4 -1
- package/dist/enterprise/policy/opa.test.js.map +1 -1
- package/dist/http-server.js +2 -1
- package/dist/http-server.js.map +1 -1
- package/dist/observability/otel.test.d.ts +5 -0
- package/dist/observability/otel.test.d.ts.map +1 -0
- package/dist/observability/otel.test.js +269 -0
- package/dist/observability/otel.test.js.map +1 -0
- package/dist/plugins/loader.test.d.ts +5 -0
- package/dist/plugins/loader.test.d.ts.map +1 -0
- package/dist/plugins/loader.test.js +337 -0
- package/dist/plugins/loader.test.js.map +1 -0
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,51 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [2.7.0] - 2026-04-26
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
#### Plan Enforcement
|
|
13
|
+
- New plan-limits system for free/pro/enterprise tiers
|
|
14
|
+
- Certification monthly limits enforced at API level
|
|
15
|
+
- Agent count limits based on subscription plan
|
|
16
|
+
- Compliance framework access gating (SOC2 free, HIPAA/NIST pro+)
|
|
17
|
+
- 403 responses with `PLAN_LIMIT_EXCEEDED` code and upgrade prompts
|
|
18
|
+
|
|
19
|
+
#### Plan Limits
|
|
20
|
+
|
|
21
|
+
| Limit | Free | Pro | Enterprise |
|
|
22
|
+
|-------|------|-----|------------|
|
|
23
|
+
| Certifications/month | 3 | 50 | Unlimited |
|
|
24
|
+
| Projects | 2 | 20 | Unlimited |
|
|
25
|
+
| Agents | 3 | 7 | All |
|
|
26
|
+
| Frameworks | SOC2 | SOC2, HIPAA, NIST | All |
|
|
27
|
+
| Red team | ❌ | ❌ | ✓ |
|
|
28
|
+
|
|
29
|
+
## [2.6.0] - 2026-04-26
|
|
30
|
+
|
|
31
|
+
### Added
|
|
32
|
+
|
|
33
|
+
#### Test Coverage
|
|
34
|
+
- 147 new tests across 5 test files
|
|
35
|
+
- `agent-integrity.test.ts` - Consensus analysis and outlier detection
|
|
36
|
+
- `agent-privacy.test.ts` - PII detection with Luhn validation
|
|
37
|
+
- `otel.test.ts` - OpenTelemetry metrics and tracing
|
|
38
|
+
- `loader.test.ts` - Plugin registry and sandboxed execution
|
|
39
|
+
- `flags.test.ts` - Feature flags and config loading
|
|
40
|
+
|
|
41
|
+
#### Feature Flags System
|
|
42
|
+
- New `.vaspera/config.yaml` configuration format
|
|
43
|
+
- Per-agent weights and model selection
|
|
44
|
+
- Per-scanner timeouts and custom rules
|
|
45
|
+
- Feature toggles for multiModel, costTracking, autofix, etc.
|
|
46
|
+
|
|
47
|
+
#### Plugin System
|
|
48
|
+
- Scanner plugin architecture with manifest schema
|
|
49
|
+
- Local plugins from `.vaspera/plugins/`
|
|
50
|
+
- npm plugins from `vaspera-scanner-*` packages
|
|
51
|
+
- Sandboxed execution in child processes
|
|
52
|
+
|
|
8
53
|
## [2.5.0] - 2026-04-24
|
|
9
54
|
|
|
10
55
|
### Added
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-integrity.test.d.ts","sourceRoot":"","sources":["../../src/agents/agent-integrity.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -0,0 +1,364 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unit tests for agent-integrity module
|
|
3
|
+
*/
|
|
4
|
+
import { describe, it, expect } from "vitest";
|
|
5
|
+
import { analyzeConsensus, hashFinding, verifyFindingChain, detectCrossContamination, runIntegrityCheck, integrityToFindings, } from "./agent-integrity.js";
|
|
6
|
+
// Helper to create mock agent contribution
|
|
7
|
+
function createMockContribution(agent, findings, options) {
|
|
8
|
+
return {
|
|
9
|
+
agent,
|
|
10
|
+
findings,
|
|
11
|
+
severity: {
|
|
12
|
+
critical: options?.severity?.critical ?? 0,
|
|
13
|
+
high: options?.severity?.high ?? Math.floor(findings * 0.2),
|
|
14
|
+
medium: options?.severity?.medium ?? Math.floor(findings * 0.3),
|
|
15
|
+
low: options?.severity?.low ?? Math.floor(findings * 0.3),
|
|
16
|
+
info: options?.severity?.info ?? Math.floor(findings * 0.2),
|
|
17
|
+
},
|
|
18
|
+
confidence: options?.confidence ?? 85,
|
|
19
|
+
timestamp: options?.timestamp ?? new Date().toISOString(),
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
// Helper to create mock finding
|
|
23
|
+
function createMockFinding(id, category, severity = "medium") {
|
|
24
|
+
return {
|
|
25
|
+
id,
|
|
26
|
+
severity,
|
|
27
|
+
category,
|
|
28
|
+
description: `Mock finding: ${category}`,
|
|
29
|
+
evidence: `File: src/test.ts:10`,
|
|
30
|
+
confidence: 80,
|
|
31
|
+
verifications: [],
|
|
32
|
+
created_at: new Date().toISOString(),
|
|
33
|
+
scanner_source: undefined,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
describe("analyzeConsensus", () => {
|
|
37
|
+
it("returns ConsensusAnalysis structure", () => {
|
|
38
|
+
const contributions = [
|
|
39
|
+
createMockContribution("security", 10),
|
|
40
|
+
createMockContribution("reliability", 8),
|
|
41
|
+
createMockContribution("typesafety", 7),
|
|
42
|
+
];
|
|
43
|
+
const result = analyzeConsensus(contributions);
|
|
44
|
+
expect(result).toHaveProperty("totalAgents");
|
|
45
|
+
expect(result).toHaveProperty("activeAgents");
|
|
46
|
+
expect(result).toHaveProperty("findingsDistribution");
|
|
47
|
+
expect(result).toHaveProperty("dominationScore");
|
|
48
|
+
expect(result).toHaveProperty("entropyScore");
|
|
49
|
+
expect(result).toHaveProperty("outlierAgents");
|
|
50
|
+
expect(result).toHaveProperty("suspiciousPatterns");
|
|
51
|
+
expect(result).toHaveProperty("isHealthy");
|
|
52
|
+
});
|
|
53
|
+
it("correctly counts total and active agents", () => {
|
|
54
|
+
const contributions = [
|
|
55
|
+
createMockContribution("security", 10),
|
|
56
|
+
createMockContribution("reliability", 0),
|
|
57
|
+
createMockContribution("typesafety", 5),
|
|
58
|
+
];
|
|
59
|
+
const result = analyzeConsensus(contributions);
|
|
60
|
+
expect(result.totalAgents).toBe(3);
|
|
61
|
+
expect(result.activeAgents).toBe(2);
|
|
62
|
+
});
|
|
63
|
+
it("detects domination when single agent has >70% of findings", () => {
|
|
64
|
+
const contributions = [
|
|
65
|
+
createMockContribution("security", 80),
|
|
66
|
+
createMockContribution("reliability", 10),
|
|
67
|
+
createMockContribution("typesafety", 10),
|
|
68
|
+
];
|
|
69
|
+
const result = analyzeConsensus(contributions);
|
|
70
|
+
expect(result.dominationScore).toBe(80);
|
|
71
|
+
expect(result.suspiciousPatterns.some((p) => p.type === "domination")).toBe(true);
|
|
72
|
+
expect(result.isHealthy).toBe(false);
|
|
73
|
+
});
|
|
74
|
+
it("does not flag domination for balanced contributions", () => {
|
|
75
|
+
const contributions = [
|
|
76
|
+
createMockContribution("security", 10),
|
|
77
|
+
createMockContribution("reliability", 12),
|
|
78
|
+
createMockContribution("typesafety", 11),
|
|
79
|
+
];
|
|
80
|
+
const result = analyzeConsensus(contributions);
|
|
81
|
+
expect(result.dominationScore).toBeLessThan(70);
|
|
82
|
+
expect(result.suspiciousPatterns.some((p) => p.type === "domination")).toBe(false);
|
|
83
|
+
});
|
|
84
|
+
it("detects low entropy when contributions are suspiciously uniform", () => {
|
|
85
|
+
const contributions = [
|
|
86
|
+
createMockContribution("security", 1),
|
|
87
|
+
createMockContribution("reliability", 1),
|
|
88
|
+
createMockContribution("typesafety", 1),
|
|
89
|
+
createMockContribution("redteam", 1),
|
|
90
|
+
];
|
|
91
|
+
const result = analyzeConsensus(contributions);
|
|
92
|
+
// Perfect uniformity = 100% entropy, so this should pass
|
|
93
|
+
expect(result.entropyScore).toBe(100);
|
|
94
|
+
expect(result.suspiciousPatterns.some((p) => p.type === "low-entropy")).toBe(false);
|
|
95
|
+
});
|
|
96
|
+
it("detects outlier agents", () => {
|
|
97
|
+
// Need more agents to dilute outlier's impact on stdDev calculation
|
|
98
|
+
// With 6 agents where 5 have similar values, the outlier's deviation
|
|
99
|
+
// will exceed 2*stdDev threshold
|
|
100
|
+
const contributions = [
|
|
101
|
+
createMockContribution("security", 10),
|
|
102
|
+
createMockContribution("reliability", 12),
|
|
103
|
+
createMockContribution("typesafety", 8),
|
|
104
|
+
createMockContribution("quality", 11),
|
|
105
|
+
createMockContribution("performance", 9),
|
|
106
|
+
createMockContribution("redteam", 500), // Extreme outlier > 2*stdDev
|
|
107
|
+
];
|
|
108
|
+
const result = analyzeConsensus(contributions);
|
|
109
|
+
expect(result.outlierAgents).toContain("redteam");
|
|
110
|
+
expect(result.suspiciousPatterns.some((p) => p.type === "outlier")).toBe(true);
|
|
111
|
+
});
|
|
112
|
+
it("handles empty contributions array", () => {
|
|
113
|
+
const result = analyzeConsensus([]);
|
|
114
|
+
expect(result.totalAgents).toBe(0);
|
|
115
|
+
expect(result.activeAgents).toBe(0);
|
|
116
|
+
expect(result.isHealthy).toBe(true);
|
|
117
|
+
});
|
|
118
|
+
it("handles single contribution without crashing", () => {
|
|
119
|
+
const contributions = [createMockContribution("security", 10)];
|
|
120
|
+
const result = analyzeConsensus(contributions);
|
|
121
|
+
expect(result.totalAgents).toBe(1);
|
|
122
|
+
expect(result.dominationScore).toBe(100);
|
|
123
|
+
});
|
|
124
|
+
it("detects timing anomalies for suspiciously fast completions", () => {
|
|
125
|
+
const now = Date.now();
|
|
126
|
+
const contributions = [
|
|
127
|
+
createMockContribution("security", 10, { timestamp: new Date(now).toISOString() }),
|
|
128
|
+
createMockContribution("reliability", 8, { timestamp: new Date(now + 10).toISOString() }),
|
|
129
|
+
createMockContribution("typesafety", 7, { timestamp: new Date(now + 20).toISOString() }),
|
|
130
|
+
];
|
|
131
|
+
const result = analyzeConsensus(contributions);
|
|
132
|
+
expect(result.suspiciousPatterns.some((p) => p.type === "timing-anomaly")).toBe(true);
|
|
133
|
+
});
|
|
134
|
+
});
|
|
135
|
+
describe("hashFinding", () => {
|
|
136
|
+
it("returns consistent hash for same input", () => {
|
|
137
|
+
const finding = {
|
|
138
|
+
severity: "high",
|
|
139
|
+
category: "injection",
|
|
140
|
+
description: "SQL injection vulnerability",
|
|
141
|
+
evidence: "Line 42: user input directly used in query",
|
|
142
|
+
};
|
|
143
|
+
const hash1 = hashFinding(finding);
|
|
144
|
+
const hash2 = hashFinding(finding);
|
|
145
|
+
expect(hash1).toBe(hash2);
|
|
146
|
+
expect(hash1).toHaveLength(64); // SHA256 hex
|
|
147
|
+
});
|
|
148
|
+
it("returns different hash for different input", () => {
|
|
149
|
+
const finding1 = {
|
|
150
|
+
severity: "high",
|
|
151
|
+
category: "injection",
|
|
152
|
+
description: "SQL injection",
|
|
153
|
+
evidence: "Line 42",
|
|
154
|
+
};
|
|
155
|
+
const finding2 = {
|
|
156
|
+
severity: "high",
|
|
157
|
+
category: "injection",
|
|
158
|
+
description: "Different description",
|
|
159
|
+
evidence: "Line 42",
|
|
160
|
+
};
|
|
161
|
+
expect(hashFinding(finding1)).not.toBe(hashFinding(finding2));
|
|
162
|
+
});
|
|
163
|
+
});
|
|
164
|
+
describe("verifyFindingChain", () => {
|
|
165
|
+
it("returns VerificationChain structure", () => {
|
|
166
|
+
const finding = {
|
|
167
|
+
severity: "high",
|
|
168
|
+
category: "injection",
|
|
169
|
+
description: "SQL injection",
|
|
170
|
+
evidence: "Line 42",
|
|
171
|
+
};
|
|
172
|
+
const result = verifyFindingChain("f1", finding, []);
|
|
173
|
+
expect(result).toHaveProperty("findingId");
|
|
174
|
+
expect(result).toHaveProperty("originalHash");
|
|
175
|
+
expect(result).toHaveProperty("verifications");
|
|
176
|
+
expect(result).toHaveProperty("isValid");
|
|
177
|
+
});
|
|
178
|
+
it("marks empty verification chain as valid", () => {
|
|
179
|
+
const finding = {
|
|
180
|
+
severity: "high",
|
|
181
|
+
category: "injection",
|
|
182
|
+
description: "SQL injection",
|
|
183
|
+
evidence: "Line 42",
|
|
184
|
+
};
|
|
185
|
+
const result = verifyFindingChain("f1", finding, []);
|
|
186
|
+
expect(result.isValid).toBe(true);
|
|
187
|
+
expect(result.verifications).toHaveLength(0);
|
|
188
|
+
});
|
|
189
|
+
it("builds verification chain from verifications", () => {
|
|
190
|
+
const finding = {
|
|
191
|
+
severity: "high",
|
|
192
|
+
category: "injection",
|
|
193
|
+
description: "SQL injection",
|
|
194
|
+
evidence: "Line 42",
|
|
195
|
+
};
|
|
196
|
+
const verifications = [
|
|
197
|
+
{
|
|
198
|
+
verifying_agent: "reliability",
|
|
199
|
+
verdict: "confirmed",
|
|
200
|
+
evidence: "Confirmed via static analysis",
|
|
201
|
+
created_at: new Date().toISOString(),
|
|
202
|
+
},
|
|
203
|
+
{
|
|
204
|
+
verifying_agent: "typesafety",
|
|
205
|
+
verdict: "confirmed",
|
|
206
|
+
evidence: "Type coercion detected",
|
|
207
|
+
created_at: new Date().toISOString(),
|
|
208
|
+
},
|
|
209
|
+
];
|
|
210
|
+
const result = verifyFindingChain("f1", finding, verifications);
|
|
211
|
+
expect(result.verifications).toHaveLength(2);
|
|
212
|
+
expect(result.verifications[0].agent).toBe("reliability");
|
|
213
|
+
expect(result.verifications[1].agent).toBe("typesafety");
|
|
214
|
+
});
|
|
215
|
+
});
|
|
216
|
+
describe("detectCrossContamination", () => {
|
|
217
|
+
it("returns empty array when no duplicates exist", () => {
|
|
218
|
+
const agentFindings = {
|
|
219
|
+
security: [createMockFinding("f1", "injection")],
|
|
220
|
+
reliability: [createMockFinding("f2", "error-handling")],
|
|
221
|
+
typesafety: [createMockFinding("f3", "type-safety")],
|
|
222
|
+
};
|
|
223
|
+
const result = detectCrossContamination(agentFindings);
|
|
224
|
+
expect(result).toHaveLength(0);
|
|
225
|
+
});
|
|
226
|
+
it("detects cross-contamination when >5 identical findings across agents", () => {
|
|
227
|
+
const sharedFindings = Array.from({ length: 6 }, (_, i) => createMockFinding(`shared-${i}`, "injection"));
|
|
228
|
+
// Make descriptions identical to produce same hash
|
|
229
|
+
for (const f of sharedFindings) {
|
|
230
|
+
f.description = "Identical vulnerability description";
|
|
231
|
+
f.evidence = "Identical evidence";
|
|
232
|
+
}
|
|
233
|
+
const agentFindings = {
|
|
234
|
+
security: sharedFindings.slice(0, 3),
|
|
235
|
+
reliability: sharedFindings.slice(0, 3), // Same findings = contamination
|
|
236
|
+
};
|
|
237
|
+
// Need to create copies with same content
|
|
238
|
+
const findings1 = [
|
|
239
|
+
{ ...createMockFinding("f1", "injection"), description: "Test", evidence: "E1" },
|
|
240
|
+
{ ...createMockFinding("f2", "injection"), description: "Test2", evidence: "E2" },
|
|
241
|
+
{ ...createMockFinding("f3", "injection"), description: "Test3", evidence: "E3" },
|
|
242
|
+
{ ...createMockFinding("f4", "injection"), description: "Test4", evidence: "E4" },
|
|
243
|
+
{ ...createMockFinding("f5", "injection"), description: "Test5", evidence: "E5" },
|
|
244
|
+
{ ...createMockFinding("f6", "injection"), description: "Test6", evidence: "E6" },
|
|
245
|
+
];
|
|
246
|
+
const findings2 = findings1.map((f) => ({ ...f, id: f.id + "-copy" }));
|
|
247
|
+
const contaminatedFindings = {
|
|
248
|
+
security: findings1,
|
|
249
|
+
reliability: findings2,
|
|
250
|
+
};
|
|
251
|
+
const result = detectCrossContamination(contaminatedFindings);
|
|
252
|
+
expect(result.some((f) => f.type === "cross-contamination")).toBe(true);
|
|
253
|
+
});
|
|
254
|
+
});
|
|
255
|
+
describe("runIntegrityCheck", () => {
|
|
256
|
+
it("returns complete integrity check result", async () => {
|
|
257
|
+
const contributions = [
|
|
258
|
+
createMockContribution("security", 10),
|
|
259
|
+
createMockContribution("reliability", 8),
|
|
260
|
+
];
|
|
261
|
+
const agentFindings = {
|
|
262
|
+
security: [createMockFinding("f1", "injection")],
|
|
263
|
+
reliability: [createMockFinding("f2", "error-handling")],
|
|
264
|
+
};
|
|
265
|
+
const result = await runIntegrityCheck(contributions, agentFindings);
|
|
266
|
+
expect(result).toHaveProperty("consensus");
|
|
267
|
+
expect(result).toHaveProperty("crossContamination");
|
|
268
|
+
expect(result).toHaveProperty("hashVerification");
|
|
269
|
+
expect(result).toHaveProperty("overallHealth");
|
|
270
|
+
expect(result).toHaveProperty("recommendations");
|
|
271
|
+
});
|
|
272
|
+
it("reports healthy status for good consensus", async () => {
|
|
273
|
+
const contributions = [
|
|
274
|
+
createMockContribution("security", 10),
|
|
275
|
+
createMockContribution("reliability", 12),
|
|
276
|
+
createMockContribution("typesafety", 11),
|
|
277
|
+
];
|
|
278
|
+
const agentFindings = {};
|
|
279
|
+
const result = await runIntegrityCheck(contributions, agentFindings);
|
|
280
|
+
expect(result.overallHealth).toBe("healthy");
|
|
281
|
+
});
|
|
282
|
+
it("reports warning for domination issues", async () => {
|
|
283
|
+
const contributions = [
|
|
284
|
+
createMockContribution("security", 90),
|
|
285
|
+
createMockContribution("reliability", 5),
|
|
286
|
+
createMockContribution("typesafety", 5),
|
|
287
|
+
];
|
|
288
|
+
const agentFindings = {};
|
|
289
|
+
const result = await runIntegrityCheck(contributions, agentFindings);
|
|
290
|
+
expect(result.overallHealth).toBe("warning");
|
|
291
|
+
});
|
|
292
|
+
it("checks cross-contamination when option enabled", async () => {
|
|
293
|
+
const contributions = [
|
|
294
|
+
createMockContribution("security", 10),
|
|
295
|
+
createMockContribution("reliability", 10),
|
|
296
|
+
];
|
|
297
|
+
const agentFindings = {
|
|
298
|
+
security: [createMockFinding("f1", "injection")],
|
|
299
|
+
reliability: [createMockFinding("f2", "error-handling")],
|
|
300
|
+
};
|
|
301
|
+
const result = await runIntegrityCheck(contributions, agentFindings, {
|
|
302
|
+
checkCrossContamination: true,
|
|
303
|
+
});
|
|
304
|
+
expect(result.crossContamination).toBeDefined();
|
|
305
|
+
expect(Array.isArray(result.crossContamination)).toBe(true);
|
|
306
|
+
});
|
|
307
|
+
it("verifies hashes when option enabled", async () => {
|
|
308
|
+
const contributions = [createMockContribution("security", 1)];
|
|
309
|
+
const agentFindings = {
|
|
310
|
+
security: [createMockFinding("f1", "injection")],
|
|
311
|
+
};
|
|
312
|
+
const result = await runIntegrityCheck(contributions, agentFindings, {
|
|
313
|
+
verifyHashes: true,
|
|
314
|
+
});
|
|
315
|
+
expect(result.hashVerification.verified).toBeGreaterThanOrEqual(0);
|
|
316
|
+
expect(Array.isArray(result.hashVerification.chains)).toBe(true);
|
|
317
|
+
});
|
|
318
|
+
});
|
|
319
|
+
describe("integrityToFindings", () => {
|
|
320
|
+
it("converts integrity findings to certification findings", () => {
|
|
321
|
+
const contributions = [
|
|
322
|
+
createMockContribution("security", 90),
|
|
323
|
+
createMockContribution("reliability", 5),
|
|
324
|
+
];
|
|
325
|
+
const analysis = analyzeConsensus(contributions);
|
|
326
|
+
const crossContamination = [];
|
|
327
|
+
const result = integrityToFindings(analysis, crossContamination);
|
|
328
|
+
expect(Array.isArray(result)).toBe(true);
|
|
329
|
+
if (analysis.suspiciousPatterns.length > 0) {
|
|
330
|
+
expect(result.length).toBeGreaterThan(0);
|
|
331
|
+
expect(result[0]).toHaveProperty("id");
|
|
332
|
+
expect(result[0]).toHaveProperty("severity");
|
|
333
|
+
expect(result[0]).toHaveProperty("category");
|
|
334
|
+
expect(result[0].category).toBe("consensus-manipulation");
|
|
335
|
+
}
|
|
336
|
+
});
|
|
337
|
+
it("generates unique IDs for each finding", () => {
|
|
338
|
+
const contributions = [
|
|
339
|
+
createMockContribution("security", 100),
|
|
340
|
+
createMockContribution("reliability", 1),
|
|
341
|
+
];
|
|
342
|
+
const analysis = analyzeConsensus(contributions);
|
|
343
|
+
// Add some findings to test
|
|
344
|
+
analysis.suspiciousPatterns.push({
|
|
345
|
+
type: "domination",
|
|
346
|
+
severity: "high",
|
|
347
|
+
description: "Test",
|
|
348
|
+
evidence: "Test",
|
|
349
|
+
recommendation: "Test",
|
|
350
|
+
});
|
|
351
|
+
analysis.suspiciousPatterns.push({
|
|
352
|
+
type: "outlier",
|
|
353
|
+
severity: "medium",
|
|
354
|
+
description: "Test2",
|
|
355
|
+
evidence: "Test2",
|
|
356
|
+
recommendation: "Test2",
|
|
357
|
+
});
|
|
358
|
+
const result = integrityToFindings(analysis, []);
|
|
359
|
+
const ids = result.map((f) => f.id);
|
|
360
|
+
const uniqueIds = new Set(ids);
|
|
361
|
+
expect(uniqueIds.size).toBe(ids.length);
|
|
362
|
+
});
|
|
363
|
+
});
|
|
364
|
+
//# sourceMappingURL=agent-integrity.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-integrity.test.js","sourceRoot":"","sources":["../../src/agents/agent-integrity.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-privacy.test.d.ts","sourceRoot":"","sources":["../../src/agents/agent-privacy.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|