phantom-pr 0.4.19 → 0.5.1

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 (49) hide show
  1. package/README.md +216 -80
  2. package/dist/core/analysis/astExtractor.d.ts +15 -0
  3. package/dist/core/analysis/astExtractor.js +354 -0
  4. package/dist/core/analysis/astExtractor.js.map +1 -0
  5. package/dist/core/analysis/index.d.ts +3 -0
  6. package/dist/core/analysis/index.js +3 -0
  7. package/dist/core/analysis/index.js.map +1 -0
  8. package/dist/core/analysis/types.d.ts +50 -0
  9. package/dist/core/analysis/types.js +16 -0
  10. package/dist/core/analysis/types.js.map +1 -0
  11. package/dist/core/context/contextSelector.d.ts +29 -0
  12. package/dist/core/context/contextSelector.js +293 -0
  13. package/dist/core/context/contextSelector.js.map +1 -0
  14. package/dist/core/context/index.d.ts +4 -0
  15. package/dist/core/context/index.js +3 -0
  16. package/dist/core/context/index.js.map +1 -0
  17. package/dist/core/generator/enhancedContext.d.ts +34 -0
  18. package/dist/core/generator/enhancedContext.js +144 -0
  19. package/dist/core/generator/enhancedContext.js.map +1 -0
  20. package/dist/core/generator/llmGenerator.js +157 -15
  21. package/dist/core/generator/llmGenerator.js.map +1 -1
  22. package/dist/core/generator/postValidation.d.ts +24 -0
  23. package/dist/core/generator/postValidation.js +57 -0
  24. package/dist/core/generator/postValidation.js.map +1 -0
  25. package/dist/core/retry/errorParser.d.ts +12 -0
  26. package/dist/core/retry/errorParser.js +264 -0
  27. package/dist/core/retry/errorParser.js.map +1 -0
  28. package/dist/core/retry/feedbackGenerator.d.ts +12 -0
  29. package/dist/core/retry/feedbackGenerator.js +164 -0
  30. package/dist/core/retry/feedbackGenerator.js.map +1 -0
  31. package/dist/core/retry/index.d.ts +3 -0
  32. package/dist/core/retry/index.js +3 -0
  33. package/dist/core/retry/index.js.map +1 -0
  34. package/dist/core/retry/types.d.ts +40 -0
  35. package/dist/core/retry/types.js +5 -0
  36. package/dist/core/retry/types.js.map +1 -0
  37. package/dist/core/testRunner/retryEnhancer.d.ts +32 -0
  38. package/dist/core/testRunner/retryEnhancer.js +58 -0
  39. package/dist/core/testRunner/retryEnhancer.js.map +1 -0
  40. package/dist/core/validation/coverageVerifier.d.ts +16 -0
  41. package/dist/core/validation/coverageVerifier.js +226 -0
  42. package/dist/core/validation/coverageVerifier.js.map +1 -0
  43. package/dist/core/validation/index.d.ts +2 -0
  44. package/dist/core/validation/index.js +2 -0
  45. package/dist/core/validation/index.js.map +1 -0
  46. package/dist/core/validation/types.d.ts +24 -0
  47. package/dist/core/validation/types.js +6 -0
  48. package/dist/core/validation/types.js.map +1 -0
  49. package/package.json +1 -1
@@ -11,6 +11,9 @@ import { extractNamedExportsFromJsLike, extractTopLevelDefsFromPy } from '../cod
11
11
  export { applyUnifiedDiffToTestFiles } from './llm/diffApply.js';
12
12
  import { applyUnifiedDiffToTestFiles } from './llm/diffApply.js';
13
13
  import { ALLOWED_MATCHERS, MIN_DISTINCT_MATCHERS, SHALLOW_MATCHERS } from './llm/qualityGate.js';
14
+ // AST analysis and smart retry integration (v0.5.0)
15
+ import { extractComponentAnalysis } from '../analysis/index.js';
16
+ import { parseTestErrors } from '../retry/index.js';
14
17
  function sha256_8(text) {
15
18
  return crypto.createHash('sha256').update(text).digest('hex').slice(0, 8);
16
19
  }
@@ -23,6 +26,121 @@ function clipForPrompt(text, maxChars) {
23
26
  return { text: t, truncated: false };
24
27
  return { text: t.slice(0, maxChars) + '\n...[truncated]\n', truncated: true };
25
28
  }
