@vibe-validate/extractors 0.16.0 → 0.17.0-rc.5

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 (163) hide show
  1. package/dist/extractor-registry.d.ts +104 -0
  2. package/dist/extractor-registry.d.ts.map +1 -0
  3. package/dist/extractor-registry.js +278 -0
  4. package/dist/extractor-registry.js.map +1 -0
  5. package/dist/extractors/ava/index.d.ts +23 -0
  6. package/dist/extractors/ava/index.d.ts.map +1 -0
  7. package/dist/extractors/ava/index.js +507 -0
  8. package/dist/extractors/ava/index.js.map +1 -0
  9. package/dist/extractors/ava/index.test.d.ts +7 -0
  10. package/dist/extractors/ava/index.test.d.ts.map +1 -0
  11. package/dist/extractors/ava/index.test.js +408 -0
  12. package/dist/extractors/ava/index.test.js.map +1 -0
  13. package/dist/extractors/eslint/index.d.ts +18 -0
  14. package/dist/extractors/eslint/index.d.ts.map +1 -0
  15. package/dist/extractors/eslint/index.js +206 -0
  16. package/dist/extractors/eslint/index.js.map +1 -0
  17. package/dist/extractors/eslint/index.test.d.ts +9 -0
  18. package/dist/extractors/eslint/index.test.d.ts.map +1 -0
  19. package/dist/extractors/eslint/index.test.js +191 -0
  20. package/dist/extractors/eslint/index.test.js.map +1 -0
  21. package/dist/extractors/generic/index.d.ts +30 -0
  22. package/dist/extractors/generic/index.d.ts.map +1 -0
  23. package/dist/extractors/generic/index.js +140 -0
  24. package/dist/extractors/generic/index.js.map +1 -0
  25. package/dist/extractors/generic/index.test.d.ts +7 -0
  26. package/dist/extractors/generic/index.test.d.ts.map +1 -0
  27. package/dist/extractors/generic/index.test.js +61 -0
  28. package/dist/extractors/generic/index.test.js.map +1 -0
  29. package/dist/extractors/jasmine/index.d.ts +17 -0
  30. package/dist/extractors/jasmine/index.d.ts.map +1 -0
  31. package/dist/extractors/jasmine/index.js +242 -0
  32. package/dist/extractors/jasmine/index.js.map +1 -0
  33. package/dist/extractors/jasmine/index.test.d.ts +7 -0
  34. package/dist/extractors/jasmine/index.test.d.ts.map +1 -0
  35. package/dist/extractors/jasmine/index.test.js +318 -0
  36. package/dist/extractors/jasmine/index.test.js.map +1 -0
  37. package/dist/extractors/jest/index.d.ts +17 -0
  38. package/dist/extractors/jest/index.d.ts.map +1 -0
  39. package/dist/extractors/jest/index.js +273 -0
  40. package/dist/extractors/jest/index.js.map +1 -0
  41. package/dist/extractors/jest/index.test.d.ts +9 -0
  42. package/dist/extractors/jest/index.test.d.ts.map +1 -0
  43. package/dist/extractors/jest/index.test.js +338 -0
  44. package/dist/extractors/jest/index.test.js.map +1 -0
  45. package/dist/extractors/junit/index.d.ts +18 -0
  46. package/dist/extractors/junit/index.d.ts.map +1 -0
  47. package/dist/extractors/junit/index.js +259 -0
  48. package/dist/extractors/junit/index.js.map +1 -0
  49. package/dist/extractors/junit/index.test.d.ts +7 -0
  50. package/dist/extractors/junit/index.test.d.ts.map +1 -0
  51. package/dist/extractors/junit/index.test.js +341 -0
  52. package/dist/extractors/junit/index.test.js.map +1 -0
  53. package/dist/extractors/maven-checkstyle/index.d.ts +23 -0
  54. package/dist/extractors/maven-checkstyle/index.d.ts.map +1 -0
  55. package/dist/extractors/maven-checkstyle/index.js +263 -0
  56. package/dist/extractors/maven-checkstyle/index.js.map +1 -0
  57. package/dist/extractors/maven-checkstyle/index.test.d.ts +2 -0
  58. package/dist/extractors/maven-checkstyle/index.test.d.ts.map +1 -0
  59. package/dist/extractors/maven-checkstyle/index.test.js +197 -0
  60. package/dist/extractors/maven-checkstyle/index.test.js.map +1 -0
  61. package/dist/extractors/maven-compiler/index.d.ts +23 -0
  62. package/dist/extractors/maven-compiler/index.d.ts.map +1 -0
  63. package/dist/extractors/maven-compiler/index.js +271 -0
  64. package/dist/extractors/maven-compiler/index.js.map +1 -0
  65. package/dist/extractors/maven-compiler/index.test.d.ts +2 -0
  66. package/dist/extractors/maven-compiler/index.test.d.ts.map +1 -0
  67. package/dist/extractors/maven-compiler/index.test.js +189 -0
  68. package/dist/extractors/maven-compiler/index.test.js.map +1 -0
  69. package/dist/extractors/maven-surefire/index.d.ts +23 -0
  70. package/dist/extractors/maven-surefire/index.d.ts.map +1 -0
  71. package/dist/extractors/maven-surefire/index.js +292 -0
  72. package/dist/extractors/maven-surefire/index.js.map +1 -0
  73. package/dist/extractors/maven-surefire/index.test.d.ts +2 -0
  74. package/dist/extractors/maven-surefire/index.test.d.ts.map +1 -0
  75. package/dist/extractors/maven-surefire/index.test.js +163 -0
  76. package/dist/extractors/maven-surefire/index.test.js.map +1 -0
  77. package/dist/extractors/mocha/index.d.ts +17 -0
  78. package/dist/extractors/mocha/index.d.ts.map +1 -0
  79. package/dist/extractors/mocha/index.js +241 -0
  80. package/dist/extractors/mocha/index.js.map +1 -0
  81. package/dist/extractors/mocha/index.test.d.ts +7 -0
  82. package/dist/extractors/mocha/index.test.d.ts.map +1 -0
  83. package/dist/extractors/mocha/index.test.js +300 -0
  84. package/dist/extractors/mocha/index.test.js.map +1 -0
  85. package/dist/extractors/playwright/index.d.ts +17 -0
  86. package/dist/extractors/playwright/index.d.ts.map +1 -0
  87. package/dist/extractors/playwright/index.js +320 -0
  88. package/dist/extractors/playwright/index.js.map +1 -0
  89. package/dist/extractors/playwright/index.test.d.ts +7 -0
  90. package/dist/extractors/playwright/index.test.d.ts.map +1 -0
  91. package/dist/extractors/playwright/index.test.js +274 -0
  92. package/dist/extractors/playwright/index.test.js.map +1 -0
  93. package/dist/extractors/tap/index.d.ts +23 -0
  94. package/dist/extractors/tap/index.d.ts.map +1 -0
  95. package/dist/extractors/tap/index.js +352 -0
  96. package/dist/extractors/tap/index.js.map +1 -0
  97. package/dist/extractors/tap/index.test.d.ts +7 -0
  98. package/dist/extractors/tap/index.test.d.ts.map +1 -0
  99. package/dist/extractors/tap/index.test.js +100 -0
  100. package/dist/extractors/tap/index.test.js.map +1 -0
  101. package/dist/extractors/typescript/index.d.ts +17 -0
  102. package/dist/extractors/typescript/index.d.ts.map +1 -0
  103. package/dist/extractors/typescript/index.js +150 -0
  104. package/dist/extractors/typescript/index.js.map +1 -0
  105. package/dist/extractors/typescript/index.test.d.ts +9 -0
  106. package/dist/extractors/typescript/index.test.d.ts.map +1 -0
  107. package/dist/extractors/typescript/index.test.js +177 -0
  108. package/dist/extractors/typescript/index.test.js.map +1 -0
  109. package/dist/extractors/vitest/index.d.ts +17 -0
  110. package/dist/extractors/vitest/index.d.ts.map +1 -0
  111. package/dist/extractors/vitest/index.js +564 -0
  112. package/dist/extractors/vitest/index.js.map +1 -0
  113. package/dist/extractors/vitest/index.test.d.ts +9 -0
  114. package/dist/extractors/vitest/index.test.d.ts.map +1 -0
  115. package/dist/extractors/vitest/index.test.js +373 -0
  116. package/dist/extractors/vitest/index.test.js.map +1 -0
  117. package/dist/index.d.ts +27 -11
  118. package/dist/index.d.ts.map +1 -1
  119. package/dist/index.js +27 -11
  120. package/dist/index.js.map +1 -1
  121. package/dist/maven-checkstyle-extractor.d.ts +20 -0
  122. package/dist/maven-checkstyle-extractor.d.ts.map +1 -0
  123. package/dist/maven-checkstyle-extractor.js +193 -0
  124. package/dist/maven-checkstyle-extractor.js.map +1 -0
  125. package/dist/maven-compiler-extractor.d.ts +20 -0
  126. package/dist/maven-compiler-extractor.d.ts.map +1 -0
  127. package/dist/maven-compiler-extractor.js +218 -0
  128. package/dist/maven-compiler-extractor.js.map +1 -0
  129. package/dist/maven-surefire-extractor.d.ts +20 -0
  130. package/dist/maven-surefire-extractor.d.ts.map +1 -0
  131. package/dist/maven-surefire-extractor.js +228 -0
  132. package/dist/maven-surefire-extractor.js.map +1 -0
  133. package/dist/maven-utils.d.ts +24 -0
  134. package/dist/maven-utils.d.ts.map +1 -0
  135. package/dist/maven-utils.js +36 -0
  136. package/dist/maven-utils.js.map +1 -0
  137. package/dist/plugin-loader.d.ts +82 -0
  138. package/dist/plugin-loader.d.ts.map +1 -0
  139. package/dist/plugin-loader.js +200 -0
  140. package/dist/plugin-loader.js.map +1 -0
  141. package/dist/sandbox.d.ts +161 -0
  142. package/dist/sandbox.d.ts.map +1 -0
  143. package/dist/sandbox.js +254 -0
  144. package/dist/sandbox.js.map +1 -0
  145. package/dist/sandbox.test.d.ts +8 -0
  146. package/dist/sandbox.test.d.ts.map +1 -0
  147. package/dist/sandbox.test.js +395 -0
  148. package/dist/sandbox.test.js.map +1 -0
  149. package/dist/sandboxed-extractor.d.ts +46 -0
  150. package/dist/sandboxed-extractor.d.ts.map +1 -0
  151. package/dist/sandboxed-extractor.js +172 -0
  152. package/dist/sandboxed-extractor.js.map +1 -0
  153. package/dist/sandboxed-extractor.test.d.ts +5 -0
  154. package/dist/sandboxed-extractor.test.d.ts.map +1 -0
  155. package/dist/sandboxed-extractor.test.js +346 -0
  156. package/dist/sandboxed-extractor.test.js.map +1 -0
  157. package/dist/smart-extractor.d.ts +22 -10
  158. package/dist/smart-extractor.d.ts.map +1 -1
  159. package/dist/smart-extractor.js +116 -163
  160. package/dist/smart-extractor.js.map +1 -1
  161. package/dist/types.d.ts +94 -0
  162. package/dist/types.d.ts.map +1 -1
  163. package/package.json +2 -1
