lacuna-cli 0.1.4 → 0.1.6

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 (61) hide show
  1. package/README.md +51 -21
  2. package/dist/agent/fix-loop.d.ts +5 -0
  3. package/dist/agent/fix-loop.d.ts.map +1 -1
  4. package/dist/agent/fix-loop.js +342 -35
  5. package/dist/agent/fix-loop.js.map +1 -1
  6. package/dist/agent/generator.d.ts +4 -1
  7. package/dist/agent/generator.d.ts.map +1 -1
  8. package/dist/agent/generator.js +42 -3
  9. package/dist/agent/generator.js.map +1 -1
  10. package/dist/agent/loop.d.ts +8 -0
  11. package/dist/agent/loop.d.ts.map +1 -1
  12. package/dist/agent/loop.js +26 -9
  13. package/dist/agent/loop.js.map +1 -1
  14. package/dist/agent/prompts.d.ts +8 -0
  15. package/dist/agent/prompts.d.ts.map +1 -1
  16. package/dist/agent/prompts.js +395 -67
  17. package/dist/agent/prompts.js.map +1 -1
  18. package/dist/commands/fix.d.ts +2 -0
  19. package/dist/commands/fix.d.ts.map +1 -1
  20. package/dist/commands/fix.js +31 -2
  21. package/dist/commands/fix.js.map +1 -1
  22. package/dist/commands/init.d.ts.map +1 -1
  23. package/dist/commands/init.js +245 -34
  24. package/dist/commands/init.js.map +1 -1
  25. package/dist/lib/config.d.ts +8 -8
  26. package/dist/lib/config.d.ts.map +1 -1
  27. package/dist/lib/config.js +8 -6
  28. package/dist/lib/config.js.map +1 -1
  29. package/dist/lib/coverage/gaps.d.ts +2 -2
  30. package/dist/lib/coverage/gaps.d.ts.map +1 -1
  31. package/dist/lib/coverage/gaps.js +4 -4
  32. package/dist/lib/coverage/gaps.js.map +1 -1
  33. package/dist/lib/detector.d.ts +3 -2
  34. package/dist/lib/detector.d.ts.map +1 -1
  35. package/dist/lib/detector.js +138 -0
  36. package/dist/lib/detector.js.map +1 -1
  37. package/dist/lib/providers/anthropic.d.ts.map +1 -1
  38. package/dist/lib/providers/anthropic.js +26 -3
  39. package/dist/lib/providers/anthropic.js.map +1 -1
  40. package/dist/lib/providers/openai-compatible.d.ts +1 -1
  41. package/dist/lib/providers/openai-compatible.d.ts.map +1 -1
  42. package/dist/lib/providers/openai-compatible.js +17 -1
  43. package/dist/lib/providers/openai-compatible.js.map +1 -1
  44. package/dist/lib/skeleton.d.ts +4 -0
  45. package/dist/lib/skeleton.d.ts.map +1 -1
  46. package/dist/lib/skeleton.js +220 -0
  47. package/dist/lib/skeleton.js.map +1 -1
  48. package/dist/lib/validate.d.ts +1 -0
  49. package/dist/lib/validate.d.ts.map +1 -1
  50. package/dist/lib/validate.js +132 -0
  51. package/dist/lib/validate.js.map +1 -1
  52. package/dist/lib/worker-display.d.ts +3 -0
  53. package/dist/lib/worker-display.d.ts.map +1 -1
  54. package/dist/lib/worker-display.js +19 -4
  55. package/dist/lib/worker-display.js.map +1 -1
  56. package/package.json +1 -1
  57. package/dist/lib/report-upload.d.ts +0 -3
  58. package/dist/lib/report-upload.d.ts.map +0 -1
  59. package/dist/lib/report-upload.js +0 -15
  60. package/dist/lib/report-upload.js.map +0 -1
  61. package/oclif.manifest.json +0 -295
@@ -1,17 +1,18 @@
1
- import { readFile, writeFile, mkdir, unlink } from 'fs/promises';
1
+ import { readFile, writeFile, mkdir, unlink, readdir } from 'fs/promises';
2
2
  import { join, dirname, basename, extname } from 'path';
3
3
  import { access, stat } from 'fs/promises';
4
4
  import chalk from 'chalk';