29
+ /**
30
+ * Format AST analysis for inclusion in the LLM prompt.
31
+ * Provides structured insights about branches, effects, and children.
32
+ */
33
+ function formatAnalysisPromptSection(analysis) {
34
+ if (analysis.branches.length === 0 &&
35
+ analysis.effects.length === 0 &&
36
+ analysis.children.length === 0) {
37
+ return '';
38
+ }
39
+ const lines = [];
40
+ lines.push('## PRE-ANALYZED STRUCTURE (from AST - use this to ensure complete coverage)');
41
+ if (analysis.branches.length > 0) {
42
+ lines.push(`### BRANCHES DETECTED: ${analysis.branches.length} (test BOTH paths for each)`);
43
+ for (const b of analysis.branches.slice(0, 8)) {
44
+ lines.push(` - Line ${b.line}: ${b.kind} → \`${b.condition.slice(0, 60)}\``);
45
+ }
46
+ if (analysis.branches.length > 8) {
47
+ lines.push(` - ... and ${analysis.branches.length - 8} more`);
48
+ }
49
+ }
50
+ if (analysis.effects.length > 0) {
51
+ lines.push(`### EFFECTS DETECTED: ${analysis.effects.length}`);
52
+ for (const e of analysis.effects) {
53
+ const cleanup = e.hasCleanup ? ' ⚠️ HAS CLEANUP - test unmount!' : '';
54
+ const deps = e.dependencies.length > 0 ? ` deps=[${e.dependencies.slice(0, 3).join(', ')}]` : ' deps=[]';
55
+ lines.push(` - Line ${e.line}: ${e.kind}${deps}${cleanup}`);
56
+ }
57
+ }
58
+ if (analysis.children.length > 0) {
59
+ lines.push(`### CHILD COMPONENTS TO MOCK: ${analysis.children.length}`);
60
+ for (const c of analysis.children.slice(0, 6)) {
61
+ const conditional = c.isConditional ? ' (conditional)' : '';
62
+ lines.push(` - jest.mock('${c.importPath}', () => ({ ${c.name}: () => <div data-testid="mock-${c.name}" /> }))${conditional}`);
63
+ }
64
+ if (analysis.children.length > 6) {
65
+ lines.push(` - ... and ${analysis.children.length - 6} more`);
66
+ }
67
+ }
68
+ lines.push('');
69
+ return lines.join('\n');
70
+ }
71
+ /**
72
+ * Parse errors from feedback and create targeted fix suggestions.
73
+ * Returns a structured prompt section with specific fixes.
74
+ */
75
+ function formatParsedErrorFeedback(rawOutput, attempt, exitCode) {
76
+ const errors = parseTestErrors(rawOutput);
77
+ if (errors.length === 0) {
78
+ // Fallback to raw output if no errors parsed
79
+ const clipped = clipForPrompt(rawOutput, 4000);
80
+ return {
81
+ section: [
82
+ '## PREVIOUS ATTEMPT FAILED',
83
+ `Attempt: ${attempt}`,
84
+ `Exit code: ${exitCode}`,
85
+ '',
86
+ 'Raw output:',
87
+ clipped.text,
88
+ ].join('\n'),
89
+ parsedErrors: [],
90
+ };
91
+ }
92
+ const lines = [];
93
+ lines.push('## PREVIOUS ATTEMPT FAILED - PARSED ERRORS');
94
+ lines.push(`Attempt: ${attempt} | Exit code: ${exitCode} | Errors found: ${errors.length}`);
95
+ lines.push('');
96
+ // Prioritize by error type
97
+ const priorityOrder = {
98
+ import_error: 0,
99
+ undefined_variable: 1,
100
+ type_error: 2,
101
+ mock_not_called: 3,
102
+ mock_wrong_args: 4,
103
+ assertion_mismatch: 5,
104
+ timeout: 6,
105
+ unknown: 7,
106
+ };
107
+ const sorted = [...errors].sort((a, b) => (priorityOrder[a.kind] ?? 99) - (priorityOrder[b.kind] ?? 99));
108
+ for (let i = 0; i < Math.min(sorted.length, 5); i++) {
109
+ const err = sorted[i];
110
+ if (!err)
111
+ continue;
112
+ lines.push(`### Error ${i + 1}: ${err.kind.toUpperCase().replace(/_/g, ' ')}`);
113
+ lines.push(`Test: ${err.testName}`);
114
+ if (err.details.expected !== undefined) {
115
+ lines.push(`Expected: ${err.details.expected}`);
116
+ }
117
+ if (err.details.received !== undefined) {
118
+ lines.push(`Received: ${err.details.received}`);
119
+ }
120
+ if (err.details.callCount !== undefined) {
121
+ lines.push(`Expected calls: ${err.details.callCount.expected}, Received: ${err.details.callCount.received}`);
122
+ }
123
+ if (err.details.missingImport !== undefined) {
124
+ lines.push(`Missing module: ${err.details.missingImport}`);
125
+ }
126
+ if (err.details.variableName !== undefined) {
127
+ lines.push(`Undefined: ${err.details.variableName}`);
128
+ }
129
+ lines.push(`**FIX:** ${err.suggestedFix}`);
130
+ lines.push('');
131
+ }
132
+ if (sorted.length > 5) {
133
+ lines.push(`... and ${sorted.length - 5} more errors`);
134
+ lines.push('');
135
+ }
136
+ lines.push('## INSTRUCTIONS FOR THIS RETRY');
137
+ lines.push('1. Fix the FIRST error above - it is highest priority');
138
+ lines.push('2. Apply the suggested fix exactly');
139
+ lines.push('3. Do NOT change unrelated parts of the test');
140
+ lines.push('4. Output complete corrected test file as unified diff');
141
+ lines.push('');
142
+ return { section: lines.join('\n'), parsedErrors: errors };
143
+ }
26
144
  export class LlmGenerator {
27
145
  cfg;
28
146
  dryRun;
@@ -129,6 +247,22 @@ export class LlmGenerator {
129
247
  })();
130
248
  const targetAnchors = targetAnchorsResult.anchors;
131
249
  const targetSource = targetAnchorsResult.source;
250
+ // AST analysis for React/TypeScript components (v0.5.0)
251
+ const astAnalysis = (() => {
252
+ if (!targetSource)
253
+ return null;
254
+ const ext = path.posix.extname(input.targetPathPosix).toLowerCase();
255
+ // Only analyze JS/TS files (not Python)
256
+ if (!['.ts', '.tsx', '.js', '.jsx', '.mjs', '.cjs'].includes(ext))
257
+ return null;
258
+ try {
259
+ return extractComponentAnalysis(input.targetPathPosix, targetSource);
260
+ }
261
+ catch {
262
+ return null;
263
+ }
264
+ })();
265
+ const analysisPromptSection = astAnalysis ? formatAnalysisPromptSection(astAnalysis) : '';
132
266
  const anchorLine = targetAnchors.length > 0
133
267
  ? `- ANCHORS (you MUST import the target module AND call at least one of these): ${targetAnchors.join(', ')}.`
134
268
  : '- Import and exercise the target module.';
@@ -192,22 +326,15 @@ export class LlmGenerator {
192
326
  '- Do NOT modify package.json, configs, snapshots, or non-test files.',
193
327
  '- Do NOT include explanations or Markdown - unified diff ONLY.',
194
328
  ].join('\n');
