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.
Files changed (33) hide show
  1. package/CHANGELOG.md +45 -0
  2. package/dist/agents/agent-integrity.test.d.ts +5 -0
  3. package/dist/agents/agent-integrity.test.d.ts.map +1 -0
  4. package/dist/agents/agent-integrity.test.js +364 -0
  5. package/dist/agents/agent-integrity.test.js.map +1 -0
  6. package/dist/agents/agent-privacy.test.d.ts +5 -0
  7. package/dist/agents/agent-privacy.test.d.ts.map +1 -0
  8. package/dist/agents/agent-privacy.test.js +373 -0
  9. package/dist/agents/agent-privacy.test.js.map +1 -0
  10. package/dist/compliance/mapper.d.ts.map +1 -1
  11. package/dist/compliance/mapper.js +2 -2
  12. package/dist/compliance/mapper.js.map +1 -1
  13. package/dist/compliance/nist-800-53.d.ts +34 -0
  14. package/dist/compliance/nist-800-53.d.ts.map +1 -0
  15. package/dist/compliance/nist-800-53.js +664 -0
  16. package/dist/compliance/nist-800-53.js.map +1 -0
  17. package/dist/config/flags.test.d.ts +5 -0
  18. package/dist/config/flags.test.d.ts.map +1 -0
  19. package/dist/config/flags.test.js +489 -0
  20. package/dist/config/flags.test.js.map +1 -0
  21. package/dist/enterprise/policy/opa.test.js +4 -1
  22. package/dist/enterprise/policy/opa.test.js.map +1 -1
  23. package/dist/http-server.js +2 -1
  24. package/dist/http-server.js.map +1 -1
  25. package/dist/observability/otel.test.d.ts +5 -0
  26. package/dist/observability/otel.test.d.ts.map +1 -0
  27. package/dist/observability/otel.test.js +269 -0
  28. package/dist/observability/otel.test.js.map +1 -0
  29. package/dist/plugins/loader.test.d.ts +5 -0
  30. package/dist/plugins/loader.test.d.ts.map +1 -0
  31. package/dist/plugins/loader.test.js +337 -0
  32. package/dist/plugins/loader.test.js.map +1 -0
  33. package/package.json +2 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nist-800-53.js","sourceRoot":"","sources":["../../src/compliance/nist-800-53.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Unit tests for config/flags module
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=flags.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flags.test.d.ts","sourceRoot":"","sources":["../../src/config/flags.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,489 @@
1
+ /**
2
+ * Unit tests for config/flags module
3
+ */
4
+ import { describe, it, expect, beforeEach, afterEach } from "vitest";
5
+ import { tmpdir } from "os";
6
+ import { join } from "path";
7
+ import { mkdir, rm, writeFile, readFile } from "fs/promises";
8
+ import { loadConfig, clearConfigCache, isFeatureEnabled, isAgentEnabled, getAgentWeight, isScannerEnabled, getScannerTimeout, generateSampleConfig, saveConfig, DEFAULT_CONFIG, VasperaConfigSchema, } from "./flags.js";
9
+ describe("loadConfig", () => {
10
+ let testDir;
11
+ beforeEach(async () => {
12
+ testDir = join(tmpdir(), `vaspera-flags-test-${Date.now()}-${Math.random().toString(36).slice(2)}`);
13
+ await mkdir(testDir, { recursive: true });
14
+ clearConfigCache();
15
+ });
16
+ afterEach(async () => {
17
+ await rm(testDir, { recursive: true, force: true });
18
+ clearConfigCache();
19
+ });
20
+ it("returns default config when no config file exists", async () => {
21
+ const config = await loadConfig(testDir);
22
+ expect(config.version).toBe(1);
23
+ expect(config.features.costTracking).toBe(true);
24
+ expect(config.defaultModel).toBe("claude-sonnet-4-20250514");
25
+ });
26
+ it("loads config from .vaspera/config.yaml", async () => {
27
+ const configDir = join(testDir, ".vaspera");
28
+ await mkdir(configDir, { recursive: true });
29
+ await writeFile(join(configDir, "config.yaml"), `version: 1
30
+ features:
31
+ costTracking: false
32
+ autofix: true
33
+ defaultModel: custom-model`);
34
+ const config = await loadConfig(testDir);
35
+ expect(config.features.costTracking).toBe(false);
36
+ expect(config.features.autofix).toBe(true);
37
+ expect(config.defaultModel).toBe("custom-model");
38
+ });
39
+ it("loads config from .vaspera/config.yml", async () => {
40
+ const configDir = join(testDir, ".vaspera");
41
+ await mkdir(configDir, { recursive: true });
42
+ await writeFile(join(configDir, "config.yml"), `version: 1
43
+ features:
44
+ otel: true`);
45
+ const config = await loadConfig(testDir);
46
+ expect(config.features.otel).toBe(true);
47
+ });
48
+ it("loads config from .vaspera/config.json", async () => {
49
+ const configDir = join(testDir, ".vaspera");
50
+ await mkdir(configDir, { recursive: true });
51
+ await writeFile(join(configDir, "config.json"), JSON.stringify({
52
+ version: 1,
53
+ features: { redteam: true },
54
+ defaultTemperature: 0.5,
55
+ }));
56
+ const config = await loadConfig(testDir);
57
+ expect(config.features.redteam).toBe(true);
58
+ expect(config.defaultTemperature).toBe(0.5);
59
+ });
60
+ it("loads config from .vasperarc", async () => {
61
+ await writeFile(join(testDir, ".vasperarc"), `version: 1
62
+ features:
63
+ plugins: false`);
64
+ const config = await loadConfig(testDir);
65
+ expect(config.features.plugins).toBe(false);
66
+ });
67
+ it("loads config from .vasperarc.json", async () => {
68
+ await writeFile(join(testDir, ".vasperarc.json"), JSON.stringify({
69
+ version: 1,
70
+ certification: {
71
+ minConfidence: 80,
72
+ },
73
+ }));
74
+ const config = await loadConfig(testDir);
75
+ expect(config.certification.minConfidence).toBe(80);
76
+ });
77
+ it("prefers .vaspera/config.yaml over other locations", async () => {
78
+ const configDir = join(testDir, ".vaspera");
79
+ await mkdir(configDir, { recursive: true });
80
+ // Create multiple config files
81
+ await writeFile(join(configDir, "config.yaml"), `version: 1
82
+ defaultModel: yaml-model`);
83
+ await writeFile(join(testDir, ".vasperarc.json"), JSON.stringify({ version: 1, defaultModel: "json-model" }));
84
+ const config = await loadConfig(testDir);
85
+ expect(config.defaultModel).toBe("yaml-model");
86
+ });
87
+ it("caches config for same project path", async () => {
88
+ const config1 = await loadConfig(testDir);
89
+ const config2 = await loadConfig(testDir);
90
+ expect(config1).toBe(config2); // Same object reference
91
+ });
92
+ it("reloads config for different project path", async () => {
93
+ // Create config in testDir
94
+ const configDir1 = join(testDir, ".vaspera");
95
+ await mkdir(configDir1, { recursive: true });
96
+ await writeFile(join(configDir1, "config.yaml"), `version: 1\ndefaultModel: model-a`);
97
+ // Create different config in otherDir
98
+ const otherDir = join(testDir, "other");
99
+ const configDir2 = join(otherDir, ".vaspera");
100
+ await mkdir(configDir2, { recursive: true });
101
+ await writeFile(join(configDir2, "config.yaml"), `version: 1\ndefaultModel: model-b`);
102
+ const config1 = await loadConfig(testDir);
103
+ const config2 = await loadConfig(otherDir);
104
+ expect(config1.defaultModel).toBe("model-a");
105
+ expect(config2.defaultModel).toBe("model-b");
106
+ });
107
+ it("handles invalid YAML gracefully", async () => {
108
+ const configDir = join(testDir, ".vaspera");
109
+ await mkdir(configDir, { recursive: true });
110
+ await writeFile(join(configDir, "config.yaml"), "invalid: : yaml");
111
+ // Should fallback to default config
112
+ const config = await loadConfig(testDir);
113
+ expect(config.version).toBe(1);
114
+ });
115
+ it("handles invalid JSON gracefully", async () => {
116
+ const configDir = join(testDir, ".vaspera");
117
+ await mkdir(configDir, { recursive: true });
118
+ await writeFile(join(configDir, "config.json"), "{ invalid json }");
119
+ const config = await loadConfig(testDir);
120
+ expect(config.version).toBe(1);
121
+ });
122
+ it("parses agent configurations", async () => {
123
+ const configDir = join(testDir, ".vaspera");
124
+ await mkdir(configDir, { recursive: true });
125
+ await writeFile(join(configDir, "config.yaml"), `version: 1
126
+ agents:
127
+ security:
128
+ enabled: true
129
+ weight: 0.9
130
+ custom-agent:
131
+ enabled: false
132
+ weight: 0.5`);
133
+ const config = await loadConfig(testDir);
134
+ expect(config.agents.security.enabled).toBe(true);
135
+ expect(config.agents.security.weight).toBe(0.9);
136
+ expect(config.agents["custom-agent"].enabled).toBe(false);
137
+ });
138
+ it("parses scanner configurations", async () => {
139
+ const configDir = join(testDir, ".vaspera");
140
+ await mkdir(configDir, { recursive: true });
141
+ await writeFile(join(configDir, "config.yaml"), `version: 1
142
+ scanners:
143
+ semgrep:
144
+ enabled: true
145
+ timeout: 180000
146
+ custom-scanner:
147
+ enabled: false`);
148
+ const config = await loadConfig(testDir);
149
+ expect(config.scanners.semgrep.enabled).toBe(true);
150
+ expect(config.scanners.semgrep.timeout).toBe(180000);
151
+ expect(config.scanners["custom-scanner"].enabled).toBe(false);
152
+ });
153
+ });
154
+ describe("clearConfigCache", () => {
155
+ let testDir;
156
+ beforeEach(async () => {
157
+ testDir = join(tmpdir(), `vaspera-cache-test-${Date.now()}-${Math.random().toString(36).slice(2)}`);
158
+ await mkdir(testDir, { recursive: true });
159
+ clearConfigCache();
160
+ });
161
+ afterEach(async () => {
162
+ await rm(testDir, { recursive: true, force: true });
163
+ clearConfigCache();
164
+ });
165
+ it("forces reload on next loadConfig call", async () => {
166
+ const configDir = join(testDir, ".vaspera");
167
+ await mkdir(configDir, { recursive: true });
168
+ // Load initial config
169
+ await writeFile(join(configDir, "config.yaml"), `version: 1\ndefaultModel: model-1`);
170
+ const config1 = await loadConfig(testDir);
171
+ expect(config1.defaultModel).toBe("model-1");
172
+ // Update file and clear cache
173
+ await writeFile(join(configDir, "config.yaml"), `version: 1\ndefaultModel: model-2`);
174
+ clearConfigCache();
175
+ const config2 = await loadConfig(testDir);
176
+ expect(config2.defaultModel).toBe("model-2");
177
+ });
178
+ });
179
+ describe("isFeatureEnabled", () => {
180
+ it("returns true for enabled features", () => {
181
+ const config = {
182
+ ...DEFAULT_CONFIG,
183
+ features: {
184
+ ...DEFAULT_CONFIG.features,
185
+ costTracking: true,
186
+ autofix: true,
187
+ },
188
+ };
189
+ expect(isFeatureEnabled(config, "costTracking")).toBe(true);
190
+ expect(isFeatureEnabled(config, "autofix")).toBe(true);
191
+ });
192
+ it("returns false for disabled features", () => {
193
+ const config = {
194
+ ...DEFAULT_CONFIG,
195
+ features: {
196
+ ...DEFAULT_CONFIG.features,
197
+ otel: false,
198
+ redteam: false,
199
+ },
200
+ };
201
+ expect(isFeatureEnabled(config, "otel")).toBe(false);
202
+ expect(isFeatureEnabled(config, "redteam")).toBe(false);
203
+ });
204
+ it("uses default when feature is undefined", () => {
205
+ // Create a config where feature is explicitly undefined in the lookup
206
+ const config = {
207
+ ...DEFAULT_CONFIG,
208
+ features: {
209
+ ...DEFAULT_CONFIG.features,
210
+ },
211
+ };
212
+ // The isFeatureEnabled function should return the value from config.features
213
+ // Since we're testing the nullish coalescing, we just verify it works
214
+ expect(isFeatureEnabled(config, "costTracking")).toBe(true);
215
+ expect(isFeatureEnabled(config, "otel")).toBe(false);
216
+ });
217
+ });
218
+ describe("isAgentEnabled", () => {
219
+ it("returns true when agent is explicitly enabled", () => {
220
+ const config = {
221
+ ...DEFAULT_CONFIG,
222
+ agents: {
223
+ security: { enabled: true, weight: 1.0 },
224
+ },
225
+ };
226
+ expect(isAgentEnabled(config, "security")).toBe(true);
227
+ });
228
+ it("returns false when agent is explicitly disabled", () => {
229
+ const config = {
230
+ ...DEFAULT_CONFIG,
231
+ agents: {
232
+ typesafety: { enabled: false, weight: 0.7 },
233
+ },
234
+ };
235
+ expect(isAgentEnabled(config, "typesafety")).toBe(false);
236
+ });
237
+ it("returns true when agent is not configured (default)", () => {
238
+ const config = {
239
+ ...DEFAULT_CONFIG,
240
+ agents: {},
241
+ };
242
+ expect(isAgentEnabled(config, "unknown-agent")).toBe(true);
243
+ });
244
+ });
245
+ describe("getAgentWeight", () => {
246
+ it("returns configured weight", () => {
247
+ const config = {
248
+ ...DEFAULT_CONFIG,
249
+ agents: {
250
+ security: { enabled: true, weight: 0.9 },
251
+ reliability: { enabled: true, weight: 0.5 },
252
+ },
253
+ };
254
+ expect(getAgentWeight(config, "security")).toBe(0.9);
255
+ expect(getAgentWeight(config, "reliability")).toBe(0.5);
256
+ });
257
+ it("returns default weight (1.0) for unconfigured agent", () => {
258
+ const config = {
259
+ ...DEFAULT_CONFIG,
260
+ agents: {},
261
+ };
262
+ expect(getAgentWeight(config, "unknown")).toBe(1.0);
263
+ });
264
+ });
265
+ describe("isScannerEnabled", () => {
266
+ it("returns true when scanner is explicitly enabled", () => {
267
+ const config = {
268
+ ...DEFAULT_CONFIG,
269
+ scanners: {
270
+ semgrep: { enabled: true },
271
+ },
272
+ };
273
+ expect(isScannerEnabled(config, "semgrep")).toBe(true);
274
+ });
275
+ it("returns false when scanner is explicitly disabled", () => {
276
+ const config = {
277
+ ...DEFAULT_CONFIG,
278
+ scanners: {
279
+ "npm-audit": { enabled: false },
280
+ },
281
+ };
282
+ expect(isScannerEnabled(config, "npm-audit")).toBe(false);
283
+ });
284
+ it("returns true when scanner is not configured (default)", () => {
285
+ const config = {
286
+ ...DEFAULT_CONFIG,
287
+ scanners: {},
288
+ };
289
+ expect(isScannerEnabled(config, "unknown-scanner")).toBe(true);
290
+ });
291
+ });
292
+ describe("getScannerTimeout", () => {
293
+ it("returns configured timeout", () => {
294
+ const config = {
295
+ ...DEFAULT_CONFIG,
296
+ scanners: {
297
+ semgrep: { enabled: true, timeout: 180000 },
298
+ },
299
+ };
300
+ expect(getScannerTimeout(config, "semgrep")).toBe(180000);
301
+ });
302
+ it("returns default timeout for unconfigured scanner", () => {
303
+ const config = {
304
+ ...DEFAULT_CONFIG,
305
+ scanners: {},
306
+ };
307
+ expect(getScannerTimeout(config, "unknown")).toBe(120000);
308
+ });
309
+ it("accepts custom default timeout", () => {
310
+ const config = {
311
+ ...DEFAULT_CONFIG,
312
+ scanners: {},
313
+ };
314
+ expect(getScannerTimeout(config, "unknown", 60000)).toBe(60000);
315
+ });
316
+ it("returns configured timeout even when enabled is set", () => {
317
+ const config = {
318
+ ...DEFAULT_CONFIG,
319
+ scanners: {
320
+ gitleaks: { enabled: false, timeout: 30000 },
321
+ },
322
+ };
323
+ expect(getScannerTimeout(config, "gitleaks")).toBe(30000);
324
+ });
325
+ });
326
+ describe("generateSampleConfig", () => {
327
+ it("generates valid YAML", () => {
328
+ const sample = generateSampleConfig();
329
+ expect(sample).toContain("version: 1");
330
+ expect(sample).toContain("agents:");
331
+ expect(sample).toContain("scanners:");
332
+ expect(sample).toContain("features:");
333
+ });
334
+ it("includes all feature flags", () => {
335
+ const sample = generateSampleConfig();
336
+ expect(sample).toContain("multiModel:");
337
+ expect(sample).toContain("costTracking:");
338
+ expect(sample).toContain("autofix:");
339
+ expect(sample).toContain("incrementalScan:");
340
+ expect(sample).toContain("otel:");
341
+ expect(sample).toContain("plugins:");
342
+ expect(sample).toContain("redteam:");
343
+ });
344
+ it("includes agent configurations", () => {
345
+ const sample = generateSampleConfig();
346
+ expect(sample).toContain("security:");
347
+ expect(sample).toContain("reliability:");
348
+ expect(sample).toContain("typesafety:");
349
+ expect(sample).toContain("weight:");
350
+ });
351
+ it("includes scanner configurations", () => {
352
+ const sample = generateSampleConfig();
353
+ expect(sample).toContain("semgrep:");
354
+ expect(sample).toContain("npm-audit:");
355
+ expect(sample).toContain("gitleaks:");
356
+ expect(sample).toContain("timeout:");
357
+ });
358
+ it("includes certification settings", () => {
359
+ const sample = generateSampleConfig();
360
+ expect(sample).toContain("certification:");
361
+ expect(sample).toContain("minConfidence:");
362
+ expect(sample).toContain("requiredAgreement:");
363
+ });
364
+ it("includes cost tracking settings", () => {
365
+ const sample = generateSampleConfig();
366
+ expect(sample).toContain("cost:");
367
+ expect(sample).toContain("maxBudget:");
368
+ expect(sample).toContain("warningThreshold:");
369
+ });
370
+ });
371
+ describe("saveConfig", () => {
372
+ let testDir;
373
+ beforeEach(async () => {
374
+ testDir = join(tmpdir(), `vaspera-save-test-${Date.now()}-${Math.random().toString(36).slice(2)}`);
375
+ await mkdir(join(testDir, ".vaspera"), { recursive: true });
376
+ clearConfigCache();
377
+ });
378
+ afterEach(async () => {
379
+ await rm(testDir, { recursive: true, force: true });
380
+ clearConfigCache();
381
+ });
382
+ it("saves config file", async () => {
383
+ await saveConfig(testDir, DEFAULT_CONFIG);
384
+ const content = await readFile(join(testDir, ".vaspera", "config.yaml"), "utf-8");
385
+ expect(content).toContain("version: 1");
386
+ });
387
+ it("clears config cache after save", async () => {
388
+ // Load initial config to populate cache
389
+ await loadConfig(testDir);
390
+ // Save new config
391
+ await saveConfig(testDir, DEFAULT_CONFIG);
392
+ // Should not use cached config (cache was cleared)
393
+ // This is verified by the fact that saveConfig doesn't throw
394
+ });
395
+ });
396
+ describe("VasperaConfigSchema", () => {
397
+ it("validates valid config", () => {
398
+ const result = VasperaConfigSchema.safeParse({
399
+ version: 1,
400
+ features: { costTracking: true },
401
+ });
402
+ expect(result.success).toBe(true);
403
+ });
404
+ it("applies default values", () => {
405
+ const result = VasperaConfigSchema.safeParse({});
406
+ expect(result.success).toBe(true);
407
+ if (result.success) {
408
+ expect(result.data.version).toBe(1);
409
+ expect(result.data.features.costTracking).toBe(true);
410
+ expect(result.data.defaultModel).toBe("claude-sonnet-4-20250514");
411
+ }
412
+ });
413
+ it("validates version must be 1", () => {
414
+ const result = VasperaConfigSchema.safeParse({ version: 2 });
415
+ expect(result.success).toBe(false);
416
+ });
417
+ it("validates agent weight range", () => {
418
+ const valid = VasperaConfigSchema.safeParse({
419
+ agents: { security: { weight: 0.5 } },
420
+ });
421
+ expect(valid.success).toBe(true);
422
+ const tooLow = VasperaConfigSchema.safeParse({
423
+ agents: { security: { weight: -0.1 } },
424
+ });
425
+ expect(tooLow.success).toBe(false);
426
+ const tooHigh = VasperaConfigSchema.safeParse({
427
+ agents: { security: { weight: 1.5 } },
428
+ });
429
+ expect(tooHigh.success).toBe(false);
430
+ });
431
+ it("validates temperature range", () => {
432
+ const valid = VasperaConfigSchema.safeParse({
433
+ defaultTemperature: 1.0,
434
+ });
435
+ expect(valid.success).toBe(true);
436
+ const tooHigh = VasperaConfigSchema.safeParse({
437
+ defaultTemperature: 3.0,
438
+ });
439
+ expect(tooHigh.success).toBe(false);
440
+ });
441
+ it("validates certification settings", () => {
442
+ const valid = VasperaConfigSchema.safeParse({
443
+ certification: {
444
+ minConfidence: 85,
445
+ requiredAgreement: 0.7,
446
+ },
447
+ });
448
+ expect(valid.success).toBe(true);
449
+ const invalidConfidence = VasperaConfigSchema.safeParse({
450
+ certification: { minConfidence: 150 },
451
+ });
452
+ expect(invalidConfidence.success).toBe(false);
453
+ const invalidAgreement = VasperaConfigSchema.safeParse({
454
+ certification: { requiredAgreement: 1.5 },
455
+ });
456
+ expect(invalidAgreement.success).toBe(false);
457
+ });
458
+ });
459
+ describe("DEFAULT_CONFIG", () => {
460
+ it("has all required fields", () => {
461
+ expect(DEFAULT_CONFIG.version).toBe(1);
462
+ expect(DEFAULT_CONFIG.features).toBeDefined();
463
+ expect(DEFAULT_CONFIG.agents).toBeDefined();
464
+ expect(DEFAULT_CONFIG.scanners).toBeDefined();
465
+ expect(DEFAULT_CONFIG.certification).toBeDefined();
466
+ expect(DEFAULT_CONFIG.cost).toBeDefined();
467
+ expect(DEFAULT_CONFIG.plugins).toBeDefined();
468
+ });
469
+ it("has sensible default values", () => {
470
+ expect(DEFAULT_CONFIG.features.costTracking).toBe(true);
471
+ expect(DEFAULT_CONFIG.features.autofix).toBe(true);
472
+ expect(DEFAULT_CONFIG.features.multiModel).toBe(false);
473
+ expect(DEFAULT_CONFIG.features.otel).toBe(false);
474
+ expect(DEFAULT_CONFIG.defaultTemperature).toBe(0.3);
475
+ expect(DEFAULT_CONFIG.certification.minConfidence).toBe(70);
476
+ expect(DEFAULT_CONFIG.certification.requiredAgreement).toBe(0.6);
477
+ });
478
+ it("enables core agents by default", () => {
479
+ expect(DEFAULT_CONFIG.agents.security?.enabled).toBe(true);
480
+ expect(DEFAULT_CONFIG.agents.reliability?.enabled).toBe(true);
481
+ expect(DEFAULT_CONFIG.agents.typesafety?.enabled).toBe(true);
482
+ });
483
+ it("enables core scanners by default", () => {
484
+ expect(DEFAULT_CONFIG.scanners.semgrep?.enabled).toBe(true);
485
+ expect(DEFAULT_CONFIG.scanners["npm-audit"]?.enabled).toBe(true);
486
+ expect(DEFAULT_CONFIG.scanners.gitleaks?.enabled).toBe(true);
487
+ });
488
+ });
489
+ //# sourceMappingURL=flags.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flags.test.js","sourceRoot":"","sources":["../../src/config/flags.test.ts"],"names":[],"mappings":"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"}
@@ -11,9 +11,12 @@ const mockFetch = vi.fn();
11
11
  global.fetch = mockFetch;
12
12
  describe("OPAClient", () => {
13
13
  let tempDir;
14
+ let testId;
14
15
  beforeEach(async () => {
15
16
  vi.clearAllMocks();
16
- tempDir = join(tmpdir(), `opa-test-${Date.now()}`);
17
+ // Use unique directory per test to avoid race conditions when tests run in parallel
18
+ testId = `${Date.now()}-${Math.random().toString(36).slice(2)}`;
19
+ tempDir = join(tmpdir(), `opa-test-${testId}`);
17
20
  await mkdir(tempDir, { recursive: true });
18
21
  });
19
22
  afterEach(async () => {