@vibe-validate/core 0.14.3 → 0.15.0-rc.2

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 (39) hide show
  1. package/README.md +24 -0
  2. package/dist/index.d.ts +9 -3
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +7 -2
  5. package/dist/index.js.map +1 -1
  6. package/dist/output-capture-schema.d.ts +144 -0
  7. package/dist/output-capture-schema.d.ts.map +1 -0
  8. package/dist/output-capture-schema.js +52 -0
  9. package/dist/output-capture-schema.js.map +1 -0
  10. package/dist/process-utils.d.ts +84 -0
  11. package/dist/process-utils.d.ts.map +1 -1
  12. package/dist/process-utils.js +176 -1
  13. package/dist/process-utils.js.map +1 -1
  14. package/dist/result-schema.d.ts +1352 -88
  15. package/dist/result-schema.d.ts.map +1 -1
  16. package/dist/result-schema.js +114 -57
  17. package/dist/result-schema.js.map +1 -1
  18. package/dist/run-output-parser.d.ts +47 -0
  19. package/dist/run-output-parser.d.ts.map +1 -0
  20. package/dist/run-output-parser.js +109 -0
  21. package/dist/run-output-parser.js.map +1 -0
  22. package/dist/runner.d.ts +35 -2
  23. package/dist/runner.d.ts.map +1 -1
  24. package/dist/runner.js +105 -167
  25. package/dist/runner.js.map +1 -1
  26. package/dist/schema-utils.d.ts +57 -0
  27. package/dist/schema-utils.d.ts.map +1 -0
  28. package/dist/schema-utils.js +67 -0
  29. package/dist/schema-utils.js.map +1 -0
  30. package/dist/scripts/generate-result-schema.d.ts +1 -1
  31. package/dist/scripts/generate-result-schema.js +3 -3
  32. package/dist/scripts/generate-result-schema.js.map +1 -1
  33. package/dist/types.js +5 -1
  34. package/dist/types.js.map +1 -1
  35. package/package.json +6 -5
  36. package/validate-result.schema.json +245 -0
  37. package/dist/types.d.ts +0 -138
  38. package/dist/types.d.ts.map +0 -1
  39. package/validation-result.schema.json +0 -100
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vibe-validate/core",
3
- "version": "0.14.3",
3
+ "version": "0.15.0-rc.2",
4
4
  "description": "Core validation orchestration engine for vibe-validate",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -13,7 +13,7 @@
13
13
  },
14
14
  "files": [
15
15
  "dist",
16
- "validation-result.schema.json"
16
+ "validate-result.schema.json"
17
17
  ],
18
18
  "keywords": [
19
19
  "validation",
@@ -40,8 +40,9 @@
40
40
  "yaml": "^2.6.1",
41
41
  "zod": "^3.24.1",
42
42
  "zod-to-json-schema": "^3.24.6",
43
- "@vibe-validate/extractors": "0.14.3",
44
- "@vibe-validate/git": "0.14.3"
43
+ "@vibe-validate/extractors": "0.15.0-rc.2",
44
+ "@vibe-validate/git": "0.15.0-rc.2",
45
+ "@vibe-validate/config": "0.15.0-rc.2"
45
46
  },
46
47
  "devDependencies": {
47
48
  "@types/node": "^20.17.6",
@@ -53,6 +54,6 @@
53
54
  "dev": "tsc --watch",
54
55
  "test": "vitest run",
55
56
  "test:watch": "vitest",
56
- "clean": "rm -rf dist *.tsbuildinfo validation-result.schema.json"
57
+ "clean": "rm -rf dist *.tsbuildinfo validate-result.schema.json"
57
58
  }
58
59
  }