5
- import { fileTestCommand } from '../lib/detector.js';
5
+ import { fileTestCommand, multiFileTestCommand } from '../lib/detector.js';
6
6
  import { runCommand } from '../lib/runner.js';
7
7
  import { startCoverageSpinner } from '../lib/coverage-spinner.js';
8
8
  import { WorkerDisplay } from '../lib/worker-display.js';
9
9
  import { buildFixFileContext, computeRelativeImport, collectTypeDefinitions, collectLocalImportPaths, detectReactMajorVersion } from './context.js';
10
- import { TestGenerator, TruncatedOutputError, OscillationError, TRUNCATION_RETRY_MESSAGE } from './generator.js';
10
+ import { TestGenerator, TruncatedOutputError, OscillationError, TRUNCATION_RETRY_MESSAGE, OSCILLATION_ESCAPE_MESSAGE } from './generator.js';
11
+ import { processGap } from './loop.js';
11
12
  import { ProjectMemory } from './project-memory.js';
12
13
  import { getActiveTips, createTipRotator, formatTip } from '../lib/tips.js';
13
14
  import { typeCheckFile } from '../lib/typecheck.js';
14
- import { hasTestFunctions, enrichNoTestsError, isZeroTestsOutput, parsePassCount, buildStructureBrokenMessage, buildRegressionMessage, sanitizeMocksContent, stripLeadingProse, mergeMocksContent } from '../lib/validate.js';
15
+ import { hasTestFunctions, enrichNoTestsError, isZeroTestsOutput, parsePassCount, buildStructureBrokenMessage, buildRegressionMessage, sanitizeMocksContent, stripLeadingProse, mergeMocksContent, deduplicateViMocks } from '../lib/validate.js';
15
16
  import { extractTestFailure } from '../lib/extract-error.js';
16
17
  import { StreamingFileViewer } from '../lib/streaming-viewer.js';
17
18
  // ─── Failing-files cache ──────────────────────────────────────────────────────
@@ -46,42 +47,84 @@ async function clearFixCache(cwd) {
46
47
  catch { /* already gone — fine */ }
47
48
  }
48
49
  // ─── Parse failing test files from runner output ──────────────────────────────
