lacuna-cli 0.1.6 → 0.1.7

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 (86) hide show
  1. package/README.md +45 -11
  2. package/dist/agent/context.d.ts +2 -0
  3. package/dist/agent/context.d.ts.map +1 -1
  4. package/dist/agent/context.js +314 -1
  5. package/dist/agent/context.js.map +1 -1
  6. package/dist/agent/fix-loop.d.ts.map +1 -1
  7. package/dist/agent/fix-loop.js +36 -8
  8. package/dist/agent/fix-loop.js.map +1 -1
  9. package/dist/agent/generator.d.ts +5 -1
  10. package/dist/agent/generator.d.ts.map +1 -1
  11. package/dist/agent/generator.js +51 -12
  12. package/dist/agent/generator.js.map +1 -1
  13. package/dist/agent/loop.d.ts.map +1 -1
  14. package/dist/agent/loop.js +83 -38
  15. package/dist/agent/loop.js.map +1 -1
  16. package/dist/agent/{prompts.d.ts → prompts/index.d.ts} +4 -2
  17. package/dist/agent/prompts/index.d.ts.map +1 -0
  18. package/dist/agent/{prompts.js → prompts/index.js} +162 -341
  19. package/dist/agent/prompts/index.js.map +1 -0
  20. package/dist/agent/prompts/nextjs.d.ts +12 -0
  21. package/dist/agent/prompts/nextjs.d.ts.map +1 -0
  22. package/dist/agent/prompts/nextjs.js +138 -0
  23. package/dist/agent/prompts/nextjs.js.map +1 -0
  24. package/dist/agent/prompts/react-native.d.ts +4 -0
  25. package/dist/agent/prompts/react-native.d.ts.map +1 -0
  26. package/dist/agent/prompts/react-native.js +82 -0
  27. package/dist/agent/prompts/react-native.js.map +1 -0
  28. package/dist/agent/prompts/react.d.ts +2 -0
  29. package/dist/agent/prompts/react.d.ts.map +1 -0
  30. package/dist/agent/prompts/react.js +48 -0
  31. package/dist/agent/prompts/react.js.map +1 -0
  32. package/dist/agent/prompts/runners/js-common.d.ts +2 -0
  33. package/dist/agent/prompts/runners/js-common.d.ts.map +1 -0
  34. package/dist/agent/prompts/runners/js-common.js +13 -0
  35. package/dist/agent/prompts/runners/js-common.js.map +1 -0
  36. package/dist/agent/prompts/runners/typescript.d.ts +2 -0
  37. package/dist/agent/prompts/runners/typescript.d.ts.map +1 -0
  38. package/dist/agent/prompts/runners/typescript.js +12 -0
  39. package/dist/agent/prompts/runners/typescript.js.map +1 -0
  40. package/dist/agent/prompts/runners/vitest.d.ts +2 -0
  41. package/dist/agent/prompts/runners/vitest.d.ts.map +1 -0
  42. package/dist/agent/prompts/runners/vitest.js +23 -0
  43. package/dist/agent/prompts/runners/vitest.js.map +1 -0
  44. package/dist/agent/prompts/vue.d.ts +3 -0
  45. package/dist/agent/prompts/vue.d.ts.map +1 -0
  46. package/dist/agent/prompts/vue.js +29 -0
  47. package/dist/agent/prompts/vue.js.map +1 -0
  48. package/dist/commands/analyze.d.ts.map +1 -1
  49. package/dist/commands/analyze.js +43 -32
  50. package/dist/commands/analyze.js.map +1 -1
  51. package/dist/commands/fix.js +1 -1
  52. package/dist/commands/fix.js.map +1 -1
  53. package/dist/commands/init.d.ts.map +1 -1
  54. package/dist/commands/init.js +104 -14
  55. package/dist/commands/init.js.map +1 -1
  56. package/dist/lib/coverage/gaps.d.ts.map +1 -1
  57. package/dist/lib/coverage/gaps.js +33 -3
  58. package/dist/lib/coverage/gaps.js.map +1 -1
  59. package/dist/lib/coverage/index.d.ts +1 -1
  60. package/dist/lib/coverage/index.d.ts.map +1 -1
  61. package/dist/lib/coverage/index.js +1 -1
  62. package/dist/lib/coverage/index.js.map +1 -1
  63. package/dist/lib/detector.d.ts.map +1 -1
  64. package/dist/lib/detector.js +26 -12
  65. package/dist/lib/detector.js.map +1 -1
  66. package/dist/lib/providers/anthropic.d.ts.map +1 -1
  67. package/dist/lib/providers/anthropic.js +30 -1
  68. package/dist/lib/providers/anthropic.js.map +1 -1
  69. package/dist/lib/providers/openai-compatible.d.ts.map +1 -1
  70. package/dist/lib/providers/openai-compatible.js +35 -2
  71. package/dist/lib/providers/openai-compatible.js.map +1 -1
  72. package/dist/lib/providers/types.d.ts +4 -0
  73. package/dist/lib/providers/types.d.ts.map +1 -1
  74. package/dist/lib/providers/types.js +10 -0
  75. package/dist/lib/providers/types.js.map +1 -1
  76. package/dist/lib/validate.d.ts.map +1 -1
  77. package/dist/lib/validate.js +52 -20
  78. package/dist/lib/validate.js.map +1 -1
  79. package/dist/lib/worker-display.d.ts +7 -0
  80. package/dist/lib/worker-display.d.ts.map +1 -1
  81. package/dist/lib/worker-display.js +35 -2
  82. package/dist/lib/worker-display.js.map +1 -1
  83. package/oclif.manifest.json +309 -0
  84. package/package.json +1 -1
  85. package/dist/agent/prompts.d.ts.map +0 -1
  86. package/dist/agent/prompts.js.map +0 -1
