vaspera 2.5.0 → 2.8.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 (67) hide show
  1. package/CHANGELOG.md +62 -0
  2. package/dist/agents/adversary/config.d.ts +92 -0
  3. package/dist/agents/adversary/config.d.ts.map +1 -0
  4. package/dist/agents/adversary/config.js +361 -0
  5. package/dist/agents/adversary/config.js.map +1 -0
  6. package/dist/agents/adversary/index.d.ts +34 -0
  7. package/dist/agents/adversary/index.d.ts.map +1 -0
  8. package/dist/agents/adversary/index.js +756 -0
  9. package/dist/agents/adversary/index.js.map +1 -0
  10. package/dist/agents/adversary/types.d.ts +351 -0
  11. package/dist/agents/adversary/types.d.ts.map +1 -0
  12. package/dist/agents/adversary/types.js +12 -0
  13. package/dist/agents/adversary/types.js.map +1 -0
  14. package/dist/agents/agent-integrity.test.d.ts +5 -0
  15. package/dist/agents/agent-integrity.test.d.ts.map +1 -0
  16. package/dist/agents/agent-integrity.test.js +364 -0
  17. package/dist/agents/agent-integrity.test.js.map +1 -0
  18. package/dist/agents/agent-privacy.test.d.ts +5 -0
  19. package/dist/agents/agent-privacy.test.d.ts.map +1 -0
  20. package/dist/agents/agent-privacy.test.js +373 -0
  21. package/dist/agents/agent-privacy.test.js.map +1 -0
  22. package/dist/agents/index.d.ts +1 -0
  23. package/dist/agents/index.d.ts.map +1 -1
  24. package/dist/agents/index.js +2 -0
  25. package/dist/agents/index.js.map +1 -1
  26. package/dist/certification/consensus.test.js +2 -0
  27. package/dist/certification/consensus.test.js.map +1 -1
  28. package/dist/certification/store.d.ts.map +1 -1
  29. package/dist/certification/store.js +4 -0
  30. package/dist/certification/store.js.map +1 -1
  31. package/dist/certification/types.d.ts +2 -2
  32. package/dist/certification/types.d.ts.map +1 -1
  33. package/dist/certification/types.js +2 -0
  34. package/dist/certification/types.js.map +1 -1
  35. package/dist/compliance/mapper.d.ts.map +1 -1
  36. package/dist/compliance/mapper.js +2 -2
  37. package/dist/compliance/mapper.js.map +1 -1
  38. package/dist/compliance/nist-800-53.d.ts +34 -0
  39. package/dist/compliance/nist-800-53.d.ts.map +1 -0
  40. package/dist/compliance/nist-800-53.js +664 -0
  41. package/dist/compliance/nist-800-53.js.map +1 -0
  42. package/dist/config/flags.test.d.ts +5 -0
  43. package/dist/config/flags.test.d.ts.map +1 -0
  44. package/dist/config/flags.test.js +489 -0
  45. package/dist/config/flags.test.js.map +1 -0
  46. package/dist/enterprise/policy/opa.test.js +4 -1
  47. package/dist/enterprise/policy/opa.test.js.map +1 -1
  48. package/dist/http-server.js +2 -1
  49. package/dist/http-server.js.map +1 -1
  50. package/dist/index.js.map +1 -1
  51. package/dist/observability/otel.test.d.ts +5 -0
  52. package/dist/observability/otel.test.d.ts.map +1 -0
  53. package/dist/observability/otel.test.js +269 -0
  54. package/dist/observability/otel.test.js.map +1 -0
  55. package/dist/plugins/loader.test.d.ts +5 -0
  56. package/dist/plugins/loader.test.d.ts.map +1 -0
  57. package/dist/plugins/loader.test.js +337 -0
  58. package/dist/plugins/loader.test.js.map +1 -0
  59. package/dist/sbom/provenance.test.js +2 -2
  60. package/dist/sbom/provenance.test.js.map +1 -1
  61. package/dist/scanners/agent/manifest-audit.d.ts.map +1 -1
  62. package/dist/scanners/agent/manifest-audit.js +30 -18
  63. package/dist/scanners/agent/manifest-audit.js.map +1 -1
  64. package/dist/scanners/dependencies.d.ts.map +1 -1
  65. package/dist/scanners/dependencies.js +1 -2
  66. package/dist/scanners/dependencies.js.map +1 -1
  67. package/package.json +12 -3
@@ -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,5 @@
1
+ /**
2
+ * Unit tests for agent-privacy module
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=agent-privacy.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-privacy.test.d.ts","sourceRoot":"","sources":["../../src/agents/agent-privacy.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}