195
- const feedbackSection = (() => {
329
+ // Smart feedback with parsed errors (v0.5.0)
330
+ const feedbackResult = (() => {
196
331
  const fb = input.feedback ?? null;
197
- if (!fb || !fb.rawOutput || fb.rawOutput.trim() === '')
198
- return null;
199
- const clipped = clipForPrompt(fb.rawOutput, 6000);
200
- return [
201
- 'PreviousAttempt (metadata + redacted output):',
202
- `attempt: ${Math.max(1, Math.trunc(fb.attempt))}`,
203
- `exitCode: ${Math.trunc(fb.exitCode)}`,
204
- `outputTruncated: ${clipped.truncated ? 'true' : 'false'}`,
205
- '',
206
- 'RawOutput:',
207
- clipped.text,
208
- '',
209
- ].join('\n');
332
+ if (!fb || !fb.rawOutput || fb.rawOutput.trim() === '') {
333
+ return { section: null, parsedErrors: [] };
334
+ }
335
+ return formatParsedErrorFeedback(fb.rawOutput, Math.max(1, Math.trunc(fb.attempt)), Math.trunc(fb.exitCode));
210
336
  })();
337
+ const feedbackSection = feedbackResult.section;
211
338
  const userPrompt = [
212
339
  'Generate one minimal unit test file patch for the target.',
213
340
  `targetId: ${input.targetId}`,
@@ -215,9 +342,12 @@ export class LlmGenerator {
215
342
  `runner: ${input.runner}`,
216
343
  `testCommand: ${input.testCommand ?? 'null'}`,
217
344
  '',
345
+ // Include AST analysis for better coverage (v0.5.0)
346
+ analysisPromptSection,
218
347
  'ContextPack (JSON):',
219
348
  stableStringify(pack),
220
349
  '',
350
+ // Include parsed error feedback if this is a retry (v0.5.0)
221
351
  feedbackSection ?? '',
222
352
  ].join('\n');
223
353
  const resp = await provider.generate({
@@ -240,8 +370,20 @@ export class LlmGenerator {
240
370
  }
241
371
  // Use targetAnchors extracted earlier; add fail-closed marker only if read failed
242
372
  const targetExportNames = !targetAnchorsResult.ok ? ['__target_read_failed__'] : targetAnchors;
243
- // Debug: log raw LLM response before parsing
373
+ // Debug: log analysis, errors, and LLM response
244
374
  if (this.debug) {
375
+ if (astAnalysis) {
376
+ console.error('\n=== AST ANALYSIS ===');
377
+ console.error(`Branches: ${astAnalysis.branches.length}`);
378
+ console.error(`Effects: ${astAnalysis.effects.length} (with cleanup: ${astAnalysis.effects.filter(e => e.hasCleanup).length})`);
379
+ console.error(`Children: ${astAnalysis.children.map(c => c.name).join(', ') || 'none'}`);
380
+ }
381
+ if (feedbackResult.parsedErrors.length > 0) {
382
+ console.error('\n=== PARSED ERRORS ===');
383
+ for (const err of feedbackResult.parsedErrors) {
384
+ console.error(`- ${err.kind}: ${err.suggestedFix.slice(0, 80)}`);
385
+ }
386
+ }
245
387
  console.error('\n=== LLM RAW RESPONSE START ===');
246
388
  console.error(resp.text);
247
389
  console.error('=== LLM RAW RESPONSE END ===\n');
@@ -1 +1 @@
1
- {"version":3,"file":"llmGenerator.js","sourceRoot":"","sources":["../../../src/core/generator/llmGenerator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"llmGenerator.js","sourceRoot":"","sources":["../../../src/core/generator/llmGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,MAAM,MAAM,aAAa,CAAC;AAGjC,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAqB,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,6BAA6B,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAE9F,gEAAgE;AAChE,OAAO,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AAEjE,OAAO,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAEjG,oDAAoD;AACpD,OAAO,EAAE,wBAAwB,EAA0B,MAAM,sBAAsB,CAAC;AACxF,OAAO,EAAE,eAAe,EAAwB,MAAM,mBAAmB,CAAC;AAc1E,SAAS,QAAQ,CAAC,IAAY;IAC5B,OAAO,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5E,CAAC;AAED,SAAS,UAAU,CAAC,EAAY;IAC9B,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AAClG,CAAC;AAED,SAAS,aAAa,CAAC,IAAY,EAAE,QAAgB;IACnD,MAAM,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;IACrB,IAAI,CAAC,CAAC,MAAM,IAAI,QAAQ;QAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IAC/D,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,oBAAoB,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AAChF,CAAC;AAED;;;GAGG;AACH,SAAS,2BAA2B,CAAC,QAA2B;IAC9D,IACE,QAAQ,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;QAC9B,QAAQ,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;QAC7B,QAAQ,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAC9B,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,6EAA6E,CAAC,CAAC;IAE1F,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjC,KAAK,CAAC,IAAI,CAAC,0BAA0B,QAAQ,CAAC,QAAQ,CAAC,MAAM,6BAA6B,CAAC,CAAC;QAC5F,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YAC9C,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;QAChF,CAAC;QACD,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjC,KAAK,CAAC,IAAI,CAAC,eAAe,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IAED,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,yBAAyB,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAC/D,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACjC,MAAM,OAAO,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,EAAE,CAAC;YACtE,MAAM,IAAI,GAAG,CAAC,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC;YACzG,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,GAAG,IAAI,GAAG,OAAO,EAAE,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IAED,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjC,KAAK,CAAC,IAAI,CAAC,iCAAiC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QACxE,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YAC9C,MAAM,WAAW,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5D,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,UAAU,eAAe,CAAC,CAAC,IAAI,kCAAkC,CAAC,CAAC,IAAI,WAAW,WAAW,EAAE,CAAC,CAAC;QAClI,CAAC;QACD,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjC,KAAK,CAAC,IAAI,CAAC,eAAe,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;;GAGG;AACH,SAAS,yBAAyB,CAChC,SAAiB,EACjB,OAAe,EACf,QAAgB;IAEhB,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;IAE1C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,6CAA6C;QAC7C,MAAM,OAAO,GAAG,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC/C,OAAO;YACL,OAAO,EAAE;gBACP,4BAA4B;gBAC5B,YAAY,OAAO,EAAE;gBACrB,cAAc,QAAQ,EAAE;gBACxB,EAAE;gBACF,aAAa;gBACb,OAAO,CAAC,IAAI;aACb,CAAC,IAAI,CAAC,IAAI,CAAC;YACZ,YAAY,EAAE,EAAE;SACjB,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;IACzD,KAAK,CAAC,IAAI,CAAC,YAAY,OAAO,iBAAiB,QAAQ,oBAAoB,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5F,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,2BAA2B;IAC3B,MAAM,aAAa,GAA2B;QAC5C,YAAY,EAAE,CAAC;QACf,kBAAkB,EAAE,CAAC;QACrB,UAAU,EAAE,CAAC;QACb,eAAe,EAAE,CAAC;QAClB,eAAe,EAAE,CAAC;QAClB,kBAAkB,EAAE,CAAC;QACrB,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,CAAC;KACX,CAAC;IAEF,MAAM,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACvC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAC9D,CAAC;IAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACpD,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,GAAG;YAAE,SAAS;QAEnB,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QAC/E,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;QAEpC,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACvC,KAAK,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QAClD,CAAC;QACD,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACvC,KAAK,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QAClD,CAAC;QACD,IAAI,GAAG,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACxC,KAAK,CAAC,IAAI,CAAC,mBAAmB,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,eAAe,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC/G,CAAC;QACD,IAAI,GAAG,CAAC,OAAO,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;YAC5C,KAAK,CAAC,IAAI,CAAC,mBAAmB,GAAG,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;QAC7D,CAAC;QACD,IAAI,GAAG,CAAC,OAAO,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YAC3C,KAAK,CAAC,IAAI,CAAC,cAAc,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;QACvD,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC;QAC3C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,KAAK,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,MAAM,GAAG,CAAC,cAAc,CAAC,CAAC;QACvD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IAC7C,KAAK,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;IACpE,KAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;IACjD,KAAK,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;IAC3D,KAAK,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;IACrE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC;AAC7D,CAAC;AAED,MAAM,OAAO,YAAY;IACN,GAAG,CAAS;IACZ,MAAM,CAAU;IAChB,GAAG,CAAoB;IACvB,KAAK,CAAe;IACpB,QAAQ,CAA2B;IACnC,UAAU,CAA0B;IACpC,KAAK,CAAU;IAEhC,YAAY,IAQX;QACC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACpB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACpB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC;QACjC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;IACpC,CAAC;IAED,IAAI;QACF,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,KAAoB;QACjC,MAAM,MAAM,GAAG,yBAAyB,CAAC;YACvC,kBAAkB,EAAE,IAAI,CAAC,GAAG,CAAC,kBAAkB,IAAI,IAAI;YACvD,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,YAAY,IAAI,IAAI;SAC5C,CAAC,CAAC;QACH,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,iBAAiB,CAAC,EAAE,OAAO,EAAE,sBAAsB,EAAE,CAAC;QAClI,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YACtB,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,iBAAiB,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC;QAC/H,CAAC;QAED,MAAM,QAAQ,GACZ,IAAI,CAAC,QAAQ;YACb,IAAI,YAAY,CAAC;gBACf,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,eAAe;gBACjC,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,YAAY;gBACnC,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,YAAY;gBACnC,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,SAAS,EAAE,MAAM;gBACjB,aAAa,EAAE,MAAM;gBACrB,MAAM,EAAE,KAAK;aACd,CAAC,CAAC;QAEL,MAAM,QAAQ,GAAG,CAAC,CAAC,CAAC,oDAAoD;QACxE,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;QACzE,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK;YAC1B,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,YAAY,EAAE,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE;YAC3H,CAAC,CAAC,IAAI,CAAC;QACT,MAAM,IAAI,GAAG,MAAM,gBAAgB,CAAC;YAClC,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,eAAe,EAAE,KAAK,CAAC,eAAe;YACtC,QAAQ,EAAE;gBACR,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI;gBACzB,aAAa,EAAE,KAAK,CAAC,QAAQ,CAAC,aAAa;gBAC3C,eAAe,EAAE,IAAI;aACtB;YACD,QAAQ,EAAE;gBACR,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,OAAO,EAAE,KAAK,CAAC,WAAW;gBAC1B,MAAM,EAAE,SAAS;gBACjB,MAAM,EAAE,cAAc;aACvB;YACD,QAAQ;YACR,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE;YACvG,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,YAAY,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;YAC9D,cAAc,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YAC9D,MAAM,EAAE,UAAU;SACnB,CAAC,CAAC;QAEH,MAAM,cAAc,GAA8B,CAAC,GAAG,EAAE;YACtD,mGAAmG;YACnG,MAAM,GAAG,GAAG;gBACV,aAAa,EAAE,CAAU;gBACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,eAAe,EAAE,IAAI,CAAC,eAAe;gBACrC,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;aACvH,CAAC;YACF,MAAM,MAAM,GAAG,QAAQ,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;YAC9C,OAAO;gBACL,QAAQ,EAAE,MAAM;gBAChB,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS;gBAC/B,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS;gBAC/B,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW;gBACnC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW;aACpC,CAAC;QACJ,CAAC,CAAC,EAAE,CAAC;QAEL,uEAAuE;QACvE,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QAC5F,MAAM,mBAAmB,GAAG,CAAC,GAAG,EAAE;YAChC,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC7E,MAAM,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;gBAC5C,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;gBACrC,IAAI,CAAC,KAAK,QAAQ,IAAI,KAAK,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC1E,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,yBAAyB,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;gBAC1E,CAAC;gBACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,6BAA6B,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;YACpF,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,IAAqB,EAAE,CAAC;YACnE,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;QACL,MAAM,aAAa,GAAG,mBAAmB,CAAC,OAAO,CAAC;QAClD,MAAM,YAAY,GAAG,mBAAmB,CAAC,MAAM,CAAC;QAEhD,wDAAwD;QACxD,MAAM,WAAW,GAA6B,CAAC,GAAG,EAAE;YAClD,IAAI,CAAC,YAAY;gBAAE,OAAO,IAAI,CAAC;YAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,WAAW,EAAE,CAAC;YACpE,wCAAwC;YACxC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAAE,OAAO,IAAI,CAAC;YAC/E,IAAI,CAAC;gBACH,OAAO,wBAAwB,CAAC,KAAK,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;YACvE,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;QACL,MAAM,qBAAqB,GAAG,WAAW,CAAC,CAAC,CAAC,2BAA2B,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAE1F,MAAM,UAAU,GACd,aAAa,CAAC,MAAM,GAAG,CAAC;YACtB,CAAC,CAAC,iFAAiF,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;YAC9G,CAAC,CAAC,0CAA0C,CAAC;QAEjD,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC;QACzD,MAAM,WAAW,GAAG,QAAQ;YAC1B,CAAC,CAAC;gBACE,qEAAqE;gBACrE,0DAA0D;gBAC1D,sEAAsE;gBACtE,uFAAuF;gBACvF,6DAA6D;aAC9D;YACH,CAAC,CAAC;gBACE,kBAAkB,qBAAqB,2CAA2C,CAAC,GAAG,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;gBACxJ,sCAAsC,CAAC,GAAG,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;gBAC7G,qLAAqL;gBACrL,6IAA6I;aAC9I,CAAC;QAEN,MAAM,YAAY,GAAG;YACnB,0DAA0D;YAC1D,EAAE;YACF,6CAA6C;YAC7C,oDAAoD;YACpD,iFAAiF;YACjF,4FAA4F;YAC5F,oFAAoF;YACpF,kFAAkF;YAClF,EAAE;YACF,mDAAmD;YACnD,+DAA+D;YAC/D,uFAAuF;YACvF,mDAAmD;YACnD,8EAA8E;YAC9E,EAAE;YACF,gCAAgC;YAChC,uDAAuD;YACvD,0EAA0E;YAC1E,2DAA2D;YAC3D,EAAE;YACF,mCAAmC;YACnC,uEAAuE;YACvE,0FAA0F;YAC1F,sFAAsF;YACtF,EAAE;YACF,sBAAsB;YACtB,cAAc,MAAM,CAAC,YAAY,wBAAwB,MAAM,CAAC,kBAAkB,SAAS,MAAM,CAAC,YAAY,GAAG;YACjH,cAAc,MAAM,CAAC,cAAc,IAAI,QAAQ,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,YAAY,QAAQ;YAC5F,2EAA2E;YAC3E,EAAE;YACF,kBAAkB;YAClB,gEAAgE;YAChE,0BAA0B;YAC1B,QAAQ;gBACN,CAAC,CAAC,sEAAsE;gBACxE,CAAC,CAAC,uFAAuF;YAC3F,8DAA8D;YAC9D,iFAAiF;YACjF,GAAG,WAAW;YACd,UAAU;YACV,uEAAuE;YACvE,sEAAsE;YACtE,gEAAgE;SACjE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEb,6CAA6C;QAC7C,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE;YAC3B,MAAM,EAAE,GAAG,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC;YAClC,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,SAAS,IAAI,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;gBACvD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,EAAuB,EAAE,CAAC;YAClE,CAAC;YACD,OAAO,yBAAyB,CAC9B,EAAE,CAAC,SAAS,EACZ,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,EACnC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,CACxB,CAAC;QACJ,CAAC,CAAC,EAAE,CAAC;QACL,MAAM,eAAe,GAAG,cAAc,CAAC,OAAO,CAAC;QAE/C,MAAM,UAAU,GAAG;YACjB,2DAA2D;YAC3D,aAAa,KAAK,CAAC,QAAQ,EAAE;YAC7B,eAAe,KAAK,CAAC,eAAe,EAAE;YACtC,WAAW,KAAK,CAAC,MAAM,EAAE;YACzB,gBAAgB,KAAK,CAAC,WAAW,IAAI,MAAM,EAAE;YAC7C,EAAE;YACF,oDAAoD;YACpD,qBAAqB;YACrB,qBAAqB;YACrB,eAAe,CAAC,IAAI,CAAC;YACrB,EAAE;YACF,4DAA4D;YAC5D,eAAe,IAAI,EAAE;SACtB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEb,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC;YACnC,YAAY;YACZ,UAAU;YACV,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK;YACrB,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,WAAW;YACjC,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS;SAC9B,CAAC,CAAC;QAEH,MAAM,gBAAgB,GAAG,UAAU,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;QACzD,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YAC1C,OAAO;gBACL,SAAS,EAAE,KAAK;gBAChB,OAAO,EAAE,KAAK;gBACd,cAAc,EAAE,EAAE;gBAClB,QAAQ,EAAE,UAAU,CAAC,CAAC,oBAAoB,EAAE,GAAG,gBAAgB,CAAC,CAAC;gBACjE,OAAO,EAAE,qBAAqB;gBAC9B,OAAO,EAAE,cAAc;aACxB,CAAC;QACJ,CAAC;QAED,kFAAkF;QAClF,MAAM,iBAAiB,GAAG,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;QAE/F,gDAAgD;QAChD,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,IAAI,WAAW,EAAE,CAAC;gBAChB,OAAO,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;gBACxC,OAAO,CAAC,KAAK,CAAC,aAAa,WAAW,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC1D,OAAO,CAAC,KAAK,CAAC,YAAY,WAAW,CAAC,OAAO,CAAC,MAAM,mBAAmB,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;gBAChI,OAAO,CAAC,KAAK,CAAC,aAAa,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC;YAC3F,CAAC;YACD,IAAI,cAAc,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3C,OAAO,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;gBACzC,KAAK,MAAM,GAAG,IAAI,cAAc,CAAC,YAAY,EAAE,CAAC;oBAC9C,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;gBACnE,CAAC;YACH,CAAC;YACD,OAAO,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;YAClD,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzB,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;QAClD,CAAC;QAED,MAAM,OAAO,GAAG,2BAA2B,CAAC;YAC1C,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,iBAAiB,EAAE,KAAK,CAAC,QAAQ,CAAC,aAAa;YAC/C,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,QAAQ,EAAE,IAAI,CAAC,IAAI;YACnB,MAAM;YACN,iBAAiB;YACjB,gBAAgB;YAChB,YAAY;SACb,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnD,OAAO;gBACL,SAAS,EAAE,KAAK;gBAChB,OAAO,EAAE,KAAK;gBACd,cAAc,EAAE,EAAE;gBAClB,QAAQ,EAAE,UAAU,CAAC,CAAC,GAAG,gBAAgB,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAChE,OAAO,EAAE,mBAAmB;gBAC5B,OAAO,EAAE,cAAc;aACxB,CAAC;QACJ,CAAC;QAED,OAAO;YACL,SAAS,EAAE,KAAK;YAChB,OAAO,EAAE,OAAO,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC;YAC7C,cAAc,EAAE,OAAO,CAAC,UAAU;YAClC,QAAQ,EAAE,UAAU,CAAC,CAAC,GAAG,gBAAgB,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;YAChE,OAAO,EAAE,gBAAgB,OAAO,CAAC,UAAU,CAAC,MAAM,UAAU;YAC5D,OAAO,EAAE,cAAc;SACxB,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Post-generation validation utilities.
3
+ * Wraps the coverage verifier for use in the generation pipeline.
4
+ */
5
+ import type { ComponentAnalysis } from '../analysis/index.js';
6
+ export type PostValidationOptions = {
7
+ analysis: ComponentAnalysis;
8
+ generatedTestContent: string;
9
+ enabled?: boolean;
10
+ };
11
+ export type PostValidationResult = {
12
+ valid: boolean;
13
+ warnings: string[];
14
+ rejections: string[];
15
+ enabled: boolean;
16
+ };
17
+ /**
18
+ * Validate generated test against component analysis.
19
+ * Returns warnings if coverage is incomplete.
20
+ *
21
+ * @param opts - Validation options
22
+ * @returns Validation result with warnings
23
+ */
24
+ export declare function validateGeneratedTest(opts: PostValidationOptions): PostValidationResult;
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Post-generation validation utilities.
3
+ * Wraps the coverage verifier for use in the generation pipeline.
4
+ */
5
+ import { verifyCoverage } from '../validation/index.js';
6
+ /**
7
+ * Validate generated test against component analysis.
8
+ * Returns warnings if coverage is incomplete.
9
+ *
10
+ * @param opts - Validation options
11
+ * @returns Validation result with warnings
12
+ */
13
+ export function validateGeneratedTest(opts) {
14
+ const enabled = opts.enabled ?? true;
15
+ if (!enabled) {
16
+ return {
17
+ valid: true,
18
+ warnings: [],
19
+ rejections: [],
20
+ enabled: false,
21
+ };
22
+ }
23
+ // Skip validation if no test content
24
+ if (!opts.generatedTestContent || opts.generatedTestContent.trim() === '') {
25
+ return {
26
+ valid: true,
27
+ warnings: ['post_validation_skipped_no_content'],
28
+ rejections: [],
29
+ enabled: true,
30
+ };
31
+ }
32
+ // Skip validation if no analysis data
33
+ if (opts.analysis.branches.length === 0 &&
34
+ opts.analysis.effects.length === 0 &&
35
+ opts.analysis.children.length === 0) {
36
+ return {
37
+ valid: true,
38
+ warnings: [],
39
+ rejections: [],
40
+ enabled: true,
41
+ };
42
+ }
43
+ const result = verifyCoverage(opts.analysis, opts.generatedTestContent);
44
+ // Convert rejections to warning format for backward compatibility
45
+ // We don't fail the generation, just add warnings
46
+ const warnings = [
47
+ ...result.warnings,
48
+ ...result.rejections.map(r => `post_validation_${r}`),
49
+ ];
50
+ return {
51
+ valid: result.valid,
52
+ warnings: warnings.length > 0 ? warnings : [],
53
+ rejections: result.rejections,
54
+ enabled: true,
55
+ };
56
+ }
57
+ //# sourceMappingURL=postValidation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postValidation.js","sourceRoot":"","sources":["../../../src/core/generator/postValidation.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,cAAc,EAAyB,MAAM,wBAAwB,CAAC;AAe/E;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAA2B;IAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC;IAErC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO;YACL,KAAK,EAAE,IAAI;YACX,QAAQ,EAAE,EAAE;YACZ,UAAU,EAAE,EAAE;YACd,OAAO,EAAE,KAAK;SACf,CAAC;IACJ,CAAC;IAED,qCAAqC;IACrC,IAAI,CAAC,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAC1E,OAAO;YACL,KAAK,EAAE,IAAI;YACX,QAAQ,EAAE,CAAC,oCAAoC,CAAC;YAChD,UAAU,EAAE,EAAE;YACd,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IAED,sCAAsC;IACtC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;QACnC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;QAClC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxC,OAAO;YACL,KAAK,EAAE,IAAI;YACX,QAAQ,EAAE,EAAE;YACZ,UAAU,EAAE,EAAE;YACd,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAExE,kEAAkE;IAClE,kDAAkD;IAClD,MAAM,QAAQ,GAAa;QACzB,GAAG,MAAM,CAAC,QAAQ;QAClB,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,mBAAmB,CAAC,EAAE,CAAC;KACtD,CAAC;IAEF,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,QAAQ,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;QAC7C,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Parser that extracts actionable information from Jest/Vitest test failures.
3
+ * Returns structured feedback for retry generation.
4
+ */
5
+ import type { ParsedTestError } from './types.js';
6
+ /**
7
+ * Parse test errors from Jest/Vitest output.
8
+ *
9
+ * @param jestOutput - Raw test runner output
10
+ * @returns Array of parsed errors with actionable information
11
+ */
12
+ export declare function parseTestErrors(jestOutput: string): ParsedTestError[];
@@ -0,0 +1,264 @@
1
+ /**
2
+ * Parser that extracts actionable information from Jest/Vitest test failures.
3
+ * Returns structured feedback for retry generation.
4
+ */
5
+ /**
6
+ * Extract the test name from a FAIL line or surrounding context.
7
+ */
8
+ function extractTestName(lines, index) {
9
+ // Look backwards for test name
10
+ for (let i = index; i >= Math.max(0, index - 10); i--) {
11
+ const line = lines[i] ?? '';
12
+ // Match patterns like: ✕ test name (123 ms)
13
+ const failMatch = line.match(/[✕×✗]\s+(.+?)(?:\s+\(\d+\s*m?s\))?$/);
14
+ if (failMatch)
15
+ return failMatch[1]?.trim() ?? 'unknown';
16
+ // Match patterns like: FAIL src/file.test.ts › test name
17
+ const failPathMatch = line.match(/FAIL\s+.+?›\s+(.+)$/);
18
+ if (failPathMatch)
19
+ return failPathMatch[1]?.trim() ?? 'unknown';
20
+ // Match patterns like: ● test name
21
+ const bulletMatch = line.match(/[●•]\s+(.+)$/);
22
+ if (bulletMatch)
23
+ return bulletMatch[1]?.trim() ?? 'unknown';
24
+ }
25
+ return 'unknown';
26
+ }
27
+ /**
28
+ * Parse assertion mismatch errors.
29
+ * Example:
30
+ * expect(received).toEqual(expected)
31
+ * Expected: "foo"
32
+ * Received: "bar"
33
+ */
34
+ function parseAssertionMismatch(lines, startIndex) {
35
+ let expected;
36
+ let received;
37
+ for (let i = startIndex; i < Math.min(lines.length, startIndex + 10); i++) {
38
+ const line = lines[i] ?? '';
39
+ const expectedMatch = line.match(/Expected:\s*(.+)/);
40
+ if (expectedMatch)
41
+ expected = expectedMatch[1]?.trim();
42
+ const receivedMatch = line.match(/Received:\s*(.+)/);
43
+ if (receivedMatch)
44
+ received = receivedMatch[1]?.trim();
45
+ if (expected !== undefined && received !== undefined)
46
+ break;
47
+ }
48
+ if (expected === undefined && received === undefined)
49
+ return null;
50
+ const details = {};
51
+ if (expected !== undefined)
52
+ details.expected = expected;
53
+ if (received !== undefined)
54
+ details.received = received;
55
+ return {
56
+ kind: 'assertion_mismatch',
57
+ testName: extractTestName(lines, startIndex),
58
+ details,
59
+ suggestedFix: `Change expected value from ${expected ?? 'unknown'} to ${received ?? 'unknown'}, or fix the test setup/mock to return the expected value`,
60
+ };
61
+ }
62
+ /**
63
+ * Parse mock not called errors.
64
+ * Example:
65
+ * expect(jest.fn()).toHaveBeenCalled()
66
+ * Expected number of calls: >= 1
67
+ * Received number of calls: 0
68
+ */
69
+ function parseMockNotCalled(lines, startIndex) {
70
+ let expectedCalls = 1;
71
+ let receivedCalls = 0;
72
+ for (let i = startIndex; i < Math.min(lines.length, startIndex + 10); i++) {
73
+ const line = lines[i] ?? '';
74
+ const expectedMatch = line.match(/Expected number of calls:\s*(?:>=\s*)?(\d+)/);
75
+ if (expectedMatch)
76
+ expectedCalls = parseInt(expectedMatch[1] ?? '1', 10);
77
+ const receivedMatch = line.match(/Received number of calls:\s*(\d+)/);
78
+ if (receivedMatch)
79
+ receivedCalls = parseInt(receivedMatch[1] ?? '0', 10);
80
+ }
81
+ return {
82
+ kind: 'mock_not_called',
83
+ testName: extractTestName(lines, startIndex),
84
+ details: {
85
+ callCount: { expected: expectedCalls, received: receivedCalls },
86
+ },
87
+ suggestedFix: 'Mock was never called - check if the code path that should call it is actually executed. Verify conditions/props trigger the expected behavior.',
88
+ };
89
+ }
90
+ /**
91
+ * Parse mock wrong arguments errors.
92
+ * Example:
93
+ * expect(jest.fn()).toHaveBeenCalledWith(...expected)
94
+ * Expected: "arg1", "arg2"
95
+ * Received: "arg1", "arg3"
96
+ */
97
+ function parseMockWrongArgs(lines, startIndex) {
98
+ let expected;
99
+ let received;
100
+ for (let i = startIndex; i < Math.min(lines.length, startIndex + 10); i++) {
101
+ const line = lines[i] ?? '';
102
+ const expectedMatch = line.match(/Expected:\s*(.+)/);
103
+ if (expectedMatch && !expected)
104
+ expected = expectedMatch[1]?.trim();
105
+ const receivedMatch = line.match(/Received:\s*(.+)/);
106
+ if (receivedMatch && !received)
107
+ received = receivedMatch[1]?.trim();
108
+ }
109
+ const details = {};
110
+ if (expected !== undefined)
111
+ details.expected = expected;
112
+ if (received !== undefined)
113
+ details.received = received;
114
+ return {
115
+ kind: 'mock_wrong_args',
116
+ testName: extractTestName(lines, startIndex),
117
+ details,
118
+ suggestedFix: `Mock was called with different arguments than expected. Update expected args to match actual: got ${received ?? 'unknown'}, expected ${expected ?? 'unknown'}`,
119
+ };
120
+ }
121
+ /**
122
+ * Parse import/module errors.
123
+ * Example:
124
+ * Cannot find module './SomeComponent'
125
+ */
126
+ function parseImportError(line, lines, index) {
127
+ const match = line.match(/Cannot find module ['"]([^'"]+)['"]/);
128
+ if (!match)
129
+ return null;
130
+ const modulePath = match[1] ?? 'unknown';
131
+ return {
132
+ kind: 'import_error',
133
+ testName: extractTestName(lines, index),
134
+ details: { missingImport: modulePath },
135
+ suggestedFix: `Add jest.mock('${modulePath}') or vi.mock('${modulePath}') at the top of the test file to mock this missing module`,
136
+ };
137
+ }
138
+ /**
139
+ * Parse undefined variable errors.
140
+ * Example:
141
+ * ReferenceError: someVar is not defined
142
+ */
143
+ function parseUndefinedVariable(line, lines, index) {
144
+ const match = line.match(/ReferenceError:\s*(\w+)\s+is not defined/);
145
+ if (!match)
146
+ return null;
147
+ const variableName = match[1] ?? 'unknown';
148
+ return {
149
+ kind: 'undefined_variable',
150
+ testName: extractTestName(lines, index),
151
+ details: { variableName },
152
+ suggestedFix: `Variable '${variableName}' is not defined. Import it from the appropriate module, or check for typos in the variable name.`,
153
+ };
154
+ }
155
+ /**
156
+ * Parse timeout errors.
157
+ * Example:
158
+ * Timeout - Async callback was not invoked within the 5000 ms timeout
159
+ */
160
+ function parseTimeout(line, lines, index) {
161
+ if (!/timeout/i.test(line))
162
+ return null;
163
+ return {
164
+ kind: 'timeout',
165
+ testName: extractTestName(lines, index),
166
+ details: {},
167
+ suggestedFix: 'Test timed out. Check if async operations complete properly, or if act() is needed around state updates. Consider increasing timeout or using waitFor() correctly.',
168
+ };
169
+ }
170
+ /**
171
+ * Parse type errors.
172
+ * Example:
173
+ * TypeError: Cannot read properties of undefined (reading 'map')
174
+ */
175
+ function parseTypeError(line, lines, index) {
176
+ const match = line.match(/TypeError:\s*(.+)/);
177
+ if (!match)
178
+ return null;
179
+ const stackTrace = match[1];
180
+ const details = {};
181
+ if (stackTrace !== undefined)
182
+ details.stackTrace = stackTrace;
183
+ return {
184
+ kind: 'type_error',
185
+ testName: extractTestName(lines, index),
186
+ details,
187
+ suggestedFix: 'Type error occurred. Check if props/data are correctly mocked and not undefined. Ensure mock return values have the expected shape.',
188
+ };
189
+ }
190
+ /**
191
+ * Parse test errors from Jest/Vitest output.
192
+ *
193
+ * @param jestOutput - Raw test runner output
194
+ * @returns Array of parsed errors with actionable information
195
+ */
196
+ export function parseTestErrors(jestOutput) {
197
+ const errors = [];
198
+ const lines = jestOutput.split('\n');
199
+ const seen = new Set();
200
+ for (let i = 0; i < lines.length; i++) {
201
+ const line = lines[i] ?? '';
202
+ const lineLower = line.toLowerCase();
203
+ // Skip empty lines
204
+ if (!line.trim())
205
+ continue;
206
+ let error = null;
207
+ // Check for import errors first (highest priority)
208
+ if (line.includes('Cannot find module')) {
209
+ error = parseImportError(line, lines, i);
210
+ }
211
+ // Check for undefined variable
212
+ else if (line.includes('ReferenceError') && line.includes('is not defined')) {
213
+ error = parseUndefinedVariable(line, lines, i);
214
+ }
215
+ // Check for type errors
216
+ else if (line.includes('TypeError:')) {
217
+ error = parseTypeError(line, lines, i);
218
+ }
219
+ // Check for timeout
220
+ else if (lineLower.includes('timeout') && (lineLower.includes('async') || lineLower.includes('callback'))) {
221
+ error = parseTimeout(line, lines, i);
222
+ }
223
+ // Check for mock wrong args (must come before mock not called since it contains 'toHaveBeenCalled')
224
+ else if (line.includes('toHaveBeenCalledWith')) {
225
+ error = parseMockWrongArgs(lines, i);
226
+ }
227
+ // Check for mock not called
228
+ else if (line.includes('toHaveBeenCalled') ||
229
+ (line.includes('Expected number of calls') && line.includes('>= 1'))) {
230
+ error = parseMockNotCalled(lines, i);
231
+ }
232
+ // Check for assertion mismatch (general case)
233
+ else if ((line.includes('expect(') && (line.includes(').toBe') || line.includes(').toEqual'))) ||
234
+ line.match(/^\s*Expected:/)) {
235
+ error = parseAssertionMismatch(lines, i);
236
+ }
237
+ if (error) {
238
+ // Deduplicate by test name and kind
239
+ const key = `${error.kind}:${error.testName}`;
240
+ if (!seen.has(key)) {
241
+ seen.add(key);
242
+ errors.push(error);
243
+ }
244
+ }
245
+ }
246
+ // If no specific errors found but output suggests failure, add unknown
247
+ if (errors.length === 0 && /FAIL|failed|Error:/i.test(jestOutput)) {
248
+ // Look for any error-like content
249
+ for (let i = 0; i < lines.length; i++) {
250
+ const line = lines[i] ?? '';
251
+ if (/Error:|FAIL|failed|✕|×/i.test(line) && line.trim().length > 10) {
252
+ errors.push({
253
+ kind: 'unknown',
254
+ testName: extractTestName(lines, i),
255
+ details: { stackTrace: line.trim() },
256
+ suggestedFix: 'Unknown error occurred. Review the test output and fix the issue based on the error message.',
257
+ });
258
+ break; // Only add one unknown error
259
+ }
260
+ }
261
+ }
262
+ return errors;
263
+ }
264
+ //# sourceMappingURL=errorParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errorParser.js","sourceRoot":"","sources":["../../../src/core/retry/errorParser.ts"],"names":[],"mappings":"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"}