package/README.md CHANGED
@@ -23,16 +23,18 @@ lacuna analyze / lacuna generate lacuna fix
23
23
  │ └── For each failing test file:
24
24
  └── For each gap: (generate only) ├── Runs file alone → captures error output
25
25
  ├── Reads source + existing tests ├── Reads the test file + its source file
26
- ├── Reads imported type definitions ├── Reads imported type definitions
27
- ├── Reads tsconfig paths, deps, ├── Reads tsconfig paths, deps, setup file
28
- and test setup file ├── Detects network mocking issues
29
- ├── Sends full context to AI model ├── AI reasons in <thinking>, writes fix
30
- ├── AI reasons then writes tests ├── Writes the fixed file
31
- ├── Runs the tests ├── ✅ Pass → next file
32
- ├── Pass next file └── ❌ Fail → records what failed,
33
- └── Fail → records what failed, detects oscillation (stops early),
34
- detects oscillation (stops early), retries with negative constraints
35
- retries with negative constraints restores original on final failure
26
+ ├── Extracts used symbol definitions ├── Reads imported type definitions
27
+ │ (hook return shapes, service ├── Reads tsconfig paths, deps, setup file
28
+ method sigs, transitive types) ├── Detects network mocking issues
29
+ ├── Reads tsconfig paths, deps, ├── AI reasons in <thinking>, writes fix
30
+ │ and test setup file ├── Writes the fixed file
31
+ ├── Sends full context to AI model ├── ✅ Pass → next file
32
+ ├── AI reasons then writes tests └── ❌ Fail → records what failed,
33
+ ├── Runs the tests detects oscillation (stops early),
34
+ ├── Pass → next file retries with negative constraints
35
+ └── Fail → records what failed, restores original on final failure
36
+ detects oscillation (stops early),
37
+ retries with negative constraints
36
38
  restores original on final failure