49
- const TEST_FILE_RE = /[\w./\\@-]+\.(?:test|spec)\.(?:tsx|mts|ts|jsx|js)/;
50
+ const TEST_FILE_RE = /[\w./\\@\[\]-]+\.(?:test|spec)\.(?:tsx|mts|ts|jsx|js)/;
51
+ function stripAnsi(s) {
52
+ // Strip all CSI sequences (ESC [ ... letter), OSC sequences, carriage returns
53
+ return s.replace(/\x1B\[[0-9;]*[A-Za-z]/g, '').replace(/\x1B\][^\x1B]*/g, '').replace(/\r/g, '');
54
+ }
50
55
  function parseFailingTestFiles(output, runner) {
51
- const files = new Set();
52
56
  const lines = output.split('\n');
57
+ // Two separate sets — cross/tick pattern (per-file summary) vs FAIL pattern (per-test details)
58
+ const crossFiles = new Set();
59
+ const failFiles = new Set();
53
60
  for (const line of lines) {
54
- const clean = line.replace(/\x1B\[[0-9;]*m/g, '').trim();
55
- // Vitest: cross character followed by file path (covers multiple cross symbols across versions)
61
+ const clean = stripAnsi(line).trim();
56
62
  if (runner === 'vitest' || runner === 'unknown') {
57
63
  const m = clean.match(new RegExp(`^[×✗✕✖✘❌]\\s+(${TEST_FILE_RE.source})`));
58
64
  if (m) {
59
- files.add(m[1]);
65
+ crossFiles.add(m[1]);
60
66
  continue;
61
67
  }
62
68
  }
63
- // "FAIL <path>" — used by Jest and some Vitest reporters/configurations
64
69
  if (runner === 'jest' || runner === 'vitest' || runner === 'unknown') {
65
70
  const m = clean.match(new RegExp(`^FAIL\\s+(${TEST_FILE_RE.source})`));
66
71
  if (m) {
67
- files.add(m[1]);
68
- continue;
72
+ failFiles.add(m[1]);
69
73
  }
70
74
  }
71
75
  }
72
- // Fallback: if no files matched via primary patterns, extract test file paths from
73
- // stack traces. A path in a stack trace always belongs to a file that ran and failed.
74
- // Over-inclusive is fine fixFile re-runs each file first and skips it if already passing.
75
- if (files.size === 0) {
76
+ // Parse the expected failing file count from the runner summary line
77
+ let expectedCount = null;
78
+ for (const line of lines) {
79
+ const clean = stripAnsi(line).trim();
80
+ const mv = clean.match(/Test Files\s+(\d+)\s+failed/);
81
+ if (mv) {
82
+ expectedCount = parseInt(mv[1], 10);
83
+ break;
84
+ }
85
+ const mj = clean.match(/Test Suites:\s+(\d+)\s+failed/);
86
+ if (mj) {
87
+ expectedCount = parseInt(mj[1], 10);
88
+ break;
89
+ }
90
+ }
91
+ const combined = new Set([...crossFiles, ...failFiles]);
92
+ if (expectedCount !== null && combined.size > expectedCount) {
93
+ // Over-detected: prune false positives by preferring files confirmed by both patterns,
94
+ // then FAIL-only (strong signal — comes from the detailed failures section),
95
+ // then cross-only last (more likely to include false positives).
96
+ const pruned = new Set();
97
+ for (const f of crossFiles) {
98
+ if (failFiles.has(f))
99
+ pruned.add(f);
100
+ }
101
+ for (const f of failFiles) {
102
+ if (pruned.size < expectedCount)
103
+ pruned.add(f);
104
+ }
105
+ for (const f of crossFiles) {
106
+ if (pruned.size < expectedCount)
107
+ pruned.add(f);
108
+ }
109
+ return [...pruned];
110
+ }
111
+ // Supplement with stack traces only when primary patterns under-detected
112
+ const needsSupplement = expectedCount !== null ? combined.size < expectedCount : combined.size === 0;
113
+ if (needsSupplement) {
114
+ let inTrace = false;
76
115
  for (const line of lines) {
77
- const clean = line.replace(/\x1B\[[0-9;]*m/g, '').trim();
78
- // stack trace: at ... (src/foo.test.tsx:42:5) or at src/foo.test.tsx:42
116
+ const clean = stripAnsi(line).trim();
117
+ if (!clean || clean.startsWith('●') || clean.startsWith('FAIL') || /^[×✗✕✖✘❌]/.test(clean)) {
118
+ inTrace = false;
119
+ }
79
120
  const m = clean.match(new RegExp(`\\(?(${TEST_FILE_RE.source}):\\d+`));
80
- if (m)
81
- files.add(m[1]);
121
+ if (m && !combined.has(m[1]) && !inTrace) {
122
+ combined.add(m[1]);
123
+ inTrace = true;
124
+ }
82
125
  }
83
126
  }
84
- return [...files];
127
+ return [...combined];
85
128
  }
86
129
  // ─── Find the source file that a test file is testing ────────────────────────
87
130
  async function findSourceFile(testFilePath, cwd) {
@@ -94,7 +137,11 @@ async function findSourceFile(testFilePath, cwd) {
94
137
  const sourceDir = basename(dir) === '__tests__' ? dirname(dir) : dir;
95
138
  const exts = [ext, '.ts', '.tsx', '.js', '.jsx'];
96
139
  for (const e of exts) {
97
- const candidate = join(cwd, sourceDir, `${sourceBase}${e}`);
140
+ // If sourceDir is absolute (testFilePath was absolute), use it directly.
141
+ // join(cwd, absoluteDir) doubles the path: /project/home/project/app/... which never exists.
142
+ const candidate = sourceDir.startsWith('/') || sourceDir.startsWith('\\')
143
+ ? join(sourceDir, `${sourceBase}${e}`)
144
+ : join(cwd, sourceDir, `${sourceBase}${e}`);
98
145
  try {
99
146
  await access(candidate);
100
147
  return candidate;
@@ -115,9 +162,9 @@ async function fixFile(testFilePath, options, generator, onStatus, projectMemory
115
162
  const firstRun = await runCommand(fileTestCommand(env, absTestPath), cwd, 60_000);
116
163
  if (firstRun.success) {
117
164
  if (!onStatus)
118
- log(chalk.green(' Already passing — skipping.'));
165
+ log(chalk.dim(' Already passing — skipping.'));
119
166
  onStatus?.({ phase: 'passed', file: shortPath });
120
- return { success: true };
167
+ return { success: true, skipped: true };
121
168
  }
122
169
  let errorOutput = extractTestFailure(firstRun.stdout + '\n' + firstRun.stderr);
123
170
  const initialErrorOutput = errorOutput;
@@ -201,6 +248,16 @@ async function fixFile(testFilePath, options, generator, onStatus, projectMemory
201
248
  continue;
202
249
  }
203
250
  if (err instanceof OscillationError) {
251
+ if (attempt < config.maxIterations) {
252
+ // Iterations remain — give one escape-hatch attempt with fresh oscillation state
253
+ // and an explicit "completely different approach" message instead of stopping.
254
+ if (!onStatus)
255
+ log(chalk.yellow(`\n ⚠ Agent loop detected — retrying with different strategy...`));
256
+ onStatus?.({ phase: 'retrying', file: shortPath, attempt, max: config.maxIterations });
257
+ generator.resetOscillationState();
258
+ errorOutput = OSCILLATION_ESCAPE_MESSAGE;
259
+ continue;
260
+ }
204
261
  if (!onStatus)
205
262
  log(chalk.red(`\n ⚠ Agent loop detected — output identical to a previous attempt. Stopping early.`));
206
263
  onStatus?.({ phase: 'failed', file: shortPath });
@@ -255,6 +312,7 @@ async function fixFile(testFilePath, options, generator, onStatus, projectMemory
255
312
  }
256
313
  }
257
314
  }
315
+ testFileContent = deduplicateViMocks(testFileContent);
258
316
  // Catch empty test files before writing
259
317
  if (!hasTestFunctions(testFileContent)) {
260
318
  errorOutput =
@@ -317,13 +375,210 @@ async function fixFile(testFilePath, options, generator, onStatus, projectMemory
317
375
  error: `Still failing after ${config.maxIterations} attempts. Last error:\n${errorOutput.slice(0, 1500)}`,
318
376
  };
319
377
  }
378
+ // ─── Polluter detection ───────────────────────────────────────────────────────
379
+ function buildTestFileRegex(pattern) {
380
+ const filename = pattern.split('/').pop() ?? pattern;
381
+ const regexStr = filename
382
+ .replace(/\{([^}]+)\}/g, (_, g) => `(${g.split(',').map((s) => s.trim()).join('|')})`)
383
+ .replace(/\./g, '\\.')
384
+ .replace(/\*+/g, '[^/]+');
385
+ return new RegExp(regexStr + '$');
386
+ }
387
+ async function discoverTestFiles(cwd, env) {
388
+ const testRe = buildTestFileRegex(env.testFilePattern);
389
+ const files = [];
390
+ const skipDirs = new Set(['node_modules', 'dist', '.git', 'coverage', '.nyc_output', '.lacuna']);
391
+ async function walk(dir) {
392
+ const entries = await readdir(dir, { withFileTypes: true }).catch(() => []);
393
+ for (const e of entries) {
394
+ if (e.isDirectory()) {
395
+ if (!skipDirs.has(e.name))
396
+ await walk(join(dir, e.name));
397
+ }
398
+ else if (testRe.test(e.name)) {
399
+ files.push(join(dir, e.name));
400
+ }
401
+ }
402
+ }
403
+ await walk(cwd);
404
+ return files.sort();
405
+ }
406
+ function victimInFailing(victim, failing, cwd) {
407
+ const rel = (p) => (p.startsWith(cwd + '/') ? p.slice(cwd.length + 1) : p);
408
+ const shortVictim = rel(victim);
409
+ return failing.some(f => {
410
+ const shortF = rel(f);
411
+ return shortF === shortVictim || shortVictim.endsWith(shortF) || shortF.endsWith(shortVictim);
412
+ });
413
+ }
414
+ async function victimFailsWithSubset(victim, subset, env, cwd) {
415
+ if (subset.length === 0)
416
+ return false;
417
+ const result = await runCommand(multiFileTestCommand(env, [...subset, victim]), cwd, 120_000);
418
+ if (result.success)
419
+ return false;
420
+ const failing = parseFailingTestFiles(result.stdout + '\n' + result.stderr, env.testRunner);
421
+ return victimInFailing(victim, failing, cwd);
422
+ }
423
+ async function bisectPolluter(victim, candidates, env, cwd) {
424
+ if (candidates.length === 0)
425
+ return null;
426
+ if (candidates.length === 1) {
427
+ const fails = await victimFailsWithSubset(victim, candidates, env, cwd);
428
+ return fails ? candidates[0] : null;
429
+ }
430
+ const mid = Math.floor(candidates.length / 2);
431
+ const left = candidates.slice(0, mid);
432
+ const right = candidates.slice(mid);
433
+ if (await victimFailsWithSubset(victim, left, env, cwd))
434
+ return bisectPolluter(victim, left, env, cwd);
435
+ if (await victimFailsWithSubset(victim, right, env, cwd))
436
+ return bisectPolluter(victim, right, env, cwd);
437
+ return null;
438
+ }
439
+ async function findAndFixPolluters(victimFiles, options, projectMemory) {
440
+ const { config, env, cwd, log } = options;
441
+ const allTestFiles = await discoverTestFiles(cwd, env);
442
+ log(chalk.dim(` Discovered ${allTestFiles.length} test files to search.`));
443
+ const generator = new TestGenerator({ config, env });
444
+ let pollutersFixed = 0;
445
+ let victimsRegenerated = 0;
446
+ const seenPolluters = new Set();
447
+ const unresolvedVictims = [];
448
+ for (const victim of victimFiles) {
449
+ const shortVictim = victim.replace(cwd + '/', '');
450
+ log(chalk.dim(`\n Bisecting for: ${chalk.cyan(shortVictim)}`));
451
+ const candidates = allTestFiles.filter(f => f !== victim);
452
+ // Probe: verify the pollution reproduces before spending O(log N) bisect runs.
453
+ // If it doesn't reproduce here, the pollution requires vitest's default multi-worker
454
+ // config to manifest and can't be found by this approach.
455
+ log(chalk.dim(` Probing (${candidates.length} files + victim)...`));
456
+ const reproduced = await victimFailsWithSubset(victim, candidates, env, cwd);
457
+ if (!reproduced) {
458
+ log(chalk.yellow(` Pollution did not reproduce in sequential mode — this is concurrency-based globalThis contamination.`));
459
+ log(chalk.dim(` A vi.spyOn(global, ...) spy from another file is persisting in the shared worker thread.`));
460
+ log(chalk.dim(` Fix: add restoreMocks: true and clearMocks: true to the test: {} block in vitest.config.ts`));
461
+ log(chalk.dim(` Also add beforeEach(() => vi.restoreAllMocks()) to your test setup file.`));
462
+ unresolvedVictims.push(victim);
463
+ continue;
464
+ }
465
+ const polluter = await bisectPolluter(victim, candidates, env, cwd);
466
+ if (!polluter) {
467
+ log(chalk.yellow(` Could not isolate a polluter — file may have an internal spy lifecycle bug.`));
468
+ unresolvedVictims.push(victim);
469
+ continue;
470
+ }
471
+ const shortPolluter = polluter.replace(cwd + '/', '');
472
+ log(` Found polluter: ${chalk.cyan(shortPolluter)}`);
473
+ if (seenPolluters.has(polluter)) {
474
+ log(chalk.dim(` Already processed ${shortPolluter}.`));
475
+ continue;
476
+ }
477
+ seenPolluters.add(polluter);
478
+ // Capture the victim's failure output when run after the polluter
479
+ const errorRun = await runCommand(multiFileTestCommand(env, [polluter, victim]), cwd, 60_000);
480
+ const victimError = extractTestFailure(errorRun.stdout + '\n' + errorRun.stderr);
481
+ const pollutorCode = await readFile(polluter, 'utf-8').catch(() => null);
482
+ const victimCode = await readFile(victim, 'utf-8').catch(() => null);
483
+ if (!pollutorCode || !victimCode) {
484
+ log(chalk.red(` Could not read files — skipping ${shortPolluter}`));
485
+ unresolvedVictims.push(victim);
486
+ continue;
487
+ }
488
+ log(chalk.dim(` Sending to ${config.model} for cleanup...`));
489
+ let fixed;
490
+ try {
491
+ fixed = await generator.fixPollution({
492
+ pollutorFile: shortPolluter,
493
+ pollutorCode,
494
+ victimFile: shortVictim,
495
+ victimCode,
496
+ victimError,
497
+ env,
498
+ });
499
+ }
500
+ catch (err) {
501
+ log(chalk.red(` AI error: ${err instanceof Error ? err.message : String(err)}`));
502
+ unresolvedVictims.push(victim);
503
+ continue;
504
+ }
505
+ await writeFile(polluter, fixed, 'utf-8');
506
+ const verifyRun = await runCommand(multiFileTestCommand(env, [polluter, victim]), cwd, 60_000);
507
+ const verifyFailing = parseFailingTestFiles(verifyRun.stdout + '\n' + verifyRun.stderr, env.testRunner);
508
+ const victimResolved = !victimInFailing(victim, verifyFailing, cwd);
509
+ if (victimResolved) {
510
+ log(chalk.green(` Cleanup applied: ${shortPolluter}`));
511
+ pollutersFixed++;
512
+ }
513
+ else {
514
+ log(chalk.red(` Cleanup did not resolve the victim — restoring ${shortPolluter}`));
515
+ await writeFile(polluter, pollutorCode, 'utf-8').catch(() => { });
516
+ unresolvedVictims.push(victim);
517
+ }
518
+ }
519
+ // Phase 2: regenerate victims that bisection couldn't resolve.
520
+ // These files pass alone but fail in the suite due to internal bugs
521
+ // (e.g. module-level vi.spyOn, wrong mock structure). A fresh generation
522
+ // produces properly-structured tests with spies inside beforeEach.
523
+ if (unresolvedVictims.length > 0 && options.regenerateOnFailure !== false) {
524
+ log(chalk.bold(`\n Regenerating ${unresolvedVictims.length} victim file(s) that couldn't be resolved by polluter cleanup...`));
525
+ for (const victim of unresolvedVictims) {
526
+ const shortVictim = victim.replace(cwd + '/', '');
527
+ log(chalk.dim(`\n Regenerating: ${chalk.cyan(shortVictim)}`));
528
+ const result = await regenerateFile(victim, options, undefined, projectMemory);
529
+ if (result.success) {
530
+ log(chalk.green(` Regenerated successfully.`));
531
+ victimsRegenerated++;
532
+ }
533
+ else {
534
+ log(chalk.red(` Regeneration failed: ${result.error?.slice(0, 200) ?? 'unknown error'}`));
535
+ }
536
+ }
537
+ }
538
+ return { pollutersFixed, victimsRegenerated };
539
+ }
540
+ // ─── Regeneration fallback ────────────────────────────────────────────────────
541
+ async function regenerateFile(testFilePath, options, onStatus, projectMemory) {
542
+ const absTestFile = testFilePath.startsWith('/') ? testFilePath : join(options.cwd, testFilePath);
543
+ // Find the source file so processGap gets the right starting point.
544
+ // processGap expects gap.filePath to be the SOURCE file, not the test file.
545
+ const sourceFile = await findSourceFile(absTestFile, options.cwd);
546
+ if (!sourceFile) {
547
+ return { success: false, error: `Could not find source file for ${absTestFile}` };
548
+ }
549
+ // Delete the broken test file before regenerating. If it stays on disk,
550
+ // buildFileContext reads it as existingTestCode and the generate prompt says
551
+ // "preserve all existing tests" — locking the AI into the same broken structure.
552
+ await unlink(absTestFile).catch(() => { });
553
+ const gap = { filePath: sourceFile, uncoveredLines: [], uncoveredFunctions: [] };
554
+ const generator = new TestGenerator({ config: options.config, env: options.env });
555
+ // processGap uses gap.filePath (the source file) as its display identifier, but during
556
+ // regen the worker should stay in 'regenerating' for all intermediate phases and only
557
+ // flip to passed/failed at the end. This prevents the brief flash where 'regenerating'
558
+ // gets overwritten by 'generating' (<80ms) as soon as processGap starts.
559
+ const testShortPath = absTestFile.replace(options.cwd + '/', '');
560
+ const regenOnStatus = onStatus
561
+ ? (state) => {
562
+ if (state.phase === 'passed' || state.phase === 'failed') {
563
+ onStatus('file' in state ? { ...state, file: testShortPath } : state);
564
+ }
565
+ else {
566
+ onStatus({ phase: 'regenerating', file: testShortPath });
567
+ }
568
+ }
569
+ : undefined;
570
+ const result = await processGap(gap, options, generator, true, regenOnStatus, projectMemory);
571
+ return { success: result.success, error: result.error };
572
+ }
320
573
  // ─── Worker pool ──────────────────────────────────────────────────────────────
321
574
  async function runFixWorkers(testFiles, options, workerCount, projectMemory) {
322
575
  const queue = [...testFiles];
323
576
  let filesProcessed = 0;
324
577
  let filesFixed = 0;
578
+ let filesAlreadyPassing = 0;
325
579
  const errors = [];
326
580
  const stillFailingFiles = [];
581
+ const victimFiles = [];
327
582
  const tips = getActiveTips({
328
583
  workers: workerCount,
329
584
  targetFile: options.targetFile,
@@ -344,10 +599,32 @@ async function runFixWorkers(testFiles, options, workerCount, projectMemory) {
344
599
  if (!file)
345
600
  break;
346
601
  const onStatus = (state) => display.update(wi, state);
347
- const result = await fixFile(file, { ...options, log: () => { }, verbose: false }, generator, onStatus, projectMemory);
602
+ const absFile = file.startsWith('/') ? file : join(options.cwd, file);
603
+ const workerOptions = { ...options, log: () => { }, verbose: false };
604
+ const result = await fixFile(absFile, workerOptions, generator, onStatus, projectMemory);
348
605
  filesProcessed++;
349
- if (result.success)
350
- filesFixed++;
606
+ if (result.success) {
607
+ if (result.skipped) {
608
+ filesAlreadyPassing++;
609
+ victimFiles.push(absFile);
610
+ }
611
+ else
612
+ filesFixed++;
613
+ }
614
+ else if (options.regenerateOnFailure) {
615
+ // Signal 'regenerating' first — this undoes the 'failed' done-count from fixFile
616
+ // so the regen's final phase is the single counted outcome for this file.
617
+ onStatus?.({ phase: 'regenerating', file: absFile.replace(options.cwd + '/', '') });
618
+ const regenResult = await regenerateFile(absFile, workerOptions, onStatus, projectMemory);
619
+ if (regenResult.success) {
620
+ filesFixed++;
621
+ }
622
+ else {
623
+ stillFailingFiles.push(file);
624
+ if (regenResult.error)
625
+ errors.push(regenResult.error);
626
+ }
627
+ }
351
628
  else {
352
629
  stillFailingFiles.push(file);
353
630
  if (result.error)
@@ -356,7 +633,7 @@ async function runFixWorkers(testFiles, options, workerCount, projectMemory) {
356
633
  }
357
634
  }));
358
635
  display.finish();
359
- return { filesProcessed, filesFixed, errors, stillFailingFiles };
636
+ return { filesProcessed, filesFixed, filesAlreadyPassing, errors, stillFailingFiles, victimFiles };
360
637
  }
361
638
  // ─── Main entry point ─────────────────────────────────────────────────────────
362
639
  export async function runFixLoop(options) {
@@ -374,7 +651,7 @@ export async function runFixLoop(options) {
374
651
  spinner.stop();
375
652
  if (fileResult.success) {
376
653
  log(chalk.green('\n All tests are passing — nothing to fix.'));
377
- return { filesProcessed: 0, filesFixed: 0, errors: [] };
654
+ return { filesProcessed: 0, filesFixed: 0, filesAlreadyPassing: 0, pollutersFixed: 0, victimsRegenerated: 0, errors: [] };
378
655
  }
379
656
  failingFiles = [absTarget];
380
657
  }
@@ -396,7 +673,7 @@ export async function runFixLoop(options) {
396
673
  }
397
674
  if (suiteResult.success) {
398
675
  log(chalk.green('\n All tests are passing — nothing to fix.'));
399
- return { filesProcessed: 0, filesFixed: 0, errors: [] };
676
+ return { filesProcessed: 0, filesFixed: 0, filesAlreadyPassing: 0, pollutersFixed: 0, victimsRegenerated: 0, errors: [] };
400
677
  }
401
678
  failingFiles = parseFailingTestFiles(suiteResult.stdout + suiteResult.stderr, env.testRunner);
402
679
  failingFiles = failingFiles.filter((f) => {
@@ -413,7 +690,7 @@ export async function runFixLoop(options) {
413
690
  .join('\n');
414
691
  if (lastLines)
415
692
  log(chalk.dim('\n Last output lines:\n' + lastLines.split('\n').map((l) => ` ${l}`).join('\n')));
416
- return { filesProcessed: 0, filesFixed: 0, errors: [] };
693
+ return { filesProcessed: 0, filesFixed: 0, filesAlreadyPassing: 0, pollutersFixed: 0, victimsRegenerated: 0, errors: [] };
417
694
  }
418
695
  await saveFixCache(cwd, failingFiles);
419
696
  }
@@ -429,17 +706,21 @@ export async function runFixLoop(options) {
429
706
  const memorySnapshot = memory.toPromptSection();
430
707
  let filesProcessed;
431
708
  let filesFixed;
709
+ let filesAlreadyPassing;
432
710
  let errors;
433
711
  let stillFailingFiles;
712
+ let victimFiles;
434
713
  if (parallel) {
435
714
  ;
436
- ({ filesProcessed, filesFixed, errors, stillFailingFiles } = await runFixWorkers(failingFiles, options, workerCount, memorySnapshot));
715
+ ({ filesProcessed, filesFixed, filesAlreadyPassing, errors, stillFailingFiles, victimFiles } = await runFixWorkers(failingFiles, options, workerCount, memorySnapshot));
437
716
  }
438
717
  else {
439
718
  filesProcessed = 0;
440
719
  filesFixed = 0;
720
+ filesAlreadyPassing = 0;
441
721
  errors = [];
442
722
  stillFailingFiles = [];
723
+ victimFiles = [];
443
724
  const generator = new TestGenerator({ config, env });
444
725
  const tips = getActiveTips({
445
726
  workers: 1,
@@ -460,8 +741,26 @@ export async function runFixLoop(options) {
460
741
  const absFile = file.startsWith('/') ? file : join(cwd, file);
461
742
  const result = await fixFile(absFile, options, generator, undefined, memory.toPromptSection());
462
743
  filesProcessed++;
463
- if (result.success)
464
- filesFixed++;
744
+ if (result.success) {
745
+ if (result.skipped) {
746
+ filesAlreadyPassing++;
747
+ victimFiles.push(absFile);
748
+ }
749
+ else
750
+ filesFixed++;
751
+ }
752
+ else if (options.regenerateOnFailure) {
753
+ log(chalk.yellow(` Fix exhausted — falling back to full regeneration...`));
754
+ const regenResult = await regenerateFile(absFile, options, undefined, memory.toPromptSection());
755
+ if (regenResult.success) {
756
+ filesFixed++;
757
+ }
758
+ else {
759
+ stillFailingFiles.push(file);
760
+ if (regenResult.error)
761
+ errors.push(regenResult.error);
762
+ }
763
+ }
465
764
  else {
466
765
  stillFailingFiles.push(file);
467
766
  if (result.error)
@@ -479,6 +778,14 @@ export async function runFixLoop(options) {
479
778
  else
480
779
  await clearFixCache(cwd);
481
780
  }
482
- return { filesProcessed, filesFixed, errors };
781
+ let pollutersFixed = 0;
782
+ let victimsRegenerated = 0;
783
+ if (options.fixPolluters && victimFiles.length > 0) {
784
+ log(chalk.bold(`\n Scanning for test polluters (${victimFiles.length} victim file(s) pass alone but fail in suite)...`));
785
+ const polluterResult = await findAndFixPolluters(victimFiles, options, memorySnapshot);
786
+ pollutersFixed = polluterResult.pollutersFixed;
787
+ victimsRegenerated = polluterResult.victimsRegenerated;
788
+ }
789
+ return { filesProcessed, filesFixed, filesAlreadyPassing, pollutersFixed, victimsRegenerated, errors };
483
790
  }
484
791
  //# sourceMappingURL=fix-loop.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fix-loop.js","sourceRoot":"","sources":["../../src/agent/fix-loop.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fix-loop.js","sourceRoot":"","sources":["../../src/agent/fix-loop.ts"],"names":[],"mappings":"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"}