@@ -0,0 +1,507 @@
1
+ /**
2
+ * Ava Error Extractor Plugin
3
+ *
4
+ * Parses Ava test output and formats failures for LLM consumption.
5
+ * Supports Ava v6+ output format with Unicode symbols and clean error formatting.
6
+ *
7
+ * @package @vibe-validate/extractors
8
+ */
9
+ import { formatCleanOutput } from '../../utils/formatter-utils.js';
10
+ import { generateGuidanceFromPatterns, COMMON_GUIDANCE_PATTERNS, } from '../../utils/guidance-generator.js';
11
+ /**
12
+ * Ava-specific guidance patterns
13
+ * Extends common patterns with Ava-specific timeout guidance
14
+ */
15
+ const AVA_GUIDANCE_PATTERNS = [
16
+ ...COMMON_GUIDANCE_PATTERNS,
17
+ {
18
+ key: 'ava-timeout',
19
+ messageMatchers: [],
20
+ errorTypeMatchers: ['timeout'],
21
+ guidance: 'Tests are timing out - use t.timeout() to increase limit or optimize async operations',
22
+ },
23
+ ];
24
+ /**
25
+ * Detects if output is from Ava test framework
26
+ */
27
+ // eslint-disable-next-line sonarjs/cognitive-complexity -- Complexity 20 acceptable for Ava detection (pattern scoring with multiple marker types)
28
+ export function detectAva(output) {
29
+ const lines = output.split('\n');
30
+ let score = 0;
31
+ const foundPatterns = [];
32
+ // Look for Ava-specific patterns
33
+ let hasAvaFailureMarker = false;
34
+ let hasAvaTestHeader = false;
35
+ let hasFileUrlFormat = false;
36
+ let hasErrorThrownMarker = false;
37
+ for (const line of lines) {
38
+ const trimmed = line.trim();
39
+ // High-value markers (30 points each)
40
+ if (!hasAvaFailureMarker && /✘\s+\[fail\]:/.test(trimmed)) {
41
+ score += 30;
42
+ foundPatterns.push('Ava failure marker (✘ [fail]:)');
43
+ hasAvaFailureMarker = true;
44
+ }
45
+ // Medium-value markers (20 points)
46
+ if (!hasAvaTestHeader && trimmed.includes('›') && !trimmed.startsWith('›') && trimmed.length > 15) {
47
+ score += 20;
48
+ foundPatterns.push('Ava test hierarchy (›)');
49
+ hasAvaTestHeader = true;
50
+ }
51
+ if (!hasFileUrlFormat && /›\s+file:\/\//.test(trimmed)) {
52
+ score += 20;
53
+ foundPatterns.push('file:// URL format');
54
+ hasFileUrlFormat = true;
55
+ }
56
+ // Ava-specific error markers (15 points)
57
+ if (!hasErrorThrownMarker && (trimmed === 'Error thrown in test:' || trimmed === 'Rejected promise returned by test. Reason:')) {
58
+ score += 15;
59
+ foundPatterns.push('Ava error marker');
60
+ hasErrorThrownMarker = true;
61
+ }
62
+ // Low-value markers (10 points)
63
+ if (trimmed.includes('Test timeout exceeded')) {
64
+ score += 10;
65
+ foundPatterns.push('Ava timeout message');
66
+ }
67
+ // File path with line number format (10 points)
68
+ if (/^[^:]+\.(?:js|ts|mjs|cjs):\d+$/.test(trimmed)) {
69
+ score += 5;
70
+ foundPatterns.push('file:line format');
71
+ }
72
+ }
73
+ // Determine reason based on score
74
+ let reason;
75
+ if (score >= 50) {
76
+ reason = 'Ava test output detected';
77
+ }
78
+ else if (score >= 30) {
79
+ reason = 'Possible Ava test output';
80
+ }
81
+ else {
82
+ reason = 'Not Ava test output';
83
+ }
84
+ return {
85
+ confidence: Math.min(score, 100),
86
+ patterns: foundPatterns,
87
+ reason,
88
+ };
89
+ }
90
+ /**
91
+ * Extract errors from Ava test output
92
+ */
93
+ export function extractAva(output, _command) {
94
+ const detection = detectAva(output);
95
+ if (detection.confidence < 30) {
96
+ return {
97
+ summary: 'Not Ava test output',
98
+ totalErrors: 0,
99
+ errors: [],
100
+ metadata: {
101
+ detection: {
102
+ extractor: 'ava',
103
+ confidence: detection.confidence,
104
+ patterns: detection.patterns,
105
+ reason: detection.reason,
106
+ },
107
+ confidence: detection.confidence,
108
+ completeness: 100,
109
+ issues: [],
110
+ },
111
+ };
112
+ }
113
+ // Extract all failures using two-pass approach:
114
+ // 1. Parse summary lines to get test names
115
+ // 2. Parse detailed blocks to get file locations and messages
116
+ const failures = extractFailures(output);
117
+ if (failures.length === 0) {
118
+ return {
119
+ summary: '0 test(s) failed',
120
+ errors: [],
121
+ totalErrors: 0,
122
+ errorSummary: '',
123
+ guidance: '',
124
+ metadata: {
125
+ detection: {
126
+ extractor: 'ava',
127
+ confidence: detection.confidence,
128
+ patterns: detection.patterns,
129
+ reason: detection.reason,
130
+ },
131
+ confidence: 100,
132
+ completeness: 100,
133
+ issues: [],
134
+ },
135
+ };
136
+ }
137
+ const errors = [];
138
+ let completeCount = 0;
139
+ for (const failure of failures) {
140
+ const file = failure.file ?? 'unknown';
141
+ // Use test name as fallback message if no explicit message extracted
142
+ const message = failure.message ?? failure.testName ?? 'Test failed';
143
+ const context = failure.testName ?? '';
144
+ const isComplete = file !== 'unknown' && failure.line && message && message !== 'Test failed';
145
+ if (isComplete) {
146
+ completeCount++;
147
+ }
148
+ errors.push({
149
+ file,
150
+ line: failure.line,
151
+ message,
152
+ context,
153
+ guidance: failure.guidance,
154
+ });
155
+ }
156
+ // Generate summary
157
+ const summary = `${failures.length} test(s) failed`;
158
+ // Generate guidance using Ava-specific patterns
159
+ const guidance = generateGuidanceFromPatterns(failures, AVA_GUIDANCE_PATTERNS);
160
+ // Calculate quality metadata
161
+ const completeness = failures.length > 0 ? (completeCount / failures.length) * 100 : 100;
162
+ const confidence = failures.length > 0 ? 90 : 100; // High confidence for Ava's structured output
163
+ const metadata = {
164
+ detection: {
165
+ extractor: 'ava',
166
+ confidence: detection.confidence,
167
+ patterns: detection.patterns,
168
+ reason: detection.reason,
169
+ },
170
+ confidence,
171
+ completeness,
172
+ issues: [],
173
+ };
174
+ return {
175
+ summary,
176
+ errors,
177
+ totalErrors: failures.length,
178
+ errorSummary: formatCleanOutput(errors),
179
+ guidance,
180
+ metadata,
181
+ };
182
+ }
183
+ /**
184
+ * Extract all failures from Ava output
185
+ * Strategy: Find detailed headers (test names with ›), then parse each block
186
+ */
187
+ // eslint-disable-next-line sonarjs/cognitive-complexity -- Complexity 23 acceptable for Ava output parsing (handles multiple output formats with fallback detection)
188
+ function extractFailures(output) {
189
+ const lines = output.split('\n');
190
+ const failures = [];
191
+ // Find all detailed block headers (clean test names with ›)
192
+ // These are the authoritative source - each one represents a failure
193
+ const headerIndices = [];
194
+ for (let i = 0; i < lines.length; i++) {
195
+ const trimmed = lines[i].trim();
196
+ // Detailed header: has ›, not a summary, not a file:// line, not code, reasonable length
197
+ if (trimmed.includes('›') &&
198
+ !trimmed.includes('[fail]:') &&
199
+ !trimmed.startsWith('›') &&
200
+ !trimmed.includes('file://') &&
201
+ !/^\d+:/.exec(trimmed) &&
202
+ !/^Error/.exec(trimmed) &&
203
+ !trimmed.includes('{') &&
204
+ !trimmed.includes('}') &&
205
+ trimmed.length > 10) {
206
+ headerIndices.push({ index: i, testName: trimmed });
207
+ }
208
+ }
209
+ // If we found detailed headers, parse each one
210
+ if (headerIndices.length > 0) {
211
+ for (const header of headerIndices) {
212
+ const failure = {
213
+ testName: header.testName,
214
+ };
215
+ // Parse block starting from line after header
216
+ parseDetailedBlock(lines, header.index + 1, failure);
217
+ // Add error type detection and guidance
218
+ if (!failure.errorType && failure.message) {
219
+ failure.errorType = detectErrorType(failure.message);
220
+ }
221
+ if (failure.errorType) {
222
+ failure.guidance = getErrorGuidance(failure.errorType);
223
+ }
224
+ failures.push(failure);
225
+ }
226
+ }
227
+ else {
228
+ // Fallback: No detailed headers found (minimal format)
229
+ // Look for summary lines and parse content after them
230
+ for (let i = 0; i < lines.length; i++) {
231
+ const trimmed = lines[i].trim();
232
+ if (trimmed.includes('✘') && trimmed.includes('[fail]:')) {
233
+ const failure = {};
234
+ const summaryMatch = /✘\s+\[fail\]:\s+(.+)/.exec(trimmed);
235
+ if (summaryMatch) {
236
+ failure.testName = summaryMatch[1];
237
+ }
238
+ // Parse block starting from next line
239
+ parseDetailedBlock(lines, i + 1, failure);
240
+ // Add error type detection and guidance
241
+ if (!failure.errorType && failure.message) {
242
+ failure.errorType = detectErrorType(failure.message);
243
+ }
244
+ if (failure.errorType) {
245
+ failure.guidance = getErrorGuidance(failure.errorType);
246
+ }
247
+ failures.push(failure);
248
+ }
249
+ }
250
+ }
251
+ return failures;
252
+ }
253
+ /**
254
+ * Parse a detailed error block to extract file, line, and message
255
+ */
256
+ // eslint-disable-next-line sonarjs/cognitive-complexity -- Complexity 40 acceptable for Ava error block parsing (state machine handling multiple output formats and edge cases)
257
+ function parseDetailedBlock(lines, startIndex, failure) {
258
+ let i = startIndex;
259
+ let foundCodeSnippet = false;
260
+ let inErrorObject = false;
261
+ while (i < lines.length && i < startIndex + 60) {
262
+ const line = lines[i];
263
+ const trimmed = line.trim();
264
+ // Stop at next test header (clean test name with ›)
265
+ if (i > startIndex + 3 &&
266
+ trimmed.includes('›') &&
267
+ !trimmed.startsWith('›') &&
268
+ trimmed.length > 15 &&
269
+ !trimmed.includes('file://') &&
270
+ !/^\d+:/.exec(trimmed) &&
271
+ !/^Error/.exec(trimmed) &&
272
+ !trimmed.includes('{') &&
273
+ !trimmed.includes('}')) {
274
+ break;
275
+ }
276
+ // Stop at separator
277
+ if (trimmed === '─') {
278
+ break;
279
+ }
280
+ // Extract file path: "tests/ava/test.js:28" (appears right after test name header)
281
+ const fileMatch = /^([^:]+\.(?:js|ts|mjs|cjs)):(\d+)$/.exec(trimmed);
282
+ if (fileMatch && !failure.file) {
283
+ failure.file = fileMatch[1];
284
+ failure.line = Number.parseInt(fileMatch[2], 10);
285
+ i++;
286
+ continue;
287
+ }
288
+ // Extract from file:// URL: "› file://tests/ava/test.js:28:5"
289
+ const urlMatch = /^›\s+file:\/\/(.+?):(\d+):\d+$/.exec(trimmed);
290
+ if (urlMatch && !failure.file) {
291
+ failure.file = urlMatch[1];
292
+ failure.line = Number.parseInt(urlMatch[2], 10);
293
+ i++;
294
+ continue;
295
+ }
296
+ // Code snippet marker (line numbers like " 28: code here")
297
+ if (/^\d+:/.exec(trimmed)) {
298
+ foundCodeSnippet = true;
299
+ i++;
300
+ continue;
301
+ }
302
+ // Error object start
303
+ if (/^(?:TypeError|Error|.*Error)\s*\{$/.exec(trimmed)) {
304
+ inErrorObject = true;
305
+ i++;
306
+ continue;
307
+ }
308
+ // Error object end
309
+ if (inErrorObject && trimmed === '}') {
310
+ inErrorObject = false;
311
+ i++;
312
+ continue;
313
+ }
314
+ // Extract from error object properties
315
+ if (inErrorObject) {
316
+ // message property
317
+ const msgMatch = /message:\s*'([^']+)'/.exec(trimmed);
318
+ if (msgMatch && !failure.message) {
319
+ failure.message = msgMatch[1];
320
+ }
321
+ // code property for error type detection
322
+ const codeMatch = /code:\s*'([^']+)'/.exec(trimmed);
323
+ if (codeMatch) {
324
+ if (codeMatch[1] === 'ENOENT') {
325
+ failure.errorType = 'file-not-found';
326
+ }
327
+ else if (codeMatch[1] === 'ERR_MODULE_NOT_FOUND') {
328
+ failure.errorType = 'import-error';
329
+ }
330
+ }
331
+ i++;
332
+ continue;
333
+ }
334
+ // Extract error from Error: line (after error object)
335
+ // eslint-disable-next-line sonarjs/slow-regex -- Safe: only parses Ava test framework error messages (controlled output), not user input
336
+ const errorLineMatch = /^(?:TypeError|Error|.*Error):\s+(.+)$/.exec(trimmed);
337
+ if (errorLineMatch) {
338
+ failure.message ??= errorLineMatch[1];
339
+ // Look for file in stack trace (next few lines)
340
+ if (!failure.file && i + 1 < lines.length) {
341
+ for (let j = i + 1; j < Math.min(i + 10, lines.length); j++) {
342
+ const stackLine = lines[j].trim();
343
+ // Match: at file:///path/to/file.js:110:24
344
+ // But skip node_modules and ava lib files
345
+ // eslint-disable-next-line sonarjs/slow-regex -- Safe: only parses Ava test framework stack traces (controlled output), not user input
346
+ const stackMatch = /at\s+(?:.*?\s+)?\(?file:\/\/([^:)]+):(\d+):\d+/.exec(stackLine);
347
+ if (stackMatch) {
348
+ const stackFile = stackMatch[1];
349
+ // Skip node_modules and ava library files
350
+ if (!stackFile.includes('node_modules') && !stackFile.includes('/ava/lib/')) {
351
+ failure.file = stackFile;
352
+ failure.line = Number.parseInt(stackMatch[2], 10);
353
+ break;
354
+ }
355
+ }
356
+ }
357
+ }
358
+ i++;
359
+ continue;
360
+ }
361
+ // Timeout marker
362
+ if (trimmed.includes('Test timeout exceeded')) {
363
+ failure.message ??= 'Test timeout exceeded';
364
+ failure.errorType = 'timeout';
365
+ i++;
366
+ continue;
367
+ }
368
+ // Error markers
369
+ if (trimmed === 'Error thrown in test:' || trimmed === 'Rejected promise returned by test. Reason:') {
370
+ i++;
371
+ continue;
372
+ }
373
+ // Detect assertion from Difference section
374
+ if (trimmed.startsWith('Difference') && trimmed.includes('actual') && trimmed.includes('expected')) {
375
+ failure.message ??= 'Assertion failed';
376
+ failure.errorType ??= 'assertion';
377
+ i++;
378
+ continue;
379
+ }
380
+ // Skip diff headers and diff lines
381
+ if (trimmed.startsWith('Difference') ||
382
+ trimmed.startsWith('Expected:') ||
383
+ trimmed.startsWith('Received:') ||
384
+ /^[+-]\s/.exec(trimmed)) {
385
+ i++;
386
+ continue;
387
+ }
388
+ // Assertion message (single line after code snippet, before Difference section)
389
+ if (foundCodeSnippet &&
390
+ !failure.message &&
391
+ trimmed.length > 0 &&
392
+ trimmed.length < 150 &&
393
+ !/^\d+:/.exec(trimmed) &&
394
+ !trimmed.includes('Difference') &&
395
+ !trimmed.includes('{') &&
396
+ !trimmed.includes('}') &&
397
+ !/^at\s+/.exec(trimmed) &&
398
+ !trimmed.includes('file://') &&
399
+ !trimmed.includes('.js:') &&
400
+ !trimmed.includes('.ts:')) {
401
+ failure.message = trimmed;
402
+ i++;
403
+ continue;
404
+ }
405
+ i++;
406
+ }
407
+ }
408
+ /**
409
+ * Detect error type from message
410
+ */
411
+ function detectErrorType(message) {
412
+ const lower = message.toLowerCase();
413
+ if (lower.includes('timeout') || lower.includes('timed out')) {
414
+ return 'timeout';
415
+ }
416
+ if (lower.includes('enoent') || lower.includes('no such file')) {
417
+ return 'file-not-found';
418
+ }
419
+ if (lower.includes('cannot read properties') || lower.includes('typeerror')) {
420
+ return 'type-error';
421
+ }
422
+ if (lower.includes('expected') || lower.includes('should') || lower.includes('difference')) {
423
+ return 'assertion';
424
+ }
425
+ if (lower.includes('cannot find module') || lower.includes('module not found')) {
426
+ return 'import-error';
427
+ }
428
+ return 'unknown';
429
+ }
430
+ /**
431
+ * Get guidance for a specific error type
432
+ */
433
+ function getErrorGuidance(errorType) {
434
+ const guidanceMap = {
435
+ assertion: 'Review the assertion logic and expected vs actual values',
436
+ timeout: 'Increase timeout limit with t.timeout() or optimize async operations',
437
+ 'file-not-found': 'Verify file path exists and permissions are correct',
438
+ 'type-error': 'Check for null/undefined values before accessing properties',
439
+ 'import-error': 'Verify module path and ensure dependencies are installed',
440
+ };
441
+ return guidanceMap[errorType];
442
+ }
443
+ /**
444
+ * Ava Extractor Plugin
445
+ */
446
+ const avaExtractor = {
447
+ metadata: {
448
+ name: 'ava',
449
+ version: '1.0.0',
450
+ author: 'Jeff Dutton <jeff@duckcreek.com>',
451
+ description: 'Extracts test failures from Ava test framework output',
452
+ repository: 'https://github.com/jdutton/vibe-validate',
453
+ tags: ['ava', 'test', 'javascript', 'typescript'],
454
+ },
455
+ hints: {
456
+ anyOf: ['✘', '[fail]', 'file://'],
457
+ },
458
+ priority: 82,
459
+ detect: detectAva,
460
+ extract: extractAva,
461
+ samples: [
462
+ {
463
+ name: 'basic-assertion-failure',
464
+ description: 'Simple assertion failure with file and line',
465
+ input: `
466
+ ✘ [fail]: Extractors › should extract TypeScript errors correctly should have 5 errors
467
+
468
+ Extractors › should extract TypeScript errors correctly
469
+
470
+ tests/ava/comprehensive-failures.test.js:28
471
+
472
+ 27: // Expected: 1 error, but we assert 5 (INTENTIONAL FAILURE)
473
+ 28: t.is(result.errors.length, 5, 'should have 5 errors');
474
+ 29: });
475
+
476
+ should have 5 errors
477
+
478
+ Difference (- actual, + expected):
479
+
480
+ - 1
481
+ + 5
482
+
483
+ › file://tests/ava/comprehensive-failures.test.js:28:5
484
+ `,
485
+ expected: {
486
+ totalErrors: 1,
487
+ errors: [
488
+ {
489
+ file: 'tests/ava/comprehensive-failures.test.js',
490
+ line: 28,
491
+ message: 'should have 5 errors',
492
+ },
493
+ ],
494
+ },
495
+ },
496
+ {
497
+ name: 'comprehensive-failures',
498
+ description: 'Real Ava comprehensive failure output',
499
+ inputFile: './samples/comprehensive-failures-001.txt',
500
+ expected: {
501
+ totalErrors: 11,
502
+ },
503
+ },
504
+ ],
505
+ };
506
+ export default avaExtractor;
507
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/extractors/ava/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Ava Error Extractor Tests
3
+ *
4
+ * @package @vibe-validate/extractors
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=index.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../../../src/extractors/ava/index.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}