@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.
- package/dist/extractor-registry.d.ts +104 -0
- package/dist/extractor-registry.d.ts.map +1 -0
- package/dist/extractor-registry.js +278 -0
- package/dist/extractor-registry.js.map +1 -0
- package/dist/extractors/ava/index.d.ts +23 -0
- package/dist/extractors/ava/index.d.ts.map +1 -0
- package/dist/extractors/ava/index.js +507 -0
- package/dist/extractors/ava/index.js.map +1 -0
- package/dist/extractors/ava/index.test.d.ts +7 -0
- package/dist/extractors/ava/index.test.d.ts.map +1 -0
- package/dist/extractors/ava/index.test.js +408 -0
- package/dist/extractors/ava/index.test.js.map +1 -0
- package/dist/extractors/eslint/index.d.ts +18 -0
- package/dist/extractors/eslint/index.d.ts.map +1 -0
- package/dist/extractors/eslint/index.js +206 -0
- package/dist/extractors/eslint/index.js.map +1 -0
- package/dist/extractors/eslint/index.test.d.ts +9 -0
- package/dist/extractors/eslint/index.test.d.ts.map +1 -0
- package/dist/extractors/eslint/index.test.js +191 -0
- package/dist/extractors/eslint/index.test.js.map +1 -0
- package/dist/extractors/generic/index.d.ts +30 -0
- package/dist/extractors/generic/index.d.ts.map +1 -0
- package/dist/extractors/generic/index.js +140 -0
- package/dist/extractors/generic/index.js.map +1 -0
- package/dist/extractors/generic/index.test.d.ts +7 -0
- package/dist/extractors/generic/index.test.d.ts.map +1 -0
- package/dist/extractors/generic/index.test.js +61 -0
- package/dist/extractors/generic/index.test.js.map +1 -0
- package/dist/extractors/jasmine/index.d.ts +17 -0
- package/dist/extractors/jasmine/index.d.ts.map +1 -0
- package/dist/extractors/jasmine/index.js +242 -0
- package/dist/extractors/jasmine/index.js.map +1 -0
- package/dist/extractors/jasmine/index.test.d.ts +7 -0
- package/dist/extractors/jasmine/index.test.d.ts.map +1 -0
- package/dist/extractors/jasmine/index.test.js +318 -0
- package/dist/extractors/jasmine/index.test.js.map +1 -0
- package/dist/extractors/jest/index.d.ts +17 -0
- package/dist/extractors/jest/index.d.ts.map +1 -0
- package/dist/extractors/jest/index.js +273 -0
- package/dist/extractors/jest/index.js.map +1 -0
- package/dist/extractors/jest/index.test.d.ts +9 -0
- package/dist/extractors/jest/index.test.d.ts.map +1 -0
- package/dist/extractors/jest/index.test.js +338 -0
- package/dist/extractors/jest/index.test.js.map +1 -0
- package/dist/extractors/junit/index.d.ts +18 -0
- package/dist/extractors/junit/index.d.ts.map +1 -0
- package/dist/extractors/junit/index.js +259 -0
- package/dist/extractors/junit/index.js.map +1 -0
- package/dist/extractors/junit/index.test.d.ts +7 -0
- package/dist/extractors/junit/index.test.d.ts.map +1 -0
- package/dist/extractors/junit/index.test.js +341 -0
- package/dist/extractors/junit/index.test.js.map +1 -0
- package/dist/extractors/maven-checkstyle/index.d.ts +23 -0
- package/dist/extractors/maven-checkstyle/index.d.ts.map +1 -0
- package/dist/extractors/maven-checkstyle/index.js +263 -0
- package/dist/extractors/maven-checkstyle/index.js.map +1 -0
- package/dist/extractors/maven-checkstyle/index.test.d.ts +2 -0
- package/dist/extractors/maven-checkstyle/index.test.d.ts.map +1 -0
- package/dist/extractors/maven-checkstyle/index.test.js +197 -0
- package/dist/extractors/maven-checkstyle/index.test.js.map +1 -0
- package/dist/extractors/maven-compiler/index.d.ts +23 -0
- package/dist/extractors/maven-compiler/index.d.ts.map +1 -0
- package/dist/extractors/maven-compiler/index.js +271 -0
- package/dist/extractors/maven-compiler/index.js.map +1 -0
- package/dist/extractors/maven-compiler/index.test.d.ts +2 -0
- package/dist/extractors/maven-compiler/index.test.d.ts.map +1 -0
- package/dist/extractors/maven-compiler/index.test.js +189 -0
- package/dist/extractors/maven-compiler/index.test.js.map +1 -0
- package/dist/extractors/maven-surefire/index.d.ts +23 -0
- package/dist/extractors/maven-surefire/index.d.ts.map +1 -0
- package/dist/extractors/maven-surefire/index.js +292 -0
- package/dist/extractors/maven-surefire/index.js.map +1 -0
- package/dist/extractors/maven-surefire/index.test.d.ts +2 -0
- package/dist/extractors/maven-surefire/index.test.d.ts.map +1 -0
- package/dist/extractors/maven-surefire/index.test.js +163 -0
- package/dist/extractors/maven-surefire/index.test.js.map +1 -0
- package/dist/extractors/mocha/index.d.ts +17 -0
- package/dist/extractors/mocha/index.d.ts.map +1 -0
- package/dist/extractors/mocha/index.js +241 -0
- package/dist/extractors/mocha/index.js.map +1 -0
- package/dist/extractors/mocha/index.test.d.ts +7 -0
- package/dist/extractors/mocha/index.test.d.ts.map +1 -0
- package/dist/extractors/mocha/index.test.js +300 -0
- package/dist/extractors/mocha/index.test.js.map +1 -0
- package/dist/extractors/playwright/index.d.ts +17 -0
- package/dist/extractors/playwright/index.d.ts.map +1 -0
- package/dist/extractors/playwright/index.js +320 -0
- package/dist/extractors/playwright/index.js.map +1 -0
- package/dist/extractors/playwright/index.test.d.ts +7 -0
- package/dist/extractors/playwright/index.test.d.ts.map +1 -0
- package/dist/extractors/playwright/index.test.js +274 -0
- package/dist/extractors/playwright/index.test.js.map +1 -0
- package/dist/extractors/tap/index.d.ts +23 -0
- package/dist/extractors/tap/index.d.ts.map +1 -0
- package/dist/extractors/tap/index.js +352 -0
- package/dist/extractors/tap/index.js.map +1 -0
- package/dist/extractors/tap/index.test.d.ts +7 -0
- package/dist/extractors/tap/index.test.d.ts.map +1 -0
- package/dist/extractors/tap/index.test.js +100 -0
- package/dist/extractors/tap/index.test.js.map +1 -0
- package/dist/extractors/typescript/index.d.ts +17 -0
- package/dist/extractors/typescript/index.d.ts.map +1 -0
- package/dist/extractors/typescript/index.js +150 -0
- package/dist/extractors/typescript/index.js.map +1 -0
- package/dist/extractors/typescript/index.test.d.ts +9 -0
- package/dist/extractors/typescript/index.test.d.ts.map +1 -0
- package/dist/extractors/typescript/index.test.js +177 -0
- package/dist/extractors/typescript/index.test.js.map +1 -0
- package/dist/extractors/vitest/index.d.ts +17 -0
- package/dist/extractors/vitest/index.d.ts.map +1 -0
- package/dist/extractors/vitest/index.js +564 -0
- package/dist/extractors/vitest/index.js.map +1 -0
- package/dist/extractors/vitest/index.test.d.ts +9 -0
- package/dist/extractors/vitest/index.test.d.ts.map +1 -0
- package/dist/extractors/vitest/index.test.js +373 -0
- package/dist/extractors/vitest/index.test.js.map +1 -0
- package/dist/index.d.ts +27 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +27 -11
- package/dist/index.js.map +1 -1
- package/dist/maven-checkstyle-extractor.d.ts +20 -0
- package/dist/maven-checkstyle-extractor.d.ts.map +1 -0
- package/dist/maven-checkstyle-extractor.js +193 -0
- package/dist/maven-checkstyle-extractor.js.map +1 -0
- package/dist/maven-compiler-extractor.d.ts +20 -0
- package/dist/maven-compiler-extractor.d.ts.map +1 -0
- package/dist/maven-compiler-extractor.js +218 -0
- package/dist/maven-compiler-extractor.js.map +1 -0
- package/dist/maven-surefire-extractor.d.ts +20 -0
- package/dist/maven-surefire-extractor.d.ts.map +1 -0
- package/dist/maven-surefire-extractor.js +228 -0
- package/dist/maven-surefire-extractor.js.map +1 -0
- package/dist/maven-utils.d.ts +24 -0
- package/dist/maven-utils.d.ts.map +1 -0
- package/dist/maven-utils.js +36 -0
- package/dist/maven-utils.js.map +1 -0
- package/dist/plugin-loader.d.ts +82 -0
- package/dist/plugin-loader.d.ts.map +1 -0
- package/dist/plugin-loader.js +200 -0
- package/dist/plugin-loader.js.map +1 -0
- package/dist/sandbox.d.ts +161 -0
- package/dist/sandbox.d.ts.map +1 -0
- package/dist/sandbox.js +254 -0
- package/dist/sandbox.js.map +1 -0
- package/dist/sandbox.test.d.ts +8 -0
- package/dist/sandbox.test.d.ts.map +1 -0
- package/dist/sandbox.test.js +395 -0
- package/dist/sandbox.test.js.map +1 -0
- package/dist/sandboxed-extractor.d.ts +46 -0
- package/dist/sandboxed-extractor.d.ts.map +1 -0
- package/dist/sandboxed-extractor.js +172 -0
- package/dist/sandboxed-extractor.js.map +1 -0
- package/dist/sandboxed-extractor.test.d.ts +5 -0
- package/dist/sandboxed-extractor.test.d.ts.map +1 -0
- package/dist/sandboxed-extractor.test.js +346 -0
- package/dist/sandboxed-extractor.test.js.map +1 -0
- package/dist/smart-extractor.d.ts +22 -10
- package/dist/smart-extractor.d.ts.map +1 -1
- package/dist/smart-extractor.js +116 -163
- package/dist/smart-extractor.js.map +1 -1
- package/dist/types.d.ts +94 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -1
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extractor Registry
|
|
3
|
+
*
|
|
4
|
+
* Centralized registry of all error extractors with detection logic.
|
|
5
|
+
* All extractors now use the plugin structure with co-located tests and documentation.
|
|
6
|
+
*
|
|
7
|
+
* **Trust Levels** (Phase 2B):
|
|
8
|
+
* - All built-in extractors have `trust: 'full'` (run directly, no sandbox)
|
|
9
|
+
* - External plugins will have `trust: 'sandbox'` (run in isolated-vm)
|
|
10
|
+
* - Use `getSandboxedExtractor()` to get wrapped extract function
|
|
11
|
+
*
|
|
12
|
+
* @package @vibe-validate/extractors
|
|
13
|
+
*/
|
|
14
|
+
import type { ErrorExtractorResult } from './types.js';
|
|
15
|
+
import type { DetectionResult } from './types.js';
|
|
16
|
+
/**
|
|
17
|
+
* Trust level for extractor execution
|
|
18
|
+
* - 'full': Run with full Node.js access (built-in trusted code, no sandbox)
|
|
19
|
+
* - 'sandbox': Run in isolated V8 context (external plugins, secure)
|
|
20
|
+
*/
|
|
21
|
+
export type ExtractorTrustLevel = 'full' | 'sandbox';
|
|
22
|
+
/**
|
|
23
|
+
* Extractor descriptor with detection and extraction logic
|
|
24
|
+
*/
|
|
25
|
+
export interface ExtractorDescriptor {
|
|
26
|
+
/** Unique name identifying this extractor */
|
|
27
|
+
name: string;
|
|
28
|
+
/** Detection function that analyzes output and returns confidence */
|
|
29
|
+
detect: (_output: string) => DetectionResult;
|
|
30
|
+
/** Extraction function that parses errors from output */
|
|
31
|
+
extract: (_output: string) => ErrorExtractorResult;
|
|
32
|
+
/** Priority for detection order (higher = check first) */
|
|
33
|
+
priority: number;
|
|
34
|
+
/** Trust level for execution (default: 'full' for built-ins) */
|
|
35
|
+
trust: ExtractorTrustLevel;
|
|
36
|
+
/** Optional hints for fast pre-filtering (Phase 2B) */
|
|
37
|
+
hints?: {
|
|
38
|
+
required?: string[];
|
|
39
|
+
anyOf?: string[];
|
|
40
|
+
forbidden?: string[];
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Registry of all available extractors
|
|
45
|
+
*
|
|
46
|
+
* All extractors now use the ExtractorPlugin structure with:
|
|
47
|
+
* - Co-located tests (*.test.ts)
|
|
48
|
+
* - Documentation (README.md + CLAUDE.md)
|
|
49
|
+
* - Sample test cases
|
|
50
|
+
* - Fast filtering hints
|
|
51
|
+
* - Structured metadata
|
|
52
|
+
*
|
|
53
|
+
* Extractors are sorted by priority (highest first):
|
|
54
|
+
* 1. Vitest (Priority 100) - "RUN v" header is unmistakable
|
|
55
|
+
* 2. JUnit (Priority 100) - XML format is unique
|
|
56
|
+
* 3. TypeScript (Priority 95) - Very specific error codes
|
|
57
|
+
* 4. Playwright (Priority 95) - .spec.ts files with › separator
|
|
58
|
+
* 5. Jest (Priority 90) - Must check before Mocha
|
|
59
|
+
* 6. Vitest (Priority 90) - Secondary fallback patterns
|
|
60
|
+
* 7. ESLint (Priority 85) - Distinctive format
|
|
61
|
+
* 8. Jasmine (Priority 85) - Distinctive "Failures:" header
|
|
62
|
+
* 9. Ava (Priority 82) - Ava v6+ format with ✘ markers
|
|
63
|
+
* 10. Mocha (Priority 80) - Generic "passing/failing" patterns
|
|
64
|
+
* 11. TAP (Priority 78) - TAP version 13 protocol
|
|
65
|
+
* 12. Maven Compiler (Priority 70) - Compilation error patterns
|
|
66
|
+
* 13. Maven Checkstyle (Priority 60) - Checkstyle-specific patterns
|
|
67
|
+
* 14. Maven Surefire (Priority 65) - Test plugin patterns
|
|
68
|
+
* 15. Generic (Priority 10) - Fallback for unknown formats
|
|
69
|
+
*/
|
|
70
|
+
export declare const EXTRACTOR_REGISTRY: ExtractorDescriptor[];
|
|
71
|
+
/**
|
|
72
|
+
* Get an extractor descriptor by name
|
|
73
|
+
*
|
|
74
|
+
* @param name - The extractor name to find
|
|
75
|
+
* @returns The extractor descriptor, or undefined if not found
|
|
76
|
+
*/
|
|
77
|
+
export declare function getExtractorByName(name: string): ExtractorDescriptor | undefined;
|
|
78
|
+
/**
|
|
79
|
+
* Register external plugins to the extractor registry
|
|
80
|
+
*
|
|
81
|
+
* This function is called at runtime to add dynamically loaded plugins from:
|
|
82
|
+
* - Local plugin directories (vibe-validate-local-plugins/)
|
|
83
|
+
* - npm packages
|
|
84
|
+
* - Explicit config paths
|
|
85
|
+
*
|
|
86
|
+
* Plugins are inserted in priority order to maintain registry sorting.
|
|
87
|
+
*
|
|
88
|
+
* @param plugins - Array of ExtractorPlugins to register
|
|
89
|
+
* @param trustLevel - Trust level for execution ('sandbox' for external plugins)
|
|
90
|
+
*/
|
|
91
|
+
export declare function registerPlugins(plugins: Array<{
|
|
92
|
+
metadata: {
|
|
93
|
+
name: string;
|
|
94
|
+
};
|
|
95
|
+
priority: number;
|
|
96
|
+
hints?: {
|
|
97
|
+
required?: string[];
|
|
98
|
+
anyOf?: string[];
|
|
99
|
+
forbidden?: string[];
|
|
100
|
+
};
|
|
101
|
+
detect: (_output: string) => DetectionResult;
|
|
102
|
+
extract: (_output: string) => ErrorExtractorResult;
|
|
103
|
+
}>, trustLevel?: ExtractorTrustLevel): void;
|
|
104
|
+
//# sourceMappingURL=extractor-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extractor-registry.d.ts","sourceRoot":"","sources":["../src/extractor-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAkBlD;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,SAAS,CAAC;AAErD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,6CAA6C;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,qEAAqE;IACrE,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,eAAe,CAAC;IAC7C,yDAAyD;IACzD,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,oBAAoB,CAAC;IACnD,0DAA0D;IAC1D,QAAQ,EAAE,MAAM,CAAC;IACjB,gEAAgE;IAChE,KAAK,EAAE,mBAAmB,CAAC;IAC3B,uDAAuD;IACvD,KAAK,CAAC,EAAE;QACN,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;KACtB,CAAC;CACH;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,kBAAkB,EAAE,mBAAmB,EAqLnD,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS,CAEhF;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,KAAK,CAAC;IAAE,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAAC,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,eAAe,CAAC;IAAC,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,oBAAoB,CAAA;CAAE,CAAC,EAC3O,UAAU,GAAE,mBAA+B,GAC1C,IAAI,CAsBN"}
|
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extractor Registry
|
|
3
|
+
*
|
|
4
|
+
* Centralized registry of all error extractors with detection logic.
|
|
5
|
+
* All extractors now use the plugin structure with co-located tests and documentation.
|
|
6
|
+
*
|
|
7
|
+
* **Trust Levels** (Phase 2B):
|
|
8
|
+
* - All built-in extractors have `trust: 'full'` (run directly, no sandbox)
|
|
9
|
+
* - External plugins will have `trust: 'sandbox'` (run in isolated-vm)
|
|
10
|
+
* - Use `getSandboxedExtractor()` to get wrapped extract function
|
|
11
|
+
*
|
|
12
|
+
* @package @vibe-validate/extractors
|
|
13
|
+
*/
|
|
14
|
+
// Import all extractor plugins
|
|
15
|
+
import typescriptPlugin from './extractors/typescript/index.js';
|
|
16
|
+
import eslintPlugin from './extractors/eslint/index.js';
|
|
17
|
+
import vitestPlugin from './extractors/vitest/index.js';
|
|
18
|
+
import jestPlugin from './extractors/jest/index.js';
|
|
19
|
+
import mochaPlugin from './extractors/mocha/index.js';
|
|
20
|
+
import jasminePlugin from './extractors/jasmine/index.js';
|
|
21
|
+
import playwrightPlugin from './extractors/playwright/index.js';
|
|
22
|
+
import junitPlugin from './extractors/junit/index.js';
|
|
23
|
+
import mavenCheckstylePlugin from './extractors/maven-checkstyle/index.js';
|
|
24
|
+
import mavenSurefirePlugin from './extractors/maven-surefire/index.js';
|
|
25
|
+
import mavenCompilerPlugin from './extractors/maven-compiler/index.js';
|
|
26
|
+
import avaPlugin from './extractors/ava/index.js';
|
|
27
|
+
import tapPlugin from './extractors/tap/index.js';
|
|
28
|
+
import genericPlugin from './extractors/generic/index.js';
|
|
29
|
+
/**
|
|
30
|
+
* Registry of all available extractors
|
|
31
|
+
*
|
|
32
|
+
* All extractors now use the ExtractorPlugin structure with:
|
|
33
|
+
* - Co-located tests (*.test.ts)
|
|
34
|
+
* - Documentation (README.md + CLAUDE.md)
|
|
35
|
+
* - Sample test cases
|
|
36
|
+
* - Fast filtering hints
|
|
37
|
+
* - Structured metadata
|
|
38
|
+
*
|
|
39
|
+
* Extractors are sorted by priority (highest first):
|
|
40
|
+
* 1. Vitest (Priority 100) - "RUN v" header is unmistakable
|
|
41
|
+
* 2. JUnit (Priority 100) - XML format is unique
|
|
42
|
+
* 3. TypeScript (Priority 95) - Very specific error codes
|
|
43
|
+
* 4. Playwright (Priority 95) - .spec.ts files with › separator
|
|
44
|
+
* 5. Jest (Priority 90) - Must check before Mocha
|
|
45
|
+
* 6. Vitest (Priority 90) - Secondary fallback patterns
|
|
46
|
+
* 7. ESLint (Priority 85) - Distinctive format
|
|
47
|
+
* 8. Jasmine (Priority 85) - Distinctive "Failures:" header
|
|
48
|
+
* 9. Ava (Priority 82) - Ava v6+ format with ✘ markers
|
|
49
|
+
* 10. Mocha (Priority 80) - Generic "passing/failing" patterns
|
|
50
|
+
* 11. TAP (Priority 78) - TAP version 13 protocol
|
|
51
|
+
* 12. Maven Compiler (Priority 70) - Compilation error patterns
|
|
52
|
+
* 13. Maven Checkstyle (Priority 60) - Checkstyle-specific patterns
|
|
53
|
+
* 14. Maven Surefire (Priority 65) - Test plugin patterns
|
|
54
|
+
* 15. Generic (Priority 10) - Fallback for unknown formats
|
|
55
|
+
*/
|
|
56
|
+
export const EXTRACTOR_REGISTRY = [
|
|
57
|
+
// Vitest (Priority Check) - "RUN v" header is 100% unique to Vitest
|
|
58
|
+
// Must check BEFORE other test frameworks to prevent false positives
|
|
59
|
+
{
|
|
60
|
+
name: vitestPlugin.metadata.name,
|
|
61
|
+
priority: 100, // Explicit priority for RUN v header check
|
|
62
|
+
trust: 'full', // Built-in trusted code
|
|
63
|
+
detect: (output) => {
|
|
64
|
+
// eslint-disable-next-line sonarjs/slow-regex -- False positive: regex is anchored and has limited repetition
|
|
65
|
+
if (/^\s*RUN\s+v\d+\.\d+\.\d+/m.test(output)) {
|
|
66
|
+
const patterns = ['RUN v#### version header'];
|
|
67
|
+
if (output.includes('×'))
|
|
68
|
+
patterns.push('× symbol (U+00D7)');
|
|
69
|
+
if (output.includes('❌'))
|
|
70
|
+
patterns.push('❌ cross mark');
|
|
71
|
+
if (output.includes(' ❯ '))
|
|
72
|
+
patterns.push('❯ arrow marker');
|
|
73
|
+
if (output.includes('Test Files'))
|
|
74
|
+
patterns.push('Test Files summary');
|
|
75
|
+
if (output.includes('.test.ts'))
|
|
76
|
+
patterns.push('.test.ts files');
|
|
77
|
+
if (/FAIL\s+\d+\s+test\s+(file|case)/i.exec(output))
|
|
78
|
+
patterns.push('FAIL N test files/cases pattern');
|
|
79
|
+
return {
|
|
80
|
+
confidence: 100,
|
|
81
|
+
patterns,
|
|
82
|
+
reason: 'Vitest test output format detected (RUN v#### header)',
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
return { confidence: 0, patterns: [], reason: '' };
|
|
86
|
+
},
|
|
87
|
+
extract: vitestPlugin.extract,
|
|
88
|
+
},
|
|
89
|
+
// JUnit XML - Unique XML format
|
|
90
|
+
{
|
|
91
|
+
name: junitPlugin.metadata.name,
|
|
92
|
+
priority: junitPlugin.priority,
|
|
93
|
+
trust: 'full', // Built-in trusted code
|
|
94
|
+
detect: junitPlugin.detect,
|
|
95
|
+
extract: junitPlugin.extract,
|
|
96
|
+
},
|
|
97
|
+
// TypeScript - Very distinctive error codes (TS####)
|
|
98
|
+
{
|
|
99
|
+
name: typescriptPlugin.metadata.name,
|
|
100
|
+
priority: typescriptPlugin.priority,
|
|
101
|
+
trust: 'full', // Built-in trusted code
|
|
102
|
+
detect: typescriptPlugin.detect,
|
|
103
|
+
extract: typescriptPlugin.extract,
|
|
104
|
+
},
|
|
105
|
+
// Playwright - .spec.ts files with › separator
|
|
106
|
+
{
|
|
107
|
+
name: playwrightPlugin.metadata.name,
|
|
108
|
+
priority: playwrightPlugin.priority,
|
|
109
|
+
trust: 'full', // Built-in trusted code
|
|
110
|
+
detect: playwrightPlugin.detect,
|
|
111
|
+
extract: playwrightPlugin.extract,
|
|
112
|
+
},
|
|
113
|
+
// Jest - Must check BEFORE Mocha to avoid false positives
|
|
114
|
+
{
|
|
115
|
+
name: jestPlugin.metadata.name,
|
|
116
|
+
priority: jestPlugin.priority,
|
|
117
|
+
trust: 'full', // Built-in trusted code
|
|
118
|
+
detect: jestPlugin.detect,
|
|
119
|
+
extract: jestPlugin.extract,
|
|
120
|
+
},
|
|
121
|
+
// Vitest (Secondary) - Fallback patterns if "RUN v" not found
|
|
122
|
+
{
|
|
123
|
+
name: vitestPlugin.metadata.name,
|
|
124
|
+
priority: 90, // Secondary check with fallback patterns
|
|
125
|
+
trust: 'full', // Built-in trusted code
|
|
126
|
+
detect: (output) => {
|
|
127
|
+
// Require MULTIPLE patterns together to avoid false positives:
|
|
128
|
+
// - "Test Files" keyword (unique to Vitest) OR
|
|
129
|
+
// - (× OR ❯ OR ❌) AND (FAIL pattern OR .test.ts files)
|
|
130
|
+
const hasVitestErrorMarkers = output.includes('×') || output.includes(' ❯ ') || output.includes('❌');
|
|
131
|
+
const hasTestFilesKeyword = output.includes('Test Files');
|
|
132
|
+
const hasFailPattern = /FAIL\s+\d+\s+test\s+(file|case)/i.exec(output);
|
|
133
|
+
const hasTestTsFiles = output.includes('.test.ts');
|
|
134
|
+
// Option 1: "Test Files" keyword is very distinctive (Vitest-specific)
|
|
135
|
+
// Option 2: Error markers + test file patterns
|
|
136
|
+
const hasVitestMarkers = hasTestFilesKeyword || (hasVitestErrorMarkers && (hasFailPattern ?? hasTestTsFiles));
|
|
137
|
+
if (hasVitestMarkers) {
|
|
138
|
+
const patterns = [];
|
|
139
|
+
if (output.includes('×'))
|
|
140
|
+
patterns.push('× symbol (U+00D7)');
|
|
141
|
+
if (output.includes('❌'))
|
|
142
|
+
patterns.push('❌ cross mark');
|
|
143
|
+
if (output.includes(' ❯ '))
|
|
144
|
+
patterns.push('❯ arrow marker');
|
|
145
|
+
if (hasTestFilesKeyword)
|
|
146
|
+
patterns.push('Test Files summary');
|
|
147
|
+
if (hasTestTsFiles)
|
|
148
|
+
patterns.push('.test.ts files');
|
|
149
|
+
if (hasFailPattern)
|
|
150
|
+
patterns.push('FAIL N test files/cases pattern');
|
|
151
|
+
return {
|
|
152
|
+
confidence: 90,
|
|
153
|
+
patterns,
|
|
154
|
+
reason: 'Vitest test output format detected',
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
return { confidence: 0, patterns: [], reason: '' };
|
|
158
|
+
},
|
|
159
|
+
extract: vitestPlugin.extract,
|
|
160
|
+
},
|
|
161
|
+
// ESLint - Distinctive problem summary and line:col format
|
|
162
|
+
{
|
|
163
|
+
name: eslintPlugin.metadata.name,
|
|
164
|
+
priority: eslintPlugin.priority,
|
|
165
|
+
trust: 'full', // Built-in trusted code
|
|
166
|
+
detect: eslintPlugin.detect,
|
|
167
|
+
extract: eslintPlugin.extract,
|
|
168
|
+
},
|
|
169
|
+
// Jasmine - Distinctive "Failures:" header
|
|
170
|
+
{
|
|
171
|
+
name: jasminePlugin.metadata.name,
|
|
172
|
+
priority: jasminePlugin.priority,
|
|
173
|
+
trust: 'full', // Built-in trusted code
|
|
174
|
+
detect: jasminePlugin.detect,
|
|
175
|
+
extract: jasminePlugin.extract,
|
|
176
|
+
},
|
|
177
|
+
// Ava - Ava v6+ format with ✘ markers
|
|
178
|
+
{
|
|
179
|
+
name: avaPlugin.metadata.name,
|
|
180
|
+
priority: avaPlugin.priority,
|
|
181
|
+
trust: 'full', // Built-in trusted code
|
|
182
|
+
detect: avaPlugin.detect,
|
|
183
|
+
extract: avaPlugin.extract,
|
|
184
|
+
},
|
|
185
|
+
// Mocha - Generic patterns, checked AFTER Jest and Jasmine
|
|
186
|
+
{
|
|
187
|
+
name: mochaPlugin.metadata.name,
|
|
188
|
+
priority: mochaPlugin.priority,
|
|
189
|
+
trust: 'full', // Built-in trusted code
|
|
190
|
+
detect: mochaPlugin.detect,
|
|
191
|
+
extract: mochaPlugin.extract,
|
|
192
|
+
},
|
|
193
|
+
// TAP - TAP version 13 protocol
|
|
194
|
+
{
|
|
195
|
+
name: tapPlugin.metadata.name,
|
|
196
|
+
priority: tapPlugin.priority,
|
|
197
|
+
trust: 'full', // Built-in trusted code
|
|
198
|
+
detect: tapPlugin.detect,
|
|
199
|
+
extract: tapPlugin.extract,
|
|
200
|
+
},
|
|
201
|
+
// Maven Compiler - Compilation error markers
|
|
202
|
+
{
|
|
203
|
+
name: mavenCompilerPlugin.metadata.name,
|
|
204
|
+
priority: mavenCompilerPlugin.priority,
|
|
205
|
+
trust: 'full', // Built-in trusted code
|
|
206
|
+
detect: mavenCompilerPlugin.detect,
|
|
207
|
+
extract: mavenCompilerPlugin.extract,
|
|
208
|
+
},
|
|
209
|
+
// Maven Surefire - Test plugin patterns
|
|
210
|
+
{
|
|
211
|
+
name: mavenSurefirePlugin.metadata.name,
|
|
212
|
+
priority: mavenSurefirePlugin.priority,
|
|
213
|
+
trust: 'full', // Built-in trusted code
|
|
214
|
+
detect: mavenSurefirePlugin.detect,
|
|
215
|
+
extract: mavenSurefirePlugin.extract,
|
|
216
|
+
},
|
|
217
|
+
// Maven Checkstyle - Checkstyle plugin markers
|
|
218
|
+
{
|
|
219
|
+
name: mavenCheckstylePlugin.metadata.name,
|
|
220
|
+
priority: mavenCheckstylePlugin.priority,
|
|
221
|
+
trust: 'full', // Built-in trusted code
|
|
222
|
+
detect: mavenCheckstylePlugin.detect,
|
|
223
|
+
extract: mavenCheckstylePlugin.extract,
|
|
224
|
+
},
|
|
225
|
+
// Generic - Fallback extractor (lowest priority)
|
|
226
|
+
{
|
|
227
|
+
name: genericPlugin.metadata.name,
|
|
228
|
+
priority: genericPlugin.priority,
|
|
229
|
+
trust: 'full', // Built-in trusted code
|
|
230
|
+
detect: genericPlugin.detect,
|
|
231
|
+
extract: genericPlugin.extract,
|
|
232
|
+
},
|
|
233
|
+
];
|
|
234
|
+
/**
|
|
235
|
+
* Get an extractor descriptor by name
|
|
236
|
+
*
|
|
237
|
+
* @param name - The extractor name to find
|
|
238
|
+
* @returns The extractor descriptor, or undefined if not found
|
|
239
|
+
*/
|
|
240
|
+
export function getExtractorByName(name) {
|
|
241
|
+
return EXTRACTOR_REGISTRY.find(descriptor => descriptor.name === name);
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Register external plugins to the extractor registry
|
|
245
|
+
*
|
|
246
|
+
* This function is called at runtime to add dynamically loaded plugins from:
|
|
247
|
+
* - Local plugin directories (vibe-validate-local-plugins/)
|
|
248
|
+
* - npm packages
|
|
249
|
+
* - Explicit config paths
|
|
250
|
+
*
|
|
251
|
+
* Plugins are inserted in priority order to maintain registry sorting.
|
|
252
|
+
*
|
|
253
|
+
* @param plugins - Array of ExtractorPlugins to register
|
|
254
|
+
* @param trustLevel - Trust level for execution ('sandbox' for external plugins)
|
|
255
|
+
*/
|
|
256
|
+
export function registerPlugins(plugins, trustLevel = 'sandbox') {
|
|
257
|
+
for (const plugin of plugins) {
|
|
258
|
+
const descriptor = {
|
|
259
|
+
name: plugin.metadata.name,
|
|
260
|
+
priority: plugin.priority,
|
|
261
|
+
trust: trustLevel,
|
|
262
|
+
detect: plugin.detect,
|
|
263
|
+
extract: plugin.extract,
|
|
264
|
+
...(plugin.hints && { hints: plugin.hints }),
|
|
265
|
+
};
|
|
266
|
+
// Find correct insertion point to maintain priority order (highest first)
|
|
267
|
+
const insertIndex = EXTRACTOR_REGISTRY.findIndex(ext => ext.priority < plugin.priority);
|
|
268
|
+
if (insertIndex === -1) {
|
|
269
|
+
// Plugin has lowest priority, add to end
|
|
270
|
+
EXTRACTOR_REGISTRY.push(descriptor);
|
|
271
|
+
}
|
|
272
|
+
else {
|
|
273
|
+
// Insert at correct priority position
|
|
274
|
+
EXTRACTOR_REGISTRY.splice(insertIndex, 0, descriptor);
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
//# sourceMappingURL=extractor-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extractor-registry.js","sourceRoot":"","sources":["../src/extractor-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
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 type { ExtractorPlugin, DetectionResult, ErrorExtractorResult } from '../../types.js';
|
|
10
|
+
/**
|
|
11
|
+
* Detects if output is from Ava test framework
|
|
12
|
+
*/
|
|
13
|
+
export declare function detectAva(output: string): DetectionResult;
|
|
14
|
+
/**
|
|
15
|
+
* Extract errors from Ava test output
|
|
16
|
+
*/
|
|
17
|
+
export declare function extractAva(output: string, _command?: string): ErrorExtractorResult;
|
|
18
|
+
/**
|
|
19
|
+
* Ava Extractor Plugin
|
|
20
|
+
*/
|
|
21
|
+
declare const avaExtractor: ExtractorPlugin;
|
|
22
|
+
export default avaExtractor;
|
|
23
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/extractors/ava/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,eAAe,EACf,oBAAoB,EAGrB,MAAM,gBAAgB,CAAC;AAkCxB;;GAEG;AAEH,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,CAqEzD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,oBAAoB,CAqGlF;AAgTD;;GAEG;AACH,QAAA,MAAM,YAAY,EAAE,eA+DnB,CAAC;AAEF,eAAe,YAAY,CAAC"}
|