@vibe-validate/extractors 0.17.4 → 0.17.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.
- package/dist/extractor-registry.d.ts.map +1 -1
- package/dist/extractor-registry.js +8 -8
- package/dist/extractor-registry.js.map +1 -1
- package/dist/extractors/ava/index.d.ts.map +1 -1
- package/dist/extractors/ava/index.js +15 -14
- package/dist/extractors/ava/index.js.map +1 -1
- package/dist/extractors/ava/index.test.js +30 -20
- package/dist/extractors/ava/index.test.js.map +1 -1
- package/dist/extractors/eslint/index.d.ts.map +1 -1
- package/dist/extractors/eslint/index.js +1 -1
- package/dist/extractors/eslint/index.js.map +1 -1
- package/dist/extractors/eslint/index.test.js.map +1 -1
- package/dist/extractors/generic/index.test.js.map +1 -1
- package/dist/extractors/jasmine/index.test.js.map +1 -1
- package/dist/extractors/jest/index.d.ts.map +1 -1
- package/dist/extractors/jest/index.js.map +1 -1
- package/dist/extractors/jest/index.test.js.map +1 -1
- package/dist/extractors/junit/index.d.ts.map +1 -1
- package/dist/extractors/junit/index.js +5 -5
- package/dist/extractors/junit/index.js.map +1 -1
- package/dist/extractors/junit/index.test.js.map +1 -1
- package/dist/extractors/maven-checkstyle/index.d.ts.map +1 -1
- package/dist/extractors/maven-checkstyle/index.js +1 -1
- package/dist/extractors/maven-checkstyle/index.js.map +1 -1
- package/dist/extractors/maven-checkstyle/index.test.js +2 -2
- package/dist/extractors/maven-checkstyle/index.test.js.map +1 -1
- package/dist/extractors/maven-compiler/index.d.ts.map +1 -1
- package/dist/extractors/maven-compiler/index.js +1 -1
- package/dist/extractors/maven-compiler/index.js.map +1 -1
- package/dist/extractors/maven-compiler/index.test.js +1 -1
- package/dist/extractors/maven-compiler/index.test.js.map +1 -1
- package/dist/extractors/maven-surefire/index.d.ts.map +1 -1
- package/dist/extractors/maven-surefire/index.js.map +1 -1
- package/dist/extractors/maven-surefire/index.test.js.map +1 -1
- package/dist/extractors/mocha/index.test.js.map +1 -1
- package/dist/extractors/playwright/index.test.js.map +1 -1
- package/dist/extractors/tap/index.test.js +2 -2
- package/dist/extractors/tap/index.test.js.map +1 -1
- package/dist/extractors/typescript/index.d.ts.map +1 -1
- package/dist/extractors/typescript/index.js +16 -19
- package/dist/extractors/typescript/index.js.map +1 -1
- package/dist/extractors/typescript/index.test.js.map +1 -1
- package/dist/extractors/vitest/index.d.ts.map +1 -1
- package/dist/extractors/vitest/index.js +16 -7
- package/dist/extractors/vitest/index.js.map +1 -1
- package/dist/extractors/vitest/index.test.js +38 -0
- package/dist/extractors/vitest/index.test.js.map +1 -1
- package/dist/plugin-loader.d.ts.map +1 -1
- package/dist/plugin-loader.js +1 -1
- package/dist/plugin-loader.js.map +1 -1
- package/dist/result-schema-export.d.ts.map +1 -1
- package/dist/result-schema-export.js.map +1 -1
- package/dist/result-schema.d.ts.map +1 -1
- package/dist/result-schema.js +1 -1
- package/dist/result-schema.js.map +1 -1
- package/dist/sandboxed-extractor.d.ts +1 -1
- package/dist/sandboxed-extractor.d.ts.map +1 -1
- package/dist/sandboxed-extractor.js.map +1 -1
- package/dist/scripts/generate-result-schema.js +1 -1
- package/dist/scripts/generate-result-schema.js.map +1 -1
- package/dist/smart-extractor.d.ts.map +1 -1
- package/dist/smart-extractor.js.map +1 -1
- package/dist/utils/guidance-generator.d.ts.map +1 -1
- package/dist/utils/guidance-generator.js +4 -7
- package/dist/utils/guidance-generator.js.map +1 -1
- package/dist/utils/test-framework-utils.d.ts.map +1 -1
- package/dist/utils/test-framework-utils.js.map +1 -1
- package/dist/utils.js +1 -1
- package/dist/utils.js.map +1 -1
- package/package.json +8 -8
- package/dist/ava-extractor.d.ts +0 -24
- package/dist/ava-extractor.d.ts.map +0 -1
- package/dist/ava-extractor.js +0 -343
- package/dist/ava-extractor.js.map +0 -1
- package/dist/eslint-extractor.d.ts +0 -25
- package/dist/eslint-extractor.d.ts.map +0 -1
- package/dist/eslint-extractor.js +0 -145
- package/dist/eslint-extractor.js.map +0 -1
- package/dist/generic-extractor.d.ts +0 -35
- package/dist/generic-extractor.d.ts.map +0 -1
- package/dist/generic-extractor.js +0 -128
- package/dist/generic-extractor.js.map +0 -1
- package/dist/jasmine-extractor.d.ts +0 -23
- package/dist/jasmine-extractor.d.ts.map +0 -1
- package/dist/jasmine-extractor.js +0 -151
- package/dist/jasmine-extractor.js.map +0 -1
- package/dist/jest-extractor.d.ts +0 -29
- package/dist/jest-extractor.d.ts.map +0 -1
- package/dist/jest-extractor.js +0 -174
- package/dist/jest-extractor.js.map +0 -1
- package/dist/junit-extractor.d.ts +0 -24
- package/dist/junit-extractor.d.ts.map +0 -1
- package/dist/junit-extractor.js +0 -193
- package/dist/junit-extractor.js.map +0 -1
- package/dist/maven-checkstyle-extractor.d.ts +0 -20
- package/dist/maven-checkstyle-extractor.d.ts.map +0 -1
- package/dist/maven-checkstyle-extractor.js +0 -208
- package/dist/maven-checkstyle-extractor.js.map +0 -1
- package/dist/maven-compiler-extractor.d.ts +0 -20
- package/dist/maven-compiler-extractor.d.ts.map +0 -1
- package/dist/maven-compiler-extractor.js +0 -218
- package/dist/maven-compiler-extractor.js.map +0 -1
- package/dist/maven-surefire-extractor.d.ts +0 -20
- package/dist/maven-surefire-extractor.d.ts.map +0 -1
- package/dist/maven-surefire-extractor.js +0 -228
- package/dist/maven-surefire-extractor.js.map +0 -1
- package/dist/mocha-extractor.d.ts +0 -23
- package/dist/mocha-extractor.d.ts.map +0 -1
- package/dist/mocha-extractor.js +0 -160
- package/dist/mocha-extractor.js.map +0 -1
- package/dist/playwright-extractor.d.ts +0 -38
- package/dist/playwright-extractor.d.ts.map +0 -1
- package/dist/playwright-extractor.js +0 -239
- package/dist/playwright-extractor.js.map +0 -1
- package/dist/sandbox.test.d.ts +0 -8
- package/dist/sandbox.test.d.ts.map +0 -1
- package/dist/sandbox.test.js +0 -395
- package/dist/sandbox.test.js.map +0 -1
- package/dist/sandboxed-extractor.test.d.ts +0 -5
- package/dist/sandboxed-extractor.test.d.ts.map +0 -1
- package/dist/sandboxed-extractor.test.js +0 -346
- package/dist/sandboxed-extractor.test.js.map +0 -1
- package/dist/tap-extractor.d.ts +0 -24
- package/dist/tap-extractor.d.ts.map +0 -1
- package/dist/tap-extractor.js +0 -217
- package/dist/tap-extractor.js.map +0 -1
- package/dist/typescript-extractor.d.ts +0 -25
- package/dist/typescript-extractor.d.ts.map +0 -1
- package/dist/typescript-extractor.js +0 -96
- package/dist/typescript-extractor.js.map +0 -1
- package/dist/vitest-extractor.d.ts +0 -38
- package/dist/vitest-extractor.d.ts.map +0 -1
- package/dist/vitest-extractor.js +0 -540
- package/dist/vitest-extractor.js.map +0 -1
|
@@ -1,346 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tests for Sandboxed Extractor Wrapper
|
|
3
|
-
*/
|
|
4
|
-
import { describe, it, expect } from 'vitest';
|
|
5
|
-
import { createSandboxedExtractor } from './sandboxed-extractor.js';
|
|
6
|
-
// Mock extractor plugin for testing
|
|
7
|
-
const createMockPlugin = (extractFn) => ({
|
|
8
|
-
metadata: {
|
|
9
|
-
name: 'test-extractor',
|
|
10
|
-
version: '1.0.0',
|
|
11
|
-
description: 'Test extractor for sandboxing',
|
|
12
|
-
},
|
|
13
|
-
priority: 50,
|
|
14
|
-
detect: () => ({ confidence: 100, patterns: ['test'], reason: 'Test' }),
|
|
15
|
-
extract: extractFn,
|
|
16
|
-
samples: [],
|
|
17
|
-
});
|
|
18
|
-
describe('createSandboxedExtractor', () => {
|
|
19
|
-
describe('trust: full (no sandbox)', () => {
|
|
20
|
-
it('should execute extractor directly without sandboxing', async () => {
|
|
21
|
-
const plugin = createMockPlugin((output) => ({
|
|
22
|
-
errors: [{ file: 'test.ts', line: 1, message: output }],
|
|
23
|
-
totalErrors: 1,
|
|
24
|
-
summary: '1 error',
|
|
25
|
-
guidance: 'Fix it',
|
|
26
|
-
metadata: {
|
|
27
|
-
detection: {
|
|
28
|
-
extractor: 'test-extractor',
|
|
29
|
-
confidence: 100,
|
|
30
|
-
patterns: ['test'],
|
|
31
|
-
reason: 'Test',
|
|
32
|
-
},
|
|
33
|
-
confidence: 100,
|
|
34
|
-
completeness: 100,
|
|
35
|
-
issues: [],
|
|
36
|
-
},
|
|
37
|
-
}));
|
|
38
|
-
const wrappedExtract = createSandboxedExtractor(plugin, { trust: 'full' });
|
|
39
|
-
const result = await wrappedExtract('error: test failed');
|
|
40
|
-
expect(result.errors).toHaveLength(1);
|
|
41
|
-
expect(result.errors[0].message).toBe('error: test failed');
|
|
42
|
-
expect(result.summary).toBe('1 error');
|
|
43
|
-
});
|
|
44
|
-
it('should pass command parameter to extractor', async () => {
|
|
45
|
-
const plugin = createMockPlugin((output, command) => ({
|
|
46
|
-
errors: [{ file: 'test.ts', line: 1, message: `${command}: ${output}` }],
|
|
47
|
-
totalErrors: 1,
|
|
48
|
-
summary: '1 error',
|
|
49
|
-
guidance: 'Fix it',
|
|
50
|
-
metadata: {
|
|
51
|
-
detection: {
|
|
52
|
-
extractor: 'test-extractor',
|
|
53
|
-
confidence: 100,
|
|
54
|
-
patterns: ['test'],
|
|
55
|
-
reason: 'Test',
|
|
56
|
-
},
|
|
57
|
-
confidence: 100,
|
|
58
|
-
completeness: 100,
|
|
59
|
-
issues: [],
|
|
60
|
-
},
|
|
61
|
-
}));
|
|
62
|
-
const wrappedExtract = createSandboxedExtractor(plugin, { trust: 'full' });
|
|
63
|
-
const result = await wrappedExtract('error', 'npm test');
|
|
64
|
-
expect(result.errors[0].message).toBe('npm test: error');
|
|
65
|
-
});
|
|
66
|
-
it('should handle extractors that return no errors', async () => {
|
|
67
|
-
const plugin = createMockPlugin(() => ({
|
|
68
|
-
errors: [],
|
|
69
|
-
totalErrors: 0,
|
|
70
|
-
summary: 'No errors',
|
|
71
|
-
guidance: 'All good',
|
|
72
|
-
metadata: {
|
|
73
|
-
detection: {
|
|
74
|
-
extractor: 'test-extractor',
|
|
75
|
-
confidence: 100,
|
|
76
|
-
patterns: ['test'],
|
|
77
|
-
reason: 'Test',
|
|
78
|
-
},
|
|
79
|
-
confidence: 100,
|
|
80
|
-
completeness: 100,
|
|
81
|
-
issues: [],
|
|
82
|
-
},
|
|
83
|
-
}));
|
|
84
|
-
const wrappedExtract = createSandboxedExtractor(plugin, { trust: 'full' });
|
|
85
|
-
const result = await wrappedExtract('clean output');
|
|
86
|
-
expect(result.errors).toHaveLength(0);
|
|
87
|
-
expect(result.summary).toBe('No errors');
|
|
88
|
-
});
|
|
89
|
-
});
|
|
90
|
-
describe('trust: sandbox (with isolation)', () => {
|
|
91
|
-
it('should execute extractor in sandbox', async () => {
|
|
92
|
-
const plugin = createMockPlugin((output) => ({
|
|
93
|
-
errors: [{ file: 'test.ts', line: 1, message: output }],
|
|
94
|
-
totalErrors: 1,
|
|
95
|
-
summary: '1 error',
|
|
96
|
-
guidance: 'Fix it',
|
|
97
|
-
metadata: {
|
|
98
|
-
detection: {
|
|
99
|
-
extractor: 'test-extractor',
|
|
100
|
-
confidence: 100,
|
|
101
|
-
patterns: ['test'],
|
|
102
|
-
reason: 'Test',
|
|
103
|
-
},
|
|
104
|
-
confidence: 100,
|
|
105
|
-
completeness: 100,
|
|
106
|
-
issues: [],
|
|
107
|
-
},
|
|
108
|
-
}));
|
|
109
|
-
const wrappedExtract = createSandboxedExtractor(plugin, { trust: 'sandbox' });
|
|
110
|
-
const result = await wrappedExtract('error: test failed');
|
|
111
|
-
expect(result.errors).toHaveLength(1);
|
|
112
|
-
expect(result.errors[0].message).toBe('error: test failed');
|
|
113
|
-
});
|
|
114
|
-
it('should use default trust level (sandbox) when not specified', async () => {
|
|
115
|
-
const plugin = createMockPlugin((output) => ({
|
|
116
|
-
errors: [{ file: 'test.ts', line: 1, message: output }],
|
|
117
|
-
totalErrors: 1,
|
|
118
|
-
summary: '1 error',
|
|
119
|
-
guidance: 'Fix it',
|
|
120
|
-
metadata: {
|
|
121
|
-
detection: {
|
|
122
|
-
extractor: 'test-extractor',
|
|
123
|
-
confidence: 100,
|
|
124
|
-
patterns: ['test'],
|
|
125
|
-
reason: 'Test',
|
|
126
|
-
},
|
|
127
|
-
confidence: 100,
|
|
128
|
-
completeness: 100,
|
|
129
|
-
issues: [],
|
|
130
|
-
},
|
|
131
|
-
}));
|
|
132
|
-
// No trust specified - should default to sandbox
|
|
133
|
-
const wrappedExtract = createSandboxedExtractor(plugin);
|
|
134
|
-
const result = await wrappedExtract('error: test failed');
|
|
135
|
-
expect(result.errors).toHaveLength(1);
|
|
136
|
-
});
|
|
137
|
-
it('should handle extractors with multiple errors', async () => {
|
|
138
|
-
const plugin = createMockPlugin(() => ({
|
|
139
|
-
errors: [
|
|
140
|
-
{ file: 'test1.ts', line: 1, message: 'Error 1' },
|
|
141
|
-
{ file: 'test2.ts', line: 2, message: 'Error 2' },
|
|
142
|
-
{ file: 'test3.ts', line: 3, message: 'Error 3' },
|
|
143
|
-
],
|
|
144
|
-
totalErrors: 3,
|
|
145
|
-
summary: '3 errors',
|
|
146
|
-
guidance: 'Fix them',
|
|
147
|
-
metadata: {
|
|
148
|
-
detection: {
|
|
149
|
-
extractor: 'test-extractor',
|
|
150
|
-
confidence: 100,
|
|
151
|
-
patterns: ['test'],
|
|
152
|
-
reason: 'Test',
|
|
153
|
-
},
|
|
154
|
-
confidence: 100,
|
|
155
|
-
completeness: 100,
|
|
156
|
-
issues: [],
|
|
157
|
-
},
|
|
158
|
-
}));
|
|
159
|
-
const wrappedExtract = createSandboxedExtractor(plugin, { trust: 'sandbox' });
|
|
160
|
-
const result = await wrappedExtract('multiple errors');
|
|
161
|
-
expect(result.errors).toHaveLength(3);
|
|
162
|
-
expect(result.summary).toBe('3 errors');
|
|
163
|
-
});
|
|
164
|
-
it('should handle extractors that use string manipulation', async () => {
|
|
165
|
-
const plugin = createMockPlugin((output) => {
|
|
166
|
-
const lines = output.split('\n');
|
|
167
|
-
const errors = lines
|
|
168
|
-
.filter(line => line.includes('ERROR'))
|
|
169
|
-
.map((line, idx) => ({
|
|
170
|
-
file: 'test.ts',
|
|
171
|
-
line: idx + 1,
|
|
172
|
-
message: line.trim(),
|
|
173
|
-
}));
|
|
174
|
-
return {
|
|
175
|
-
errors,
|
|
176
|
-
totalErrors: errors.length,
|
|
177
|
-
summary: `${errors.length} errors`,
|
|
178
|
-
guidance: 'Fix errors',
|
|
179
|
-
metadata: {
|
|
180
|
-
detection: {
|
|
181
|
-
extractor: 'test-extractor',
|
|
182
|
-
confidence: 100,
|
|
183
|
-
patterns: ['ERROR'],
|
|
184
|
-
reason: 'Found ERROR keyword',
|
|
185
|
-
},
|
|
186
|
-
confidence: 100,
|
|
187
|
-
completeness: 100,
|
|
188
|
-
issues: [],
|
|
189
|
-
},
|
|
190
|
-
};
|
|
191
|
-
});
|
|
192
|
-
const wrappedExtract = createSandboxedExtractor(plugin, { trust: 'sandbox' });
|
|
193
|
-
const result = await wrappedExtract('INFO: Starting\nERROR: Failed\nINFO: Done');
|
|
194
|
-
expect(result.errors).toHaveLength(1);
|
|
195
|
-
expect(result.errors[0].message).toBe('ERROR: Failed');
|
|
196
|
-
});
|
|
197
|
-
it('should handle extractors that use regex', async () => {
|
|
198
|
-
const plugin = createMockPlugin((output) => {
|
|
199
|
-
const errorRegex = /Error at line (\d+): (.+)/g;
|
|
200
|
-
const errors = [];
|
|
201
|
-
let match;
|
|
202
|
-
while ((match = errorRegex.exec(output)) !== null) {
|
|
203
|
-
errors.push({
|
|
204
|
-
file: 'test.ts',
|
|
205
|
-
line: Number.parseInt(match[1], 10),
|
|
206
|
-
message: match[2],
|
|
207
|
-
});
|
|
208
|
-
}
|
|
209
|
-
return {
|
|
210
|
-
errors,
|
|
211
|
-
totalErrors: errors.length,
|
|
212
|
-
summary: `${errors.length} errors`,
|
|
213
|
-
guidance: 'Fix errors',
|
|
214
|
-
metadata: {
|
|
215
|
-
detection: {
|
|
216
|
-
extractor: 'test-extractor',
|
|
217
|
-
confidence: 100,
|
|
218
|
-
patterns: ['Error at line'],
|
|
219
|
-
reason: 'Regex match',
|
|
220
|
-
},
|
|
221
|
-
confidence: 100,
|
|
222
|
-
completeness: 100,
|
|
223
|
-
issues: [],
|
|
224
|
-
},
|
|
225
|
-
};
|
|
226
|
-
});
|
|
227
|
-
const wrappedExtract = createSandboxedExtractor(plugin, { trust: 'sandbox' });
|
|
228
|
-
const result = await wrappedExtract('Error at line 5: undefined variable\nError at line 10: syntax error');
|
|
229
|
-
expect(result.errors).toHaveLength(2);
|
|
230
|
-
expect(result.errors[0].line).toBe(5);
|
|
231
|
-
expect(result.errors[1].line).toBe(10);
|
|
232
|
-
});
|
|
233
|
-
it('should handle extractors that return no errors', async () => {
|
|
234
|
-
const plugin = createMockPlugin(() => ({
|
|
235
|
-
errors: [],
|
|
236
|
-
totalErrors: 0,
|
|
237
|
-
summary: 'No errors',
|
|
238
|
-
guidance: 'All good',
|
|
239
|
-
metadata: {
|
|
240
|
-
detection: {
|
|
241
|
-
extractor: 'test-extractor',
|
|
242
|
-
confidence: 100,
|
|
243
|
-
patterns: ['test'],
|
|
244
|
-
reason: 'Test',
|
|
245
|
-
},
|
|
246
|
-
confidence: 100,
|
|
247
|
-
completeness: 100,
|
|
248
|
-
issues: [],
|
|
249
|
-
},
|
|
250
|
-
}));
|
|
251
|
-
const wrappedExtract = createSandboxedExtractor(plugin, { trust: 'sandbox' });
|
|
252
|
-
const result = await wrappedExtract('clean output');
|
|
253
|
-
expect(result.errors).toHaveLength(0);
|
|
254
|
-
expect(result.summary).toBe('No errors');
|
|
255
|
-
});
|
|
256
|
-
});
|
|
257
|
-
describe('error handling', () => {
|
|
258
|
-
it('should handle syntax errors in extractor code', async () => {
|
|
259
|
-
// Create plugin with syntax error
|
|
260
|
-
const plugin = createMockPlugin(() => {
|
|
261
|
-
throw new Error('Syntax error: unexpected token');
|
|
262
|
-
});
|
|
263
|
-
const wrappedExtract = createSandboxedExtractor(plugin, { trust: 'sandbox' });
|
|
264
|
-
const result = await wrappedExtract('some output');
|
|
265
|
-
// Should return empty errors with error in metadata
|
|
266
|
-
expect(result.errors).toHaveLength(0);
|
|
267
|
-
expect(result.summary).toContain('Sandbox execution failed');
|
|
268
|
-
expect(result.metadata?.issues).toHaveLength(1);
|
|
269
|
-
expect(result.metadata?.issues[0]).toContain('Syntax error');
|
|
270
|
-
});
|
|
271
|
-
it('should handle extractors that throw errors', async () => {
|
|
272
|
-
const plugin = createMockPlugin(() => {
|
|
273
|
-
throw new Error('Extractor failed');
|
|
274
|
-
});
|
|
275
|
-
const wrappedExtract = createSandboxedExtractor(plugin, { trust: 'sandbox' });
|
|
276
|
-
const result = await wrappedExtract('some output');
|
|
277
|
-
expect(result.errors).toHaveLength(0);
|
|
278
|
-
expect(result.summary).toContain('Sandbox execution failed');
|
|
279
|
-
expect(result.metadata?.confidence).toBe(0);
|
|
280
|
-
});
|
|
281
|
-
it('should handle extractors that return invalid results', async () => {
|
|
282
|
-
const plugin = createMockPlugin(() => {
|
|
283
|
-
// Return invalid result (missing required fields)
|
|
284
|
-
return { invalid: 'result' };
|
|
285
|
-
});
|
|
286
|
-
const wrappedExtract = createSandboxedExtractor(plugin, { trust: 'sandbox' });
|
|
287
|
-
const result = await wrappedExtract('some output');
|
|
288
|
-
// Sandbox should handle this and return error metadata
|
|
289
|
-
expect(result).toBeDefined();
|
|
290
|
-
expect(result.errors).toBeDefined();
|
|
291
|
-
});
|
|
292
|
-
});
|
|
293
|
-
describe('performance options', () => {
|
|
294
|
-
it('should respect custom memory limit', async () => {
|
|
295
|
-
const plugin = createMockPlugin(() => ({
|
|
296
|
-
errors: [],
|
|
297
|
-
totalErrors: 0,
|
|
298
|
-
summary: 'No errors',
|
|
299
|
-
guidance: '',
|
|
300
|
-
metadata: {
|
|
301
|
-
detection: {
|
|
302
|
-
extractor: 'test-extractor',
|
|
303
|
-
confidence: 100,
|
|
304
|
-
patterns: [],
|
|
305
|
-
reason: 'Test',
|
|
306
|
-
},
|
|
307
|
-
confidence: 100,
|
|
308
|
-
completeness: 100,
|
|
309
|
-
issues: [],
|
|
310
|
-
},
|
|
311
|
-
}));
|
|
312
|
-
const wrappedExtract = createSandboxedExtractor(plugin, {
|
|
313
|
-
trust: 'sandbox',
|
|
314
|
-
memoryLimitMB: 64,
|
|
315
|
-
});
|
|
316
|
-
const result = await wrappedExtract('test');
|
|
317
|
-
expect(result).toBeDefined();
|
|
318
|
-
});
|
|
319
|
-
it('should respect custom timeout', async () => {
|
|
320
|
-
const plugin = createMockPlugin(() => ({
|
|
321
|
-
errors: [],
|
|
322
|
-
totalErrors: 0,
|
|
323
|
-
summary: 'No errors',
|
|
324
|
-
guidance: '',
|
|
325
|
-
metadata: {
|
|
326
|
-
detection: {
|
|
327
|
-
extractor: 'test-extractor',
|
|
328
|
-
confidence: 100,
|
|
329
|
-
patterns: [],
|
|
330
|
-
reason: 'Test',
|
|
331
|
-
},
|
|
332
|
-
confidence: 100,
|
|
333
|
-
completeness: 100,
|
|
334
|
-
issues: [],
|
|
335
|
-
},
|
|
336
|
-
}));
|
|
337
|
-
const wrappedExtract = createSandboxedExtractor(plugin, {
|
|
338
|
-
trust: 'sandbox',
|
|
339
|
-
timeoutMs: 10000,
|
|
340
|
-
});
|
|
341
|
-
const result = await wrappedExtract('test');
|
|
342
|
-
expect(result).toBeDefined();
|
|
343
|
-
});
|
|
344
|
-
});
|
|
345
|
-
});
|
|
346
|
-
//# sourceMappingURL=sandboxed-extractor.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sandboxed-extractor.test.js","sourceRoot":"","sources":["../src/sandboxed-extractor.test.ts"],"names":[],"mappings":"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"}
|
package/dist/tap-extractor.d.ts
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* TAP Error Extractor
|
|
3
|
-
*
|
|
4
|
-
* Parses TAP (Test Anything Protocol) test output and formats failures for LLM consumption.
|
|
5
|
-
* Supports TAP version 13 and compatible test frameworks (tape, node-tap, etc.)
|
|
6
|
-
*
|
|
7
|
-
* @package @vibe-validate/extractors
|
|
8
|
-
*/
|
|
9
|
-
import type { ErrorExtractorResult } from './types.js';
|
|
10
|
-
/**
|
|
11
|
-
* Extract errors from TAP test output
|
|
12
|
-
*
|
|
13
|
-
* @param output - TAP text output
|
|
14
|
-
* @returns Structured error information
|
|
15
|
-
*
|
|
16
|
-
* @example
|
|
17
|
-
* ```typescript
|
|
18
|
-
* const tapOutput = execSync('tape tests/**\/*.test.js', { encoding: 'utf-8' });
|
|
19
|
-
* const result = extractTAPErrors(tapOutput);
|
|
20
|
-
* console.log(result.summary); // "5 test(s) failed"
|
|
21
|
-
* ```
|
|
22
|
-
*/
|
|
23
|
-
export declare function extractTAPErrors(output: string): ErrorExtractorResult;
|
|
24
|
-
//# sourceMappingURL=tap-extractor.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tap-extractor.d.ts","sourceRoot":"","sources":["../src/tap-extractor.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAsC,MAAM,YAAY,CAAC;AAI3F;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,oBAAoB,CAmErE"}
|
package/dist/tap-extractor.js
DELETED
|
@@ -1,217 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* TAP Error Extractor
|
|
3
|
-
*
|
|
4
|
-
* Parses TAP (Test Anything Protocol) test output and formats failures for LLM consumption.
|
|
5
|
-
* Supports TAP version 13 and compatible test frameworks (tape, node-tap, etc.)
|
|
6
|
-
*
|
|
7
|
-
* @package @vibe-validate/extractors
|
|
8
|
-
*/
|
|
9
|
-
import { formatCleanOutput } from './utils/formatter-utils.js';
|
|
10
|
-
import { generateGuidanceFromPatterns } from './utils/guidance-generator.js';
|
|
11
|
-
/**
|
|
12
|
-
* Extract errors from TAP test output
|
|
13
|
-
*
|
|
14
|
-
* @param output - TAP text output
|
|
15
|
-
* @returns Structured error information
|
|
16
|
-
*
|
|
17
|
-
* @example
|
|
18
|
-
* ```typescript
|
|
19
|
-
* const tapOutput = execSync('tape tests/**\/*.test.js', { encoding: 'utf-8' });
|
|
20
|
-
* const result = extractTAPErrors(tapOutput);
|
|
21
|
-
* console.log(result.summary); // "5 test(s) failed"
|
|
22
|
-
* ```
|
|
23
|
-
*/
|
|
24
|
-
export function extractTAPErrors(output) {
|
|
25
|
-
// Note: ANSI codes are stripped centrally in smart-extractor.ts
|
|
26
|
-
// Extract all failures
|
|
27
|
-
const failures = extractFailures(output);
|
|
28
|
-
if (failures.length === 0) {
|
|
29
|
-
return {
|
|
30
|
-
summary: '0 test(s) failed',
|
|
31
|
-
errors: [],
|
|
32
|
-
totalErrors: 0,
|
|
33
|
-
errorSummary: '',
|
|
34
|
-
guidance: '',
|
|
35
|
-
metadata: {
|
|
36
|
-
confidence: 100,
|
|
37
|
-
completeness: 100,
|
|
38
|
-
issues: []
|
|
39
|
-
}
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
const errors = [];
|
|
43
|
-
let completeCount = 0;
|
|
44
|
-
for (const failure of failures) {
|
|
45
|
-
const file = failure.file ?? undefined;
|
|
46
|
-
const message = failure.message ?? 'Test failed';
|
|
47
|
-
const context = failure.testName ?? '';
|
|
48
|
-
const isComplete = file && failure.line && message;
|
|
49
|
-
if (isComplete) {
|
|
50
|
-
completeCount++;
|
|
51
|
-
}
|
|
52
|
-
errors.push({
|
|
53
|
-
file,
|
|
54
|
-
line: failure.line,
|
|
55
|
-
message,
|
|
56
|
-
context,
|
|
57
|
-
guidance: failure.guidance
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
// Generate summary
|
|
61
|
-
const summary = `${failures.length} test(s) failed`;
|
|
62
|
-
// Generate guidance using TAP-specific patterns
|
|
63
|
-
const guidance = generateGuidanceFromPatterns(failures, TAP_GUIDANCE_PATTERNS);
|
|
64
|
-
// Calculate quality metadata
|
|
65
|
-
const completeness = failures.length > 0 ? (completeCount / failures.length) * 100 : 100;
|
|
66
|
-
const confidence = failures.length > 0 ? 95 : 100; // High confidence for TAP
|
|
67
|
-
const metadata = {
|
|
68
|
-
confidence,
|
|
69
|
-
completeness,
|
|
70
|
-
issues: []
|
|
71
|
-
};
|
|
72
|
-
return {
|
|
73
|
-
summary,
|
|
74
|
-
errors,
|
|
75
|
-
totalErrors: failures.length,
|
|
76
|
-
errorSummary: formatCleanOutput(errors),
|
|
77
|
-
guidance,
|
|
78
|
-
metadata
|
|
79
|
-
};
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* Extract all failures from TAP output
|
|
83
|
-
*/
|
|
84
|
-
// eslint-disable-next-line sonarjs/cognitive-complexity -- Complexity 17 acceptable for TAP output parsing (handles test comments, failure markers, and YAML diagnostic blocks)
|
|
85
|
-
function extractFailures(output) {
|
|
86
|
-
const failures = [];
|
|
87
|
-
const lines = output.split('\n');
|
|
88
|
-
let currentTestName = '';
|
|
89
|
-
let i = 0;
|
|
90
|
-
while (i < lines.length) {
|
|
91
|
-
const line = lines[i];
|
|
92
|
-
// Track test names from comments
|
|
93
|
-
if (line.trim().startsWith('#')) {
|
|
94
|
-
currentTestName = line.trim().substring(1).trim();
|
|
95
|
-
i++;
|
|
96
|
-
continue;
|
|
97
|
-
}
|
|
98
|
-
// Look for failures: "not ok N message"
|
|
99
|
-
// eslint-disable-next-line sonarjs/slow-regex -- Safe: only parses TAP test framework output (controlled output), not user input
|
|
100
|
-
const failureMatch = /^not ok\s+\d+\s+(.+)$/.exec(line);
|
|
101
|
-
if (failureMatch) {
|
|
102
|
-
const message = failureMatch[1].trim();
|
|
103
|
-
const failure = {
|
|
104
|
-
message,
|
|
105
|
-
testName: currentTestName
|
|
106
|
-
};
|
|
107
|
-
// Look for YAML diagnostic block (starts with " ---")
|
|
108
|
-
if (i + 1 < lines.length && lines[i + 1].trim() === '---') {
|
|
109
|
-
i += 2; // Skip "not ok" line and "---" line
|
|
110
|
-
// Parse YAML block until we hit "..."
|
|
111
|
-
while (i < lines.length && !lines[i].trim().startsWith('...')) {
|
|
112
|
-
const yamlLine = lines[i];
|
|
113
|
-
// Extract location from "at:" field
|
|
114
|
-
// Format: "at: Test.<anonymous> (file:///path/to/file.js:line:col)"
|
|
115
|
-
// or: "at: file.js:line:col"
|
|
116
|
-
// eslint-disable-next-line sonarjs/slow-regex -- Safe: only parses TAP test framework YAML diagnostics (controlled output), not user input
|
|
117
|
-
const atMatch = /^\s+at:\s+(.+)$/.exec(yamlLine);
|
|
118
|
-
if (atMatch) {
|
|
119
|
-
const location = atMatch[1];
|
|
120
|
-
const { file, line } = parseLocation(location);
|
|
121
|
-
if (file)
|
|
122
|
-
failure.file = file;
|
|
123
|
-
if (line)
|
|
124
|
-
failure.line = line;
|
|
125
|
-
}
|
|
126
|
-
i++;
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
// Detect error type and add guidance
|
|
130
|
-
const errorType = detectErrorType(message);
|
|
131
|
-
failure.errorType = errorType;
|
|
132
|
-
failure.guidance = getErrorGuidance(errorType);
|
|
133
|
-
failures.push(failure);
|
|
134
|
-
}
|
|
135
|
-
i++;
|
|
136
|
-
}
|
|
137
|
-
return failures;
|
|
138
|
-
}
|
|
139
|
-
/**
|
|
140
|
-
* Parse location string to extract file and line number
|
|
141
|
-
*
|
|
142
|
-
* Handles formats:
|
|
143
|
-
* - Test.<anonymous> (file:///path/to/file.js:28:5)
|
|
144
|
-
* - Test.<anonymous> (./path/to/file.js:28:5)
|
|
145
|
-
* - file.js:28:5
|
|
146
|
-
*/
|
|
147
|
-
function parseLocation(location) {
|
|
148
|
-
// Try to extract from parentheses first: (file:///path:line:col) or (path:line:col)
|
|
149
|
-
// eslint-disable-next-line sonarjs/slow-regex -- Safe: only parses TAP test framework location strings (controlled output), not user input
|
|
150
|
-
const parenMatch = /\(([^)]+)\)/.exec(location);
|
|
151
|
-
const pathString = parenMatch ? parenMatch[1] : location;
|
|
152
|
-
// Remove file:// protocol if present
|
|
153
|
-
const cleanPath = pathString.replace(/^file:\/\//, '');
|
|
154
|
-
// Extract file path and line number
|
|
155
|
-
// Format: /path/to/file.js:line:col or path/to/file.js:line:col
|
|
156
|
-
const match = /^(.+):(\d+):\d+$/.exec(cleanPath);
|
|
157
|
-
if (match) {
|
|
158
|
-
return {
|
|
159
|
-
file: match[1],
|
|
160
|
-
line: Number.parseInt(match[2], 10)
|
|
161
|
-
};
|
|
162
|
-
}
|
|
163
|
-
return {};
|
|
164
|
-
}
|
|
165
|
-
/**
|
|
166
|
-
* Detect error type from message
|
|
167
|
-
*/
|
|
168
|
-
function detectErrorType(message) {
|
|
169
|
-
const lowerMessage = message.toLowerCase();
|
|
170
|
-
if (lowerMessage.includes('timeout') || lowerMessage.includes('timed out')) {
|
|
171
|
-
return 'timeout';
|
|
172
|
-
}
|
|
173
|
-
if (lowerMessage.includes('enoent') || lowerMessage.includes('no such file')) {
|
|
174
|
-
return 'file-not-found';
|
|
175
|
-
}
|
|
176
|
-
if (lowerMessage.includes('cannot read properties') || lowerMessage.includes('typeerror')) {
|
|
177
|
-
return 'type-error';
|
|
178
|
-
}
|
|
179
|
-
if (lowerMessage.includes('expected') || lowerMessage.includes('should')) {
|
|
180
|
-
return 'assertion';
|
|
181
|
-
}
|
|
182
|
-
return 'unknown';
|
|
183
|
-
}
|
|
184
|
-
/**
|
|
185
|
-
* TAP-specific guidance patterns
|
|
186
|
-
* TAP uses detectErrorType() which returns specific keys, so we map those to guidance
|
|
187
|
-
*/
|
|
188
|
-
const TAP_GUIDANCE_PATTERNS = [
|
|
189
|
-
{
|
|
190
|
-
key: 'assertion',
|
|
191
|
-
messageMatchers: ['expected', 'should'],
|
|
192
|
-
guidance: 'Review the assertion logic and expected vs actual values'
|
|
193
|
-
},
|
|
194
|
-
{
|
|
195
|
-
key: 'timeout',
|
|
196
|
-
messageMatchers: ['timeout', 'timed out'],
|
|
197
|
-
guidance: 'Increase timeout limit or optimize async operations'
|
|
198
|
-
},
|
|
199
|
-
{
|
|
200
|
-
key: 'file-not-found',
|
|
201
|
-
messageMatchers: ['enoent', 'no such file'],
|
|
202
|
-
guidance: 'Verify file path exists and permissions are correct'
|
|
203
|
-
},
|
|
204
|
-
{
|
|
205
|
-
key: 'type-error',
|
|
206
|
-
messageMatchers: ['cannot read properties', 'typeerror'],
|
|
207
|
-
guidance: 'Check for null/undefined values before accessing properties'
|
|
208
|
-
}
|
|
209
|
-
];
|
|
210
|
-
/**
|
|
211
|
-
* Get guidance for a specific error type
|
|
212
|
-
*/
|
|
213
|
-
function getErrorGuidance(errorType) {
|
|
214
|
-
const pattern = TAP_GUIDANCE_PATTERNS.find(p => p.key === errorType);
|
|
215
|
-
return pattern?.guidance;
|
|
216
|
-
}
|
|
217
|
-
//# sourceMappingURL=tap-extractor.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tap-extractor.js","sourceRoot":"","sources":["../src/tap-extractor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* TypeScript Error Extractor
|
|
3
|
-
*
|
|
4
|
-
* Parses and formats TypeScript compiler (tsc) error output for LLM consumption.
|
|
5
|
-
*
|
|
6
|
-
* @package @vibe-validate/extractors
|
|
7
|
-
*/
|
|
8
|
-
import type { ErrorExtractorResult } from './types.js';
|
|
9
|
-
/**
|
|
10
|
-
* Format TypeScript compiler errors
|
|
11
|
-
*
|
|
12
|
-
* Parses tsc output format: `file(line,col): error TSxxxx: message`
|
|
13
|
-
*
|
|
14
|
-
* @param output - Raw tsc command output
|
|
15
|
-
* @returns Structured error information with TypeScript-specific guidance
|
|
16
|
-
*
|
|
17
|
-
* @example
|
|
18
|
-
* ```typescript
|
|
19
|
-
* const result = extractTypeScriptErrors(tscOutput);
|
|
20
|
-
* console.log(result.summary); // "3 type error(s), 0 warning(s)"
|
|
21
|
-
* console.log(result.guidance); // "Type mismatch - check variable/parameter types"
|
|
22
|
-
* ```
|
|
23
|
-
*/
|
|
24
|
-
export declare function extractTypeScriptErrors(output: string): ErrorExtractorResult;
|
|
25
|
-
//# sourceMappingURL=typescript-extractor.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"typescript-extractor.d.ts","sourceRoot":"","sources":["../src/typescript-extractor.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAkB,MAAM,YAAY,CAAC;AAGvE;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,oBAAoB,CAsD5E"}
|