@@ -0,0 +1,245 @@
1
+ {
2
+ "$ref": "#/definitions/ValidationResult",
3
+ "definitions": {
4
+ "ValidationResult": {
5
+ "type": "object",
6
+ "properties": {
7
+ "timestamp": {
8
+ "type": "string",
9
+ "format": "date-time"
10
+ },
11
+ "treeHash": {
12
+ "type": "string",
13
+ "minLength": 1
14
+ },
15
+ "passed": {
16
+ "type": "boolean"
17
+ },
18
+ "summary": {
19
+ "type": "string"
20
+ },
21
+ "isCachedResult": {
22
+ "type": "boolean"
23
+ },
24
+ "failedStep": {
25
+ "type": "string"
26
+ },
27
+ "phases": {
28
+ "type": "array",
29
+ "items": {
30
+ "type": "object",
31
+ "properties": {
32
+ "name": {
33
+ "type": "string"
34
+ },
35
+ "passed": {
36
+ "type": "boolean"
37
+ },
38
+ "durationSecs": {
39
+ "type": "number"
40
+ },
41
+ "steps": {
42
+ "type": "array",
43
+ "items": {
44
+ "type": "object",
45
+ "properties": {
46
+ "command": {
47
+ "type": "string",
48
+ "minLength": 1
49
+ },
50
+ "exitCode": {
51
+ "type": "integer"
52
+ },
53
+ "durationSecs": {
54
+ "type": "number"
55
+ },
56
+ "extraction": {
57
+ "type": "object",
58
+ "properties": {
59
+ "summary": {
60
+ "type": "string"
61
+ },
62
+ "totalErrors": {
63
+ "type": "integer",
64
+ "minimum": 0
65
+ },
66
+ "errors": {
67
+ "type": "array",
68
+ "items": {
69
+ "type": "object",
70
+ "properties": {
71
+ "file": {
72
+ "type": "string"
73
+ },
74
+ "line": {
75
+ "type": "integer",
76
+ "exclusiveMinimum": 0
77
+ },
78
+ "column": {
79
+ "type": "integer",
80
+ "exclusiveMinimum": 0
81
+ },
82
+ "message": {
83
+ "type": "string"
84
+ },
85
+ "code": {
86
+ "type": "string"
87
+ },
88
+ "severity": {
89
+ "type": "string",
90
+ "enum": [
91
+ "error",
92
+ "warning"
93
+ ]
94
+ },
95
+ "context": {
96
+ "type": "string"
97
+ },
98
+ "guidance": {
99
+ "type": "string"
100
+ }
101
+ },
102
+ "required": [
103
+ "message"
104
+ ],
105
+ "additionalProperties": false
106
+ }
107
+ },
108
+ "guidance": {
109
+ "type": "string"
110
+ },
111
+ "errorSummary": {
112
+ "type": "string"
113
+ },
114
+ "metadata": {
115
+ "type": "object",
116
+ "properties": {
117
+ "detection": {
118
+ "type": "object",
119
+ "properties": {
120
+ "extractor": {
121
+ "type": "string"
122
+ },
123
+ "confidence": {
124
+ "type": "number",
125
+ "minimum": 0,
126
+ "maximum": 100
127
+ },
128
+ "patterns": {
129
+ "type": "array",
130
+ "items": {
131
+ "type": "string"
132
+ }
133
+ },
134
+ "reason": {
135
+ "type": "string"
136
+ }
137
+ },
138
+ "required": [
139
+ "extractor",
140
+ "confidence",
141
+ "patterns",
142
+ "reason"
143
+ ],
144
+ "additionalProperties": false
145
+ },
146
+ "confidence": {
147
+ "type": "number",
148
+ "minimum": 0,
149
+ "maximum": 100
150
+ },
151
+ "completeness": {
152
+ "type": "number",
153
+ "minimum": 0,
154
+ "maximum": 100
155
+ },
156
+ "issues": {
157
+ "type": "array",
158
+ "items": {
159
+ "type": "string"
160
+ }
161
+ },
162
+ "suggestions": {
163
+ "type": "array",
164
+ "items": {
165
+ "type": "string"
166
+ }
167
+ }
168
+ },
169
+ "required": [
170
+ "confidence",
171
+ "completeness",
172
+ "issues"
173
+ ],
174
+ "additionalProperties": false
175
+ }
176
+ },
177
+ "required": [
178
+ "summary",
179
+ "totalErrors",
180
+ "errors"
181
+ ],
182
+ "additionalProperties": false
183
+ },
184
+ "name": {
185
+ "type": "string"
186
+ },
187
+ "passed": {
188
+ "type": "boolean"
189
+ },
190
+ "isCachedResult": {
191
+ "type": "boolean"
192
+ },
193
+ "outputFiles": {
194
+ "type": "object",
195
+ "properties": {
196
+ "stdout": {
197
+ "type": "string"
198
+ },
199
+ "stderr": {
200
+ "type": "string"
201
+ },
202
+ "combined": {
203
+ "type": "string"
204
+ }
205
+ },
206
+ "required": [
207
+ "combined"
208
+ ],
209
+ "additionalProperties": false
210
+ }
211
+ },
212
+ "required": [
213
+ "command",
214
+ "exitCode",
215
+ "durationSecs",
216
+ "name",
217
+ "passed"
218
+ ],
219
+ "additionalProperties": false
220
+ }
221
+ }
222
+ },
223
+ "required": [
224
+ "name",
225
+ "passed",
226
+ "durationSecs",
227
+ "steps"
228
+ ],
229
+ "additionalProperties": false
230
+ }
231
+ },
232
+ "fullLogFile": {
233
+ "type": "string"
234
+ }
235
+ },
236
+ "required": [
237
+ "timestamp",
238
+ "treeHash",
239
+ "passed"
240
+ ],
241
+ "additionalProperties": false
242
+ }
243
+ },
244
+ "$schema": "http://json-schema.org/draft-07/schema#"
245
+ }
package/dist/types.d.ts DELETED
@@ -1,138 +0,0 @@
1
- /**
2
- * Core validation types for vibe-validate
3
- *
4
- * These types define the validation configuration structure and result types.
5
- */
6
- /**
7
- * A single validation step (language-agnostic)
8
- */
9
- export interface ValidationStep {
10
- /** Human-readable step name */
11
- name: string;
12
- /** Command to execute (can be any shell command, not just npm scripts) */
13
- command: string;
14
- /** Optional timeout in milliseconds */
15
- timeout?: number;
16
- /** Optional environment variables for this step */
17
- env?: Record<string, string>;
18
- }
19
- /**
20
- * A validation phase containing multiple steps
21
- */
22
- export interface ValidationPhase {
23
- /** Human-readable phase name */
24
- name: string;
25
- /** Run steps in parallel? */
26
- parallel: boolean;
27
- /** Steps to execute in this phase */
28
- steps: ValidationStep[];
29
- }
30
- /**
31
- * Extraction quality metrics for a validation step
32
- */
33
- export interface ExtractionQuality {
34
- /** Tool detected from output (vitest, tsc, eslint, etc.) */
35
- detectedTool: string;
36
- /** Confidence level of tool detection */
37
- confidence: 'high' | 'medium' | 'low';
38
- /** Quality score (0-100) based on field extraction */
39
- score: number;
40
- /** Number of warnings extracted (even from passing tests) */
41
- warnings: number;
42
- /** Number of errors/failures extracted */
43
- errorsExtracted: number;
44
- /** Is the extraction actionable? (has structured failures/warnings) */
45
- actionable: boolean;
46
- }
47
- /**
48
- * Result from executing a validation step
49
- */
50
- export interface StepResult {
51
- /** Step name */
52
- name: string;
53
- /** Did the step pass? */
54
- passed: boolean;
55
- /** Execution duration in seconds */
56
- durationSecs: number;
57
- /** Output from the step (stdout + stderr) */
58
- output?: string;
59
- /** Extracted test failures (file:line - message) */
60
- failedTests?: string[];
61
- /** Extraction quality metrics (populated for all steps with output) */
62
- extractionQuality?: ExtractionQuality;
63
- }
64
- /**
65
- * Result from executing a validation phase
66
- */
67
- export interface PhaseResult {
68
- /** Phase name */
69
- name: string;
70
- /** Phase execution duration in seconds */
71
- durationSecs: number;
72
- /** Did the phase pass? */
73
- passed: boolean;
74
- /** Results from individual steps */
75
- steps: StepResult[];
76
- /** Output from failed step (if any) */
77
- output?: string;
78
- }
79
- /**
80
- * Overall validation result
81
- *
82
- * IMPORTANT: Field order matters for YAML truncation safety!
83
- * Verbose fields (failedStepOutput, phases with output) are at the END
84
- * so that truncation doesn't break critical metadata (passed, timestamp, rerunCommand).
85
- */
86
- export interface ValidationResult {
87
- /** Did validation pass? */
88
- passed: boolean;
89
- /** ISO 8601 timestamp */
90
- timestamp: string;
91
- /** Git tree hash (if in git repo) */
92
- treeHash: string;
93
- /** Name of failed step (if any) */
94
- failedStep?: string;
95
- /** Command to re-run failed step */
96
- rerunCommand?: string;
97
- /** Failed test names (if applicable) */
98
- failedTests?: string[];
99
- /** Path to full log file */
100
- fullLogFile?: string;
101
- /** Summary message */
102
- summary?: string;
103
- /** Results from each phase (may contain verbose output field) */
104
- phases?: PhaseResult[];
105
- /** Output from the failed step (verbose - placed last for truncation safety) */
106
- failedStepOutput?: string;
107
- }
108
- /**
109
- * Validation configuration
110
- *
111
- * Note: State management (caching, forceRun) is now handled at the CLI layer
112
- * via git notes. See packages/cli/src/commands/validate.ts and @vibe-validate/history.
113
- */
114
- export interface ValidationConfig {
115
- /** Validation phases to execute */
116
- phases: ValidationPhase[];
117
- /** Path to log file (default: os.tmpdir()/validation-{timestamp}.log) */
118
- logPath?: string;
119
- /** Enable fail-fast (stop on first failure) */
120
- enableFailFast?: boolean;
121
- /** Show verbose output (stream command stdout/stderr in real-time) */
122
- verbose?: boolean;
123
- /** Output YAML result to stdout (redirects subprocess output to stderr when true) */
124
- yaml?: boolean;
125
- /** Developer feedback for continuous quality improvement (default: false) */
126
- developerFeedback?: boolean;
127
- /** Environment variables to pass to all child processes */
128
- env?: Record<string, string>;
129
- /** Callback when phase starts */
130
- onPhaseStart?: (_phase: ValidationPhase) => void;
131
- /** Callback when phase completes */
132
- onPhaseComplete?: (_phase: ValidationPhase, _result: PhaseResult) => void;
133
- /** Callback when step starts */
134
- onStepStart?: (_step: ValidationStep) => void;
135
- /** Callback when step completes */
136
- onStepComplete?: (_step: ValidationStep, _result: StepResult) => void;
137
- }
138
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
@@ -1,100 +0,0 @@
1
- {
2
- "$ref": "#/definitions/ValidationResult",
3
- "definitions": {
4
- "ValidationResult": {
5
- "type": "object",
6
- "properties": {
7
- "passed": {
8
- "type": "boolean"
9
- },
10
- "timestamp": {
11
- "type": "string"
12
- },
13
- "treeHash": {
14
- "type": "string"
15
- },
16
- "phases": {
17
- "type": "array",
18
- "items": {
19
- "type": "object",
20
- "properties": {
21
- "name": {
22
- "type": "string"
23
- },
24
- "durationSecs": {
25
- "type": "number"
26
- },
27
- "passed": {
28
- "type": "boolean"
29
- },
30
- "steps": {
31
- "type": "array",
32
- "items": {
33
- "type": "object",
34
- "properties": {
35
- "name": {
36
- "type": "string"
37
- },
38
- "passed": {
39
- "type": "boolean"
40
- },
41
- "durationSecs": {
42
- "type": "number"
43
- },
44
- "output": {
45
- "type": "string"
46
- }
47
- },
48
- "required": [
49
- "name",
50
- "passed",
51
- "durationSecs"
52
- ],
53
- "additionalProperties": false
54
- }
55
- },
56
- "output": {
57
- "type": "string"
58
- }
59
- },
60
- "required": [
61
- "name",
62
- "durationSecs",
63
- "passed",
64
- "steps"
65
- ],
66
- "additionalProperties": false
67
- }
68
- },
69
- "failedStep": {
70
- "type": "string"
71
- },
72
- "rerunCommand": {
73
- "type": "string"
74
- },
75
- "failedStepOutput": {
76
- "type": "string"
77
- },
78
- "failedTests": {
79
- "type": "array",
80
- "items": {
81
- "type": "string"
82
- }
83
- },
84
- "fullLogFile": {
85
- "type": "string"
86
- },
87
- "summary": {
88
- "type": "string"
89
- }
90
- },
91
- "required": [
92
- "passed",
93
- "timestamp",
94
- "treeHash"
95
- ],
96
- "additionalProperties": false
97
- }
98
- },
99
- "$schema": "http://json-schema.org/draft-07/schema#"
100
- }