37
39
  ```
38
40
 
@@ -60,6 +62,33 @@ lacuna generate # AI fills the gaps
60
62
 
61
63
  ---
62
64
 
65
+ ## Supported stacks
66
+
67
+ Lacuna's AI prompts are tuned for frameworks that have been field-tested. Runner support (coverage collection + test generation) exists for other languages, but prompt guidance quality will vary.
68
+
69
+ ### Tested — works well
70
+
71
+ | Stack | Test runner | What's tuned |
72
+ |---|---|---|
73
+ | **TypeScript / JavaScript** (utilities, services, hooks) | Vitest, Jest | Hook return shape extraction, service method verification, TypeScript type-safety rules (`T[]` not `Array<T>`, no `as any` on mock shapes), mock structure (object vs factory), `jest.mocked()` / `vi.mocked()` pattern, factory hoisting rules |
74
+ | **React** | Vitest, Jest | RTL query hierarchy, `act()` async rules, loading state (unmounted vs disabled button), unhandled rejection handling, mock lifecycle (`mockResolvedValueOnce`), `findBy` over `waitFor` preference |
75
+ | **React Native** / Expo | Jest (`jest-expo`) | RNTL v14 async contract (`render()` + `fireEvent` must be awaited), infra mocks (Reanimated, AsyncStorage, safe area, vector icons), compound component factories, mock shape accuracy (hook destructure matching, service method names), dynamic text template resolution, toast vs screen text, icon-only button handling, `useFocusEffect` mocking, test cascade detection |
76
+ | **Next.js** | Vitest | Server/client boundary mocks, `next/navigation`, `next/headers`, `next/cache`, server actions, `'use client'`/`'use server'` directive detection |
77
+
78
+ ### Supported — not yet field-tested
79
+
80
+ | Stack | Test runner | Status |
81
+ |---|---|---|
82
+ | Vue | Vitest | Runner works. `@testing-library/vue` guidance included. Field-testing pending. |
83
+ | Python | pytest | Runner + coverage detection works. AI prompt guidance is generic — framework-specific tuning (pytest-django, FastAPI, etc.) will be added once field-tested. |
84
+ | PHP | PHPUnit, Pest | Runner + coverage detection works. Framework-specific prompt tuning coming once field-tested. |
85
+
86
+ ### Runner support only
87
+
88
+ Go, Ruby (RSpec), Rust (cargo test), C# (dotnet test), Java (Gradle / Maven), Swift — lacuna can run their suites and collect coverage, but AI prompt guidance is not yet tuned for these.
89
+
90
+ ---
91
+
63
92
  ## Commands
64
93
 
65
94
  ### `lacuna init`
@@ -473,7 +502,12 @@ lacuna/
473
502
  │ │ ├── fix-loop.ts # fix → run → retry loop for failing tests
474
503
  │ │ ├── context.ts # builds context for the AI (source + tests + mocks + type definitions)
475
504
  │ │ ├── generator.ts # calls the AI model, manages conversation history
476
- │ │ └── prompts.ts # system prompt + user prompt templates
505
+ │ │ └── prompts/ # prompt builders split by framework
506
+ │ │ ├── index.ts # system prompt + generate/fix/retry prompt assembly
507
+ │ │ ├── react-native.ts # RNTL v14 rules, infra mock guidance, error detectors
508
+ │ │ ├── nextjs.ts # Next.js boundary analysis, server action mocks
509
+ │ │ ├── react.ts # React web testing rules (act, RTL, timers)
510
+ │ │ └── vue.ts # Vue testing guidance
477
511
  │ ├── lib/
478
512
  │ │ ├── config.ts # cosmiconfig loader + zod schema
479
513
  │ │ ├── detector.ts # auto-detects test runner and language
@@ -14,11 +14,13 @@ export interface FileContext {
14
14
  tsconfigPaths: string | null;
15
15
  typeDefinitions: string | null;
16
16
  localImportPaths: string[] | null;
17
+ localImportContents: string | null;
17
18
  reactMajorVersion: number | null;
18
19
  }
19
20
  export declare function computeRelativeImport(fromFile: string, toFile: string): string;
20
21
  export declare function collectTypeDefinitions(sourceCode: string, absoluteSourcePath: string, cwd: string): Promise<string | null>;
21
22
  export declare function collectLocalImportPaths(sourceCode: string, absoluteSourcePath: string, absoluteTestFilePath: string, cwd: string): Promise<string[] | null>;
23
+ export declare function collectUsedSymbolsContext(sourceCode: string, absoluteSourcePath: string, cwd: string): Promise<string | null>;
22
24
  export declare function detectReactMajorVersion(cwd: string): Promise<number | null>;
23
25
  export declare function buildFixFileContext(absTestPath: string, cwd: string, config?: LacunaConfig): Promise<Pick<FileContext, 'mocksCode' | 'mocksImportPath' | 'setupFileCode' | 'packageDeps' | 'tsconfigPaths'>>;
24
26
  export declare function buildFileContext(sourceFilePath: string, cwd: string, env: DetectedEnvironment, config?: LacunaConfig): Promise<FileContext>;
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/agent/context.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAEpD,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,iBAAiB,EAAE,MAAM,CAAA;IACzB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,gBAAgB,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;IACjC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAA;CACjC;AAGD,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAI9E;AA8JD,wBAAsB,sBAAsB,CAC1C,UAAU,EAAE,MAAM,EAClB,kBAAkB,EAAE,MAAM,EAC1B,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA6CxB;AAMD,wBAAsB,uBAAuB,CAC3C,UAAU,EAAE,MAAM,EAClB,kBAAkB,EAAE,MAAM,EAC1B,oBAAoB,EAAE,MAAM,EAC5B,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAmB1B;AAGD,wBAAsB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAWjF;AAkFD,wBAAsB,mBAAmB,CACvC,WAAW,EAAE,MAAM,EACnB,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,YAAY,GACpB,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,iBAAiB,GAAG,eAAe,GAAG,aAAa,GAAG,eAAe,CAAC,CAAC,CAwBjH;AAED,wBAAsB,gBAAgB,CACpC,cAAc,EAAE,MAAM,EACtB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,mBAAmB,EACxB,MAAM,CAAC,EAAE,YAAY,GACpB,OAAO,CAAC,WAAW,CAAC,CAuDtB"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/agent/context.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAEpD,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,iBAAiB,EAAE,MAAM,CAAA;IACzB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,gBAAgB,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;IACjC,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAA;CACjC;AAGD,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAI9E;AA8JD,wBAAsB,sBAAsB,CAC1C,UAAU,EAAE,MAAM,EAClB,kBAAkB,EAAE,MAAM,EAC1B,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA6CxB;AAMD,wBAAsB,uBAAuB,CAC3C,UAAU,EAAE,MAAM,EAClB,kBAAkB,EAAE,MAAM,EAC1B,oBAAoB,EAAE,MAAM,EAC5B,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAmB1B;AA0ND,wBAAsB,yBAAyB,CAC7C,UAAU,EAAE,MAAM,EAClB,kBAAkB,EAAE,MAAM,EAC1B,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA2ExB;AAGD,wBAAsB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAWjF;AAkFD,wBAAsB,mBAAmB,CACvC,WAAW,EAAE,MAAM,EACnB,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,YAAY,GACpB,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,iBAAiB,GAAG,eAAe,GAAG,aAAa,GAAG,eAAe,CAAC,CAAC,CAwBjH;AAED,wBAAsB,gBAAgB,CACpC,cAAc,EAAE,MAAM,EACtB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,mBAAmB,EACxB,MAAM,CAAC,EAAE,YAAY,GACpB,OAAO,CAAC,WAAW,CAAC,CAyDtB"}
@@ -207,6 +207,317 @@ export async function collectLocalImportPaths(sourceCode, absoluteSourcePath, ab
207
207
  }
208
208
  return results.length > 0 ? results : null;
209
209
  }
210
+ // ─── Used-symbols context ─────────────────────────────────────────────────────
211
+ // Builds a targeted map of exactly what the source component uses from its local
212
+ // imports: hook return shapes, service method signatures, type declarations.
213
+ // No arbitrary line cap — output is naturally bounded by what's actually referenced.
214
+ // BFS follows transitive type references (e.g. Draw type used by useDraws hook).
215
+ // Extract a brace-balanced block starting at lines[startIdx].
216
+ // Also handles brace-less type aliases by continuing while a continuation is implied.
217
+ function extractBraceBlock(lines, startIdx) {
218
+ const block = [];
219
+ let depth = 0;
220
+ let opened = false;
221
+ for (let i = startIdx; i < lines.length; i++) {
222
+ block.push(lines[i]);
223
+ for (const ch of lines[i]) {
224
+ if (ch === '{') {
225
+ depth++;
226
+ opened = true;
227
+ }
228
+ else if (ch === '}')
229
+ depth--;
230
+ }
231
+ if (opened && depth <= 0)
232
+ break;
233
+ if (!opened && i > startIdx) {
234
+ const t = lines[i].trimEnd();
235
+ const nextStartsCont = (i + 1 < lines.length) && /^\s*[|&]/.test(lines[i + 1]);
236
+ const isCont = t.endsWith('|') || t.endsWith('&') || t.endsWith(',') || t.endsWith('=') || nextStartsCont;
237
+ if (!isCont)
238
+ break;
239
+ }
240
+ }
241
+ return block.join('\n');
242
+ }
243
+ const MAX_FN_LINES = 25;
244
+ // For long functions/hooks: keep signature + "// ..." + last return statement.
245
+ function summariseFunctionBlock(code) {
246
+ const lines = code.split('\n');
247
+ if (lines.length <= MAX_FN_LINES)
248
+ return code;
249
+ let bodyOpen = 0;
250
+ for (let i = 0; i < lines.length; i++) {
251
+ if (lines[i].includes('{')) {
252
+ bodyOpen = i;
253
+ break;
254
+ }
255
+ }
256
+ let returnStart = -1;
257
+ for (let i = lines.length - 2; i > bodyOpen; i--) {
258
+ if (/^\s*return\b/.test(lines[i])) {
259
+ returnStart = i;
260
+ break;
261
+ }
262
+ }
263
+ const sig = lines.slice(0, bodyOpen + 1);
264
+ if (returnStart === -1)
265
+ return [...sig, ' // ...', '}'].join('\n');
266
+ return [...sig, ' // ...', ...lines.slice(returnStart)].join('\n');
267
+ }
268
+ // For classes: keep declaration + method signatures, collapse all bodies.
269
+ function summariseClassBlock(code) {
270
+ const lines = code.split('\n');
271
+ const out = [lines[0]];
272
+ let depth = 0;
273
+ for (const ch of lines[0]) {
274
+ if (ch === '{')
275
+ depth++;
276
+ else if (ch === '}')
277
+ depth--;
278
+ }
279
+ let i = 1;
280
+ while (i < lines.length) {
281
+ const line = lines[i];
282
+ const t = line.trim();
283
+ if (!t || /^[/*]/.test(t) || t === '}') {
284
+ out.push(line);
285
+ for (const ch of line) {
286
+ if (ch === '{')
287
+ depth++;
288
+ else if (ch === '}')
289
+ depth--;
290
+ }
291
+ i++;
292
+ continue;
293
+ }
294
+ // At class body depth (1): detect method-like lines by presence of '('
295
+ if (depth === 1 && /\(/.test(t) && !/^\s*\/\//.test(line)) {
296
+ const sigLines = [];
297
+ let d = depth;
298
+ let j = i;
299
+ while (j < lines.length) {
300
+ const l = lines[j];
301
+ d += (l.match(/\{/g) ?? []).length - (l.match(/\}/g) ?? []).length;
302
+ sigLines.push(l);
303
+ j++;
304
+ if (d > depth)
305
+ break; // body opened
306
+ if (d === depth)
307
+ break; // abstract / no body
308
+ }
309
+ // Show sig lines but strip the opening `{` from the last one
310
+ for (let k = 0; k < sigLines.length - 1; k++)
311
+ out.push(sigLines[k]);
312
+ const last = sigLines[sigLines.length - 1].replace(/\s*\{[^}]*$/, '').trimEnd();
313
+ if (last.trim())
314
+ out.push(last);
315
+ if (d > depth) {
316
+ // Skip method body
317
+ i = j;
318
+ while (i < lines.length && d > depth) {
319
+ d += (lines[i].match(/\{/g) ?? []).length - (lines[i].match(/\}/g) ?? []).length;
320
+ i++;
321
+ }
322
+ depth = d;
323
+ continue;
324
+ }
325
+ depth = d;
326
+ i = j;
327
+ continue;
328
+ }
329
+ out.push(line);
330
+ for (const ch of line) {
331
+ if (ch === '{')
332
+ depth++;
333
+ else if (ch === '}')
334
+ depth--;
335
+ }
336
+ i++;
337
+ }
338
+ return out.join('\n');
339
+ }
340
+ // PascalCase identifiers in code that look like local type references.
341
+ const TYPE_REF_BUILTINS = new Set([
342
+ 'React', 'Promise', 'String', 'Number', 'Boolean', 'Array', 'Object', 'Error',
343
+ 'Date', 'Map', 'Set', 'RegExp', 'Function', 'Symbol', 'URL', 'JSON', 'Event',
344
+ 'HTMLElement', 'Element', 'Node', 'Window', 'Document', 'MouseEvent', 'KeyboardEvent',
345
+ 'FC', 'ReactNode', 'ReactElement', 'ComponentProps', 'Dispatch', 'SetStateAction',
346
+ 'MutableRefObject', 'RefObject', 'CSSProperties', 'SyntheticEvent', 'PropsWithChildren',
347
+ 'Partial', 'Required', 'Readonly', 'Record', 'Pick', 'Omit', 'Exclude', 'Extract',
348
+ 'NonNullable', 'ReturnType', 'InstanceType', 'Parameters', 'Awaited',
349
+ 'View', 'Text', 'ScrollView', 'FlatList', 'TouchableOpacity', 'Animated',
350
+ ]);
351
+ function extractTypeRefs(code) {
352
+ const found = new Set();
353
+ for (const m of code.matchAll(/\b([A-Z][a-zA-Z0-9]+)\b/g)) {
354
+ if (!TYPE_REF_BUILTINS.has(m[1]))
355
+ found.add(m[1]);
356
+ }
357
+ return [...found];
358
+ }
359
+ function extractAllExportNames(code) {
360
+ const names = [];
361
+ for (const m of code.matchAll(/^export\s+(?:async\s+)?(?:function|const|class|interface|type|enum)\s+(\w+)/gm))
362
+ names.push(m[1]);
363
+ for (const m of code.matchAll(/^export\s+\{([^}]+)\}/gm)) {
364
+ for (const part of m[1].split(',')) {
365
+ const name = part.trim().split(/\s+as\s+/).pop()?.trim();
366
+ if (name && /^\w+$/.test(name))
367
+ names.push(name);
368
+ }
369
+ }
370
+ return [...new Set(names)];
371
+ }
372
+ function extractSymbolFromCode(code, name) {
373
+ const lines = code.split('\n');
374
+ for (let i = 0; i < lines.length; i++) {
375
+ const line = lines[i];
376
+ if (!/\bexport\b/.test(line))
377
+ continue;
378
+ // Re-export: export [type] { X as Y } from './path'
379
+ const reFrom = line.match(/^export\s+(?:type\s+)?\{([^}]+)\}\s+from\s+['"]([^'"]+)['"]/);
380
+ if (reFrom) {
381
+ for (const part of reFrom[1].split(',')) {
382
+ const halves = part.trim().replace(/^type\s+/, '').split(/\s+as\s+/);
383
+ const exported = (halves[1] ?? halves[0]).trim();
384
+ if (exported === name)
385
+ return { code: '', reexportPath: reFrom[2], reexportName: halves[0].trim() };
386
+ }
387
+ continue;
388
+ }
389
+ if (name === 'default' && /^\s*export\s+default\b/.test(line)) {
390
+ return { code: summariseFunctionBlock(extractBraceBlock(lines, i)) };
391
+ }
392
+ if (new RegExp(`^\\s*export\\s+(?:async\\s+)?function\\s*\\*?\\s*${name}\\s*[<(]`).test(line)) {
393
+ return { code: summariseFunctionBlock(extractBraceBlock(lines, i)) };
394
+ }
395
+ if (new RegExp(`^\\s*export\\s+const\\s+${name}\\s*[=:]`).test(line)) {
396
+ return { code: summariseFunctionBlock(extractBraceBlock(lines, i)) };
397
+ }
398
+ if (new RegExp(`^\\s*export\\s+(?:abstract\\s+)?class\\s+${name}\\b`).test(line)) {
399
+ return { code: summariseClassBlock(extractBraceBlock(lines, i)) };
400
+ }
401
+ if (new RegExp(`^\\s*export\\s+(?:default\\s+)?(?:interface|type|enum)\\s+${name}\\b`).test(line)) {
402
+ return { code: extractBraceBlock(lines, i) };
403
+ }
404
+ }
405
+ return null;
406
+ }
407
+ // Parse which symbols a source file imports from each local dependency.
408
+ // Returns Map<absoluteFilePath, Set<symbolName>> — '*' means namespace import.
409
+ async function parseImportedSymbols(code, fromAbsPath, cwd, aliases) {
410
+ const result = new Map();
411
+ for (const m of code.matchAll(/^import(?:\s+type)?\s+(.+?)\s+from\s+['"]([^'"]+)['"]/gm)) {
412
+ const clause = m[1].trim();
413
+ const base = resolveLocalImport(m[2], fromAbsPath, cwd, aliases);
414
+ if (!base)
415
+ continue;
416
+ const file = await resolveToFile(base);
417
+ if (!file)
418
+ continue;
419
+ const syms = result.get(file) ?? new Set();
420
+ result.set(file, syms);
421
+ if (/\*\s+as\s+/.test(clause)) {
422
+ syms.add('*');
423
+ continue;
424
+ }
425
+ const namedMatch = clause.match(/\{([^}]+)\}/);
426
+ if (namedMatch) {
427
+ for (const part of namedMatch[1].split(',')) {
428
+ const name = part.trim().replace(/^type\s+/, '').split(/\s+as\s+/)[0].trim();
429
+ if (/^\w+$/.test(name))
430
+ syms.add(name);
431
+ }
432
+ }
433
+ const stripped = clause.replace(/\{[^}]*\}/, '').replace(/\*\s+as\s+\w+/, '').trim();
434
+ const def = stripped.match(/^(\w+)/);
435
+ if (def && def[1] !== 'type')
436
+ syms.add('default');
437
+ }
438
+ return result;
439
+ }
440
+ const MAX_SYMBOLS_TOTAL_CHARS = 14000;
441
+ // Builds targeted context from only the symbols the source component actually uses.
442
+ // For each imported symbol: extracts its declaration, collapses function bodies to
443
+ // signature + return, collapses class bodies to method signatures.
444
+ // Transitively follows PascalCase type references through their import chains (BFS).
445
+ export async function collectUsedSymbolsContext(sourceCode, absoluteSourcePath, cwd) {
446
+ const aliases = await readTsconfigAliases(cwd);
447
+ const directImports = await parseImportedSymbols(sourceCode, absoluteSourcePath, cwd, aliases);
448
+ const queue = [];
449
+ for (const [file, syms] of directImports)
450
+ queue.push({ file, symbols: new Set(syms) });
451
+ const visited = new Set(); // `${file}::${symbol}`
452
+ const fileSections = [];
453
+ let totalChars = 0;
454
+ while (queue.length > 0 && totalChars < MAX_SYMBOLS_TOTAL_CHARS) {
455
+ const { file, symbols } = queue.shift();
456
+ let fileContent;
457
+ try {
458
+ fileContent = await readFile(file, 'utf-8');
459
+ }
460
+ catch {
461
+ continue;
462
+ }
463
+ const toProcess = symbols.has('*') ? new Set(extractAllExportNames(fileContent)) : symbols;
464
+ const fileBlocks = [];
465
+ const typeRefs = new Set();
466
+ for (const sym of toProcess) {
467
+ const key = `${file}::${sym}`;
468
+ if (visited.has(key))
469
+ continue;
470
+ visited.add(key);
471
+ const result = extractSymbolFromCode(fileContent, sym);
472
+ if (!result)
473
+ continue;
474
+ if (result.reexportPath) {
475
+ const base = resolveLocalImport(result.reexportPath, file, cwd, aliases);
476
+ if (base) {
477
+ const reFile = await resolveToFile(base);
478
+ if (reFile) {
479
+ const reSym = result.reexportName ?? sym;
480
+ if (!visited.has(`${reFile}::${reSym}`))
481
+ queue.push({ file: reFile, symbols: new Set([reSym]) });
482
+ }
483
+ }
484
+ continue;
485
+ }
486
+ if (result.code) {
487
+ fileBlocks.push(result.code);
488
+ for (const ref of extractTypeRefs(result.code))
489
+ typeRefs.add(ref);
490
+ }
491
+ }
492
+ // Follow type references: first check same file, then follow cross-file imports
493
+ if (typeRefs.size > 0) {
494
+ // Same-file types (defined in this file but not yet extracted)
495
+ for (const ref of typeRefs) {
496
+ const key = `${file}::${ref}`;
497
+ if (visited.has(key))
498
+ continue;
499
+ const local = extractSymbolFromCode(fileContent, ref);
500
+ if (local?.code) {
501
+ visited.add(key);
502
+ fileBlocks.push(local.code);
503
+ }
504
+ }
505
+ // Cross-file types (imported by this file from another local file)
506
+ const typeImports = await parseImportedSymbols(fileContent, file, cwd, aliases);
507
+ for (const [typeFile, typeSyms] of typeImports) {
508
+ const relevant = new Set([...typeSyms].filter(s => typeRefs.has(s)));
509
+ if (relevant.size > 0)
510
+ queue.push({ file: typeFile, symbols: relevant });
511
+ }
512
+ }
513
+ if (fileBlocks.length > 0) {
514
+ const section = `// from ${relative(cwd, file)}\n${fileBlocks.join('\n\n')}`;
515
+ fileSections.push(section);
516
+ totalChars += section.length;
517
+ }
518
+ }
519
+ return fileSections.length > 0 ? fileSections.join('\n\n') : null;
520
+ }
210
521
  // Reads the React major version from package.json, or null if React is not a dependency.
211
522
  export async function detectReactMajorVersion(cwd) {
212
523
  try {
@@ -339,11 +650,12 @@ export async function buildFileContext(sourceFilePath, cwd, env, config) {
339
650
  }
340
651
  catch { /* setup file not found — skip */ }
341
652
  }
342
- const [packageDeps, tsconfigPaths, typeDefinitions, localImportPaths, reactMajorVersion] = await Promise.all([
653
+ const [packageDeps, tsconfigPaths, typeDefinitions, localImportPaths, localImportContents, reactMajorVersion] = await Promise.all([
343
654
  readPackageDeps(cwd),
344
655
  readTsconfigPaths(cwd),
345
656
  collectTypeDefinitions(sourceCode, absoluteSource, cwd),
346
657
  collectLocalImportPaths(sourceCode, absoluteSource, suggestedTestFile, cwd),
658
+ collectUsedSymbolsContext(sourceCode, absoluteSource, cwd),
347
659
  detectReactMajorVersion(cwd),
348
660
  ]);
349
661
  return {
@@ -360,6 +672,7 @@ export async function buildFileContext(sourceFilePath, cwd, env, config) {
360
672
  tsconfigPaths,
361
673
  typeDefinitions,
362
674
  localImportPaths,
675
+ localImportContents,
363
676
  reactMajorVersion,
364
677
  };
365
678
  }
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/agent/context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/agent/context.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"fix-loop.d.ts","sourceRoot":"","sources":["../../src/agent/fix-loop.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAiB7D,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,YAAY,CAAA;IACpB,GAAG,EAAE,mBAAmB,CAAA;IACxB,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,OAAO,CAAA;IACf,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;CAC3B;AAoCD,MAAM,WAAW,SAAS;IACxB,cAAc,EAAE,MAAM,CAAA;IACtB,UAAU,EAAE,MAAM,CAAA;IAClB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,cAAc,EAAE,MAAM,CAAA;IACtB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,MAAM,EAAE,MAAM,EAAE,CAAA;CACjB;AA6nBD,wBAAsB,UAAU,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC,CAwJxE"}
1
+ {"version":3,"file":"fix-loop.d.ts","sourceRoot":"","sources":["../../src/agent/fix-loop.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAiB7D,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,YAAY,CAAA;IACpB,GAAG,EAAE,mBAAmB,CAAA;IACxB,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,OAAO,CAAA;IACf,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;CAC3B;AAoCD,MAAM,WAAW,SAAS;IACxB,cAAc,EAAE,MAAM,CAAA;IACtB,UAAU,EAAE,MAAM,CAAA;IAClB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,cAAc,EAAE,MAAM,CAAA;IACtB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,MAAM,EAAE,MAAM,EAAE,CAAA;CACjB;AAypBD,wBAAsB,UAAU,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC,CAwJxE"}
@@ -7,7 +7,7 @@ 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, OSCILLATION_ESCAPE_MESSAGE } from './generator.js';
10
+ import { TestGenerator, TruncatedOutputError, OscillationError, ModelStallError, TRUNCATION_RETRY_MESSAGE, OSCILLATION_ESCAPE_MESSAGE } from './generator.js';
11
11
  import { processGap } from './loop.js';
12
12
  import { ProjectMemory } from './project-memory.js';
13
13
  import { getActiveTips, createTipRotator, formatTip } from '../lib/tips.js';
@@ -47,7 +47,7 @@ async function clearFixCache(cwd) {
47
47
  catch { /* already gone — fine */ }
48
48
  }
49
49
  // ─── Parse failing test files from runner output ──────────────────────────────
50
- 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
51
  function stripAnsi(s) {
52
52
  // Strip all CSI sequences (ESC [ ... letter), OSC sequences, carriage returns
53
53
  return s.replace(/\x1B\[[0-9;]*[A-Za-z]/g, '').replace(/\x1B\][^\x1B]*/g, '').replace(/\r/g, '');
@@ -200,15 +200,25 @@ async function fixFile(testFilePath, options, generator, onStatus, projectMemory
200
200
  ]);
201
201
  // Build mocks/setup context relative to the actual test file path
202
202
  const ctx = await buildFixFileContext(absTestPath, cwd, config).catch(() => null);
203
- if (!onStatus)
204
- log(chalk.dim(` Sending to ${config.model} for repair...`));
205
- onStatus?.({ phase: 'generating', file: shortPath });
203
+ let stallRetries = 0;
204
+ const MAX_STALL_RETRIES = 2;
206
205
  for (let attempt = 1; attempt <= config.maxIterations; attempt++) {
207
206
  if (attempt > 1) {
208
207
  if (!onStatus)
209
208
  log(chalk.yellow(`\n Retry ${attempt}/${config.maxIterations}...`));
210
- onStatus?.({ phase: 'retrying', file: shortPath, attempt, max: config.maxIterations });
211
209
  }
210
+ // Show waiting phase before the model call; transition to generating/retrying on first token
211
+ onStatus?.({ phase: 'waiting', file: shortPath, since: Date.now() });
212
+ const currentAttempt = attempt;
213
+ generator.setFirstTokenCallback(() => {
214
+ onStatus?.({
215
+ phase: currentAttempt === 1 ? 'generating' : 'retrying',
216
+ file: shortPath,
217
+ ...(currentAttempt > 1 ? { attempt: currentAttempt, max: config.maxIterations } : {}),
218
+ });
219
+ });
220
+ if (!onStatus)
221
+ log(chalk.dim(` ⌛ Waiting for model response...`));
212
222
  let viewer;
213
223
  if (verbose && !onStatus) {
214
224
  viewer = new StreamingFileViewer(shortPath);
@@ -225,6 +235,7 @@ async function fixFile(testFilePath, options, generator, onStatus, projectMemory
225
235
  sourceCode,
226
236
  sourceImportPath,
227
237
  errorOutput,
238
+ env,
228
239
  mocksCode: ctx?.mocksCode ?? null,
229
240
  mocksImportPath: ctx?.mocksImportPath ?? null,
230
241
  setupFileCode: ctx?.setupFileCode ?? null,
@@ -240,6 +251,18 @@ async function fixFile(testFilePath, options, generator, onStatus, projectMemory
240
251
  catch (err) {
241
252
  viewer?.stop();
242
253
  generator.setTokenCallback(undefined);
254
+ generator.setFirstTokenCallback(undefined);
255
+ if (err instanceof ModelStallError) {
256
+ if (stallRetries < MAX_STALL_RETRIES) {
257
+ stallRetries++;
258
+ if (!onStatus)
259
+ log(chalk.yellow(`\n ⌛ Model stalled — reconnecting (${stallRetries}/${MAX_STALL_RETRIES})...`));
260
+ onStatus?.({ phase: 'waiting', file: shortPath, since: Date.now() });
261
+ await new Promise(r => setTimeout(r, 3000));
262
+ attempt--; // don't consume an AI iteration for a connection stall
263
+ continue;
264
+ }
265
+ }
243
266
  if (err instanceof TruncatedOutputError) {
244
267
  errorOutput = TRUNCATION_RETRY_MESSAGE;
245
268
  if (!onStatus)
@@ -272,6 +295,7 @@ async function fixFile(testFilePath, options, generator, onStatus, projectMemory
272
295
  }
273
296
  viewer?.stop();
274
297
  generator.setTokenCallback(undefined);
298
+ generator.setFirstTokenCallback(undefined);
275
299
  if (dryRun) {
276
300
  if (!onStatus) {
277
301
  log(chalk.yellow('\n [dry-run] Would write:'));
@@ -346,11 +370,15 @@ async function fixFile(testFilePath, options, generator, onStatus, projectMemory
346
370
  return { success: true };
347
371
  }
348
372
  const rawRunOutput = result.stdout + '\n' + result.stderr;
349
- const extracted = enrichNoTestsError(extractTestFailure(rawRunOutput));
373
+ const rawExtracted = extractTestFailure(rawRunOutput);
350
374
  const structureBroken = isZeroTestsOutput(rawRunOutput);
351
375
  const currentPassCount = structureBroken ? 0 : parsePassCount(rawRunOutput);
376
+ // enrichNoTestsError adds guidance for genuinely missing test functions;
377
+ // in the structure-broken path the issue is always a broken import, so use
378
+ // rawExtracted there so the actual module error isn't buried in boilerplate.
379
+ const extracted = enrichNoTestsError(rawExtracted);
352
380
  if (structureBroken) {
353
- errorOutput = buildStructureBrokenMessage(initialErrorOutput, extracted);
381
+ errorOutput = buildStructureBrokenMessage(initialErrorOutput, rawExtracted);
354
382
  if (!onStatus)
355
383
  log(chalk.red(` Fix broke file structure — 0 tests collected (attempt ${attempt}/${config.maxIterations})`));
356
384
  }