@vibe-validate/core 0.11.0 → 0.12.0

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/index.d.ts CHANGED
@@ -44,8 +44,8 @@
44
44
  *
45
45
  * @packageDocumentation
46
46
  */
47
- export type { ValidationStep, ValidationPhase, ValidationConfig, ValidationResult, StepResult, PhaseResult, } from './types.js';
48
- export { runValidation, runStepsInParallel, checkExistingValidation, parseFailures, setupSignalHandlers, } from './runner.js';
47
+ export type { ValidationStep, ValidationPhase, ValidationConfig, ValidationResult, StepResult, PhaseResult, ExtractionQuality, } from './types.js';
48
+ export { runValidation, runStepsInParallel, parseFailures, setupSignalHandlers, } from './runner.js';
49
49
  export { stopProcessGroup, } from './process-utils.js';
50
50
  export { ValidationResultSchema, StepResultSchema, PhaseResultSchema, safeValidateResult, validateResult, } from './result-schema.js';
51
51
  export { validationResultJsonSchema, generateValidationResultJsonSchema, } from './result-schema-export.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AAGH,YAAY,EACV,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,EACV,WAAW,GACZ,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,uBAAuB,EACvB,aAAa,EACb,mBAAmB,GACpB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,sBAAsB,EACtB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,GACf,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,0BAA0B,EAC1B,kCAAkC,GACnC,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AAGH,YAAY,EACV,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,EACV,WAAW,EACX,iBAAiB,GAClB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,aAAa,EACb,mBAAmB,GACpB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,sBAAsB,EACtB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,GACf,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,0BAA0B,EAC1B,kCAAkC,GACnC,MAAM,2BAA2B,CAAC"}
package/dist/index.js CHANGED
@@ -45,7 +45,7 @@
45
45
  * @packageDocumentation
46
46
  */
47
47
  // Export core runner functions
48
- export { runValidation, runStepsInParallel, checkExistingValidation, parseFailures, setupSignalHandlers, } from './runner.js';
48
+ export { runValidation, runStepsInParallel, parseFailures, setupSignalHandlers, } from './runner.js';
49
49
  // Export process utilities
50
50
  export { stopProcessGroup, } from './process-utils.js';
51
51
  // Export validation result schema and validators
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AAYH,+BAA+B;AAC/B,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,uBAAuB,EACvB,aAAa,EACb,mBAAmB,GACpB,MAAM,aAAa,CAAC;AAErB,2BAA2B;AAC3B,OAAO,EACL,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAE5B,iDAAiD;AACjD,OAAO,EACL,sBAAsB,EACtB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,GACf,MAAM,oBAAoB,CAAC;AAE5B,gCAAgC;AAChC,OAAO,EACL,0BAA0B,EAC1B,kCAAkC,GACnC,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AAaH,+BAA+B;AAC/B,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,aAAa,EACb,mBAAmB,GACpB,MAAM,aAAa,CAAC;AAErB,2BAA2B;AAC3B,OAAO,EACL,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAE5B,iDAAiD;AACjD,OAAO,EACL,sBAAsB,EACtB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,GACf,MAAM,oBAAoB,CAAC;AAE5B,gCAAgC;AAChC,OAAO,EACL,0BAA0B,EAC1B,kCAAkC,GACnC,MAAM,2BAA2B,CAAC"}
@@ -87,8 +87,8 @@ export declare const PhaseResultSchema: z.ZodObject<{
87
87
  /**
88
88
  * Validation Result Schema
89
89
  *
90
- * This is the complete schema for the validation state file
91
- * (.vibe-validate-state.yaml)
90
+ * This schema defines the validation result structure returned by the validation
91
+ * runner and stored in git notes (v0.12.0+) for history tracking.
92
92
  */
93
93
  export declare const ValidationResultSchema: z.ZodObject<{
94
94
  /** Did validation pass? */
@@ -164,8 +164,8 @@ export declare const ValidationResultSchema: z.ZodObject<{
164
164
  /** Summary message */
165
165
  summary: z.ZodOptional<z.ZodString>;
166
166
  }, "strip", z.ZodTypeAny, {
167
- timestamp: string;
168
167
  passed: boolean;
168
+ timestamp: string;
169
169
  treeHash: string;
170
170
  failedStep?: string | undefined;
171
171
  phases?: {
@@ -186,8 +186,8 @@ export declare const ValidationResultSchema: z.ZodObject<{
186
186
  fullLogFile?: string | undefined;
187
187
  summary?: string | undefined;
188
188
  }, {
189
- timestamp: string;
190
189
  passed: boolean;
190
+ timestamp: string;
191
191
  treeHash: string;
192
192
  failedStep?: string | undefined;
193
193
  phases?: {
@@ -36,8 +36,8 @@ export const PhaseResultSchema = z.object({
36
36
  /**
37
37
  * Validation Result Schema
38
38
  *
39
- * This is the complete schema for the validation state file
40
- * (.vibe-validate-state.yaml)
39
+ * This schema defines the validation result structure returned by the validation
40
+ * runner and stored in git notes (v0.12.0+) for history tracking.
41
41
  */
42
42
  export const ValidationResultSchema = z.object({
43
43
  /** Did validation pass? */
package/dist/runner.d.ts CHANGED
@@ -11,51 +11,14 @@
11
11
  */
12
12
  import { type ChildProcess } from 'child_process';
13
13
  import type { ValidationStep, ValidationResult, ValidationConfig, StepResult } from './types.js';
14
- /**
15
- * Legacy function - REMOVED in favor of @vibe-validate/git package
16
- *
17
- * Use `getGitTreeHash()` from '@vibe-validate/git' instead.
18
- * This provides deterministic, content-based tree hashing.
19
- *
20
- * @deprecated Removed in v0.9.11 - Use @vibe-validate/git instead
21
- */
22
- /**
23
- * Check if validation has already passed for current working tree state
24
- *
25
- * Reads the validation state file and compares the git tree hash to determine
26
- * if validation can be skipped (cache hit).
27
- *
28
- * @param currentTreeHash - Current git tree hash of working directory
29
- * @param stateFilePath - Path to validation state file
30
- * @returns Object with alreadyPassed flag and optional previousState
31
- *
32
- * @example
33
- * ```typescript
34
- * const { alreadyPassed, previousState } = checkExistingValidation(
35
- * 'abc123...',
36
- * '.validate-state.json'
37
- * );
38
- *
39
- * if (alreadyPassed) {
40
- * console.log('Validation already passed!');
41
- * return previousState;
42
- * }
43
- * ```
44
- *
45
- * @public
46
- */
47
- export declare function checkExistingValidation(currentTreeHash: string, stateFilePath: string): {
48
- alreadyPassed: boolean;
49
- previousState?: ValidationResult;
50
- };
51
14
  /**
52
15
  * Parse test output to extract specific failures
53
16
  *
54
17
  * Extracts failure details from validation step output using pattern matching.
55
18
  * Supports Vitest, TypeScript, and ESLint error formats.
56
19
  *
57
- * Note: This is a basic implementation - the formatters package provides
58
- * more sophisticated parsing with tool-specific formatters.
20
+ * Note: This is a basic implementation - the extractors package provides
21
+ * more sophisticated parsing with tool-specific extractors.
59
22
  *
60
23
  * @param output - Raw stdout/stderr output from validation step
61
24
  * @returns Array of extracted failure messages (max 10 per failure type)
@@ -72,6 +35,7 @@ export declare function checkExistingValidation(currentTreeHash: string, stateFi
72
35
  * ```
73
36
  *
74
37
  * @public
38
+ * @deprecated Use extractByStepName() from @vibe-validate/extractors instead
75
39
  */
76
40
  export declare function parseFailures(output: string): string[];
77
41
  /**
@@ -106,7 +70,7 @@ export declare function parseFailures(output: string): string[];
106
70
  *
107
71
  * @public
108
72
  */
109
- export declare function runStepsInParallel(steps: ValidationStep[], phaseName: string, enableFailFast?: boolean, env?: Record<string, string>, verbose?: boolean): Promise<{
73
+ export declare function runStepsInParallel(steps: ValidationStep[], phaseName: string, enableFailFast?: boolean, env?: Record<string, string>, verbose?: boolean, yaml?: boolean, developerFeedback?: boolean): Promise<{
110
74
  success: boolean;
111
75
  failedStep?: ValidationStep;
112
76
  outputs: Map<string, string>;
@@ -142,9 +106,7 @@ export declare function runStepsInParallel(steps: ValidationStep[], phaseName: s
142
106
  * ],
143
107
  * },
144
108
  * ],
145
- * stateFilePath: '.vibe-validate-state.yaml',
146
109
  * enableFailFast: false,
147
- * forceRun: false,
148
110
  * });
149
111
  *
150
112
  * if (result.passed) {
@@ -1 +1 @@
1
- {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAS,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAOzD,OAAO,KAAK,EACV,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,EAEX,MAAM,YAAY,CAAC;AAEpB;;;;;;;GAOG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,uBAAuB,CACrC,eAAe,EAAE,MAAM,EACvB,aAAa,EAAE,MAAM,GACpB;IAAE,aAAa,EAAE,OAAO,CAAC;IAAC,aAAa,CAAC,EAAE,gBAAgB,CAAA;CAAE,CAmB9D;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAsBtD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,cAAc,EAAE,EACvB,SAAS,EAAE,MAAM,EACjB,cAAc,GAAE,OAAe,EAC/B,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,EAChC,OAAO,GAAE,OAAe,GACvB,OAAO,CAAC;IACT,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,WAAW,EAAE,UAAU,EAAE,CAAC;CAC3B,CAAC,CAsGD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAoHvF;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,mBAAmB,CAAC,eAAe,EAAE,GAAG,CAAC,YAAY,CAAC,GAAG,IAAI,CAe5E"}
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAS,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAQzD,OAAO,KAAK,EACV,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,EAEX,MAAM,YAAY,CAAC;AA+CpB;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAsBtD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,cAAc,EAAE,EACvB,SAAS,EAAE,MAAM,EACjB,cAAc,GAAE,OAAe,EAC/B,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,EAChC,OAAO,GAAE,OAAe,EACxB,IAAI,GAAE,OAAe,EACrB,iBAAiB,GAAE,OAAe,GACjC,OAAO,CAAC;IACT,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,WAAW,EAAE,UAAU,EAAE,CAAC;CAC3B,CAAC,CAyKD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA+HvF;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,mBAAmB,CAAC,eAAe,EAAE,GAAG,CAAC,YAAY,CAAC,GAAG,IAAI,CAe5E"}
package/dist/runner.js CHANGED
@@ -10,11 +10,12 @@
10
10
  * @packageDocumentation
11
11
  */
12
12
  import { spawn } from 'child_process';
13
- import { writeFileSync, appendFileSync, existsSync, readFileSync } from 'fs';
13
+ import { writeFileSync, appendFileSync } from 'fs';
14
14
  import { tmpdir } from 'os';
15
15
  import { join } from 'path';
16
- import { stringify as yamlStringify, parse as yamlParse } from 'yaml';
16
+ import stripAnsi from 'strip-ansi';
17
17
  import { getGitTreeHash } from '@vibe-validate/git';
18
+ import { extractByStepName } from '@vibe-validate/extractors';
18
19
  import { stopProcessGroup } from './process-utils.js';
19
20
  /**
20
21
  * Legacy function - REMOVED in favor of @vibe-validate/git package
@@ -25,47 +26,39 @@ import { stopProcessGroup } from './process-utils.js';
25
26
  * @deprecated Removed in v0.9.11 - Use @vibe-validate/git instead
26
27
  */
27
28
  /**
28
- * Check if validation has already passed for current working tree state
29
+ * Calculate extraction quality score based on extractor output
29
30
  *
30
- * Reads the validation state file and compares the git tree hash to determine
31
- * if validation can be skipped (cache hit).
31
+ * Scores extraction quality from 0-100 based on:
32
+ * - Number of errors extracted
33
+ * - Field completeness (file, line, message)
34
+ * - Actionability (can an LLM/human act on this?)
32
35
  *
33
- * @param currentTreeHash - Current git tree hash of working directory
34
- * @param stateFilePath - Path to validation state file
35
- * @returns Object with alreadyPassed flag and optional previousState
36
+ * @param formatted - Extractor output
37
+ * @returns Quality score (0-100)
36
38
  *
37
- * @example
38
- * ```typescript
39
- * const { alreadyPassed, previousState } = checkExistingValidation(
40
- * 'abc123...',
41
- * '.validate-state.json'
42
- * );
43
- *
44
- * if (alreadyPassed) {
45
- * console.log('Validation already passed!');
46
- * return previousState;
47
- * }
48
- * ```
49
- *
50
- * @public
39
+ * @internal
51
40
  */
52
- export function checkExistingValidation(currentTreeHash, stateFilePath) {
53
- if (!existsSync(stateFilePath)) {
54
- return { alreadyPassed: false };
55
- }
56
- try {
57
- const content = readFileSync(stateFilePath, 'utf8');
58
- // Parse as YAML (JSON is valid YAML, so this handles both)
59
- const state = yamlParse(content);
60
- // Check if validation passed and tree hash matches
61
- if (state.passed && state.treeHash === currentTreeHash) {
62
- return { alreadyPassed: true, previousState: state };
63
- }
64
- return { alreadyPassed: false, previousState: state };
41
+ function calculateExtractionQuality(formatted) {
42
+ let score = 0;
43
+ // Error extraction (0-60 points)
44
+ const errorCount = formatted.errors?.length || 0;
45
+ if (errorCount > 0) {
46
+ score += Math.min(60, errorCount * 12); // Max 60 points for 5+ errors
65
47
  }
66
- catch (_error) {
67
- return { alreadyPassed: false };
48
+ // Field completeness (0-40 points)
49
+ const errors = formatted.errors || [];
50
+ if (errors.length > 0) {
51
+ const firstError = errors[0];
52
+ let fieldScore = 0;
53
+ if (firstError.file)
54
+ fieldScore += 10;
55
+ if (firstError.line !== undefined)
56
+ fieldScore += 10;
57
+ if (firstError.message)
58
+ fieldScore += 20;
59
+ score += fieldScore;
68
60
  }
61
+ return Math.min(100, score);
69
62
  }
70
63
  /**
71
64
  * Parse test output to extract specific failures
@@ -73,8 +66,8 @@ export function checkExistingValidation(currentTreeHash, stateFilePath) {
73
66
  * Extracts failure details from validation step output using pattern matching.
74
67
  * Supports Vitest, TypeScript, and ESLint error formats.
75
68
  *
76
- * Note: This is a basic implementation - the formatters package provides
77
- * more sophisticated parsing with tool-specific formatters.
69
+ * Note: This is a basic implementation - the extractors package provides
70
+ * more sophisticated parsing with tool-specific extractors.
78
71
  *
79
72
  * @param output - Raw stdout/stderr output from validation step
80
73
  * @returns Array of extracted failure messages (max 10 per failure type)
@@ -91,6 +84,7 @@ export function checkExistingValidation(currentTreeHash, stateFilePath) {
91
84
  * ```
92
85
  *
93
86
  * @public
87
+ * @deprecated Use extractByStepName() from @vibe-validate/extractors instead
94
88
  */
95
89
  export function parseFailures(output) {
96
90
  const failures = [];
@@ -143,8 +137,12 @@ export function parseFailures(output) {
143
137
  *
144
138
  * @public
145
139
  */
146
- export async function runStepsInParallel(steps, phaseName, enableFailFast = false, env = {}, verbose = false) {
147
- console.log(`\n🔍 Running ${phaseName} (${steps.length} steps in parallel)...`);
140
+ export async function runStepsInParallel(steps, phaseName, enableFailFast = false, env = {}, verbose = false, yaml = false, developerFeedback = false) {
141
+ // When yaml mode is on, write progress to stderr to keep stdout clean
142
+ const log = yaml ?
143
+ (msg) => process.stderr.write(msg + '\n') :
144
+ (msg) => console.log(msg);
145
+ log(`\n🔍 Running ${phaseName} (${steps.length} steps in parallel)...`);
148
146
  // Find longest step name for alignment
149
147
  const maxNameLength = Math.max(...steps.map(s => s.name.length));
150
148
  const outputs = new Map();
@@ -153,7 +151,7 @@ export async function runStepsInParallel(steps, phaseName, enableFailFast = fals
153
151
  let firstFailure = null;
154
152
  const results = await Promise.allSettled(steps.map(step => new Promise((resolve, reject) => {
155
153
  const paddedName = step.name.padEnd(maxNameLength);
156
- console.log(` ⏳ ${paddedName} → ${step.command}`);
154
+ log(` ⏳ ${paddedName} → ${step.command}`);
157
155
  const startTime = Date.now();
158
156
  // Use shell: true for cross-platform compatibility
159
157
  // Node.js automatically selects cmd.exe on Windows, sh on Unix
@@ -173,18 +171,29 @@ export async function runStepsInParallel(steps, phaseName, enableFailFast = fals
173
171
  let stderr = '';
174
172
  proc.stdout.on('data', data => {
175
173
  const chunk = data.toString();
176
- stdout += chunk;
174
+ // Strip ANSI escape codes to make output readable for humans and LLMs
175
+ // These codes (e.g., \e[32m for colors) are noise in logs, YAML, and git notes
176
+ const cleanChunk = stripAnsi(chunk);
177
+ stdout += cleanChunk;
177
178
  // Stream output in real-time when verbose mode is enabled
179
+ // When yaml mode is on, redirect subprocess output to stderr to keep stdout clean
178
180
  if (verbose) {
179
- process.stdout.write(chunk);
181
+ if (yaml) {
182
+ process.stderr.write(chunk); // Keep colors for terminal viewing
183
+ }
184
+ else {
185
+ process.stdout.write(chunk); // Keep colors for terminal viewing
186
+ }
180
187
  }
181
188
  });
182
189
  proc.stderr.on('data', data => {
183
190
  const chunk = data.toString();
184
- stderr += chunk;
191
+ // Strip ANSI escape codes from stderr as well
192
+ const cleanChunk = stripAnsi(chunk);
193
+ stderr += cleanChunk;
185
194
  // Stream errors in real-time when verbose mode is enabled
186
195
  if (verbose) {
187
- process.stderr.write(chunk);
196
+ process.stderr.write(chunk); // Keep colors for terminal viewing
188
197
  }
189
198
  });
190
199
  proc.on('close', code => {
@@ -194,8 +203,54 @@ export async function runStepsInParallel(steps, phaseName, enableFailFast = fals
194
203
  outputs.set(step.name, output);
195
204
  const status = code === 0 ? '✅' : '❌';
196
205
  const result = code === 0 ? 'PASSED' : 'FAILED';
197
- console.log(` ${status} ${step.name.padEnd(maxNameLength)} - ${result} (${durationSecs}s)`);
198
- stepResults.push({ name: step.name, passed: code === 0, durationSecs });
206
+ log(` ${status} ${step.name.padEnd(maxNameLength)} - ${result} (${durationSecs}s)`);
207
+ // Create base step result
208
+ const stepResult = {
209
+ name: step.name,
210
+ passed: code === 0,
211
+ durationSecs,
212
+ };
213
+ // Only run extractors on FAILED steps (code !== 0)
214
+ // Rationale: Passing tests have no failures to extract, extraction would always produce
215
+ // meaningless results (score: 0, no errors). Skipping saves CPU and reduces output noise.
216
+ if (code !== 0 && output && output.trim()) {
217
+ const formatted = extractByStepName(step.name, output);
218
+ // Extract structured failures/tests
219
+ stepResult.failedTests = formatted.errors?.map(error => {
220
+ const location = error.file
221
+ ? `${error.file}${error.line ? `:${error.line}` : ''}`
222
+ : 'unknown';
223
+ return `${location} - ${error.message || 'No message'}`;
224
+ }) || [];
225
+ // Only include extraction quality metrics when developerFeedback is enabled
226
+ // This is for vibe-validate contributors to identify extraction improvement opportunities
227
+ if (developerFeedback) {
228
+ // Detect tool from step name (heuristic until extractors returns this)
229
+ const detectedTool = step.name.toLowerCase().includes('typescript') || step.name.toLowerCase().includes('tsc')
230
+ ? 'typescript'
231
+ : step.name.toLowerCase().includes('eslint')
232
+ ? 'eslint'
233
+ : step.name.toLowerCase().includes('test') || step.name.toLowerCase().includes('vitest')
234
+ ? 'vitest'
235
+ : 'unknown';
236
+ // Calculate extraction quality metrics
237
+ const score = calculateExtractionQuality(formatted);
238
+ stepResult.extractionQuality = {
239
+ detectedTool,
240
+ confidence: score >= 80 ? 'high' : score >= 50 ? 'medium' : 'low',
241
+ score,
242
+ warnings: formatted.errors?.filter(e => e.severity === 'warning').length || 0,
243
+ errorsExtracted: formatted.errors?.filter(e => e.severity !== 'warning').length || formatted.errors?.length || 0,
244
+ actionable: (formatted.errors?.length || 0) > 0,
245
+ };
246
+ // Alert on poor extraction quality (for failed steps)
247
+ if (score < 50) {
248
+ log(` ⚠️ Poor extraction quality (${score}%) - Extractors failed to extract failures`);
249
+ log(` 💡 vibe-validate improvement opportunity: Improve ${detectedTool} extractor for this output`);
250
+ }
251
+ }
252
+ }
253
+ stepResults.push(stepResult);
199
254
  if (code === 0) {
200
255
  resolve({ step, output, durationSecs });
201
256
  }
@@ -206,7 +261,7 @@ export async function runStepsInParallel(steps, phaseName, enableFailFast = fals
206
261
  // Even if multiple failures occur, only one will be firstFailure, which is acceptable.
207
262
  if (enableFailFast && !firstFailure) {
208
263
  firstFailure = { step, output };
209
- console.log(`\n⚠️ Fail-fast enabled: Killing remaining processes...`);
264
+ log(`\n⚠️ Fail-fast enabled: Killing remaining processes...`);
210
265
  // Kill all other running processes
211
266
  for (const { proc: otherProc, step: otherStep } of processes) {
212
267
  if (otherStep !== step && otherProc.exitCode === null) {
@@ -259,9 +314,7 @@ export async function runStepsInParallel(steps, phaseName, enableFailFast = fals
259
314
  * ],
260
315
  * },
261
316
  * ],
262
- * stateFilePath: '.vibe-validate-state.yaml',
263
317
  * enableFailFast: false,
264
- * forceRun: false,
265
318
  * });
266
319
  *
267
320
  * if (result.passed) {
@@ -275,19 +328,11 @@ export async function runStepsInParallel(steps, phaseName, enableFailFast = fals
275
328
  * @public
276
329
  */
277
330
  export async function runValidation(config) {
278
- const { phases, stateFilePath = '.validate-state.json', logPath = join(tmpdir(), `validation-${new Date().toISOString().replace(/[:.]/g, '-')}.log`), enableFailFast = false, forceRun = false, env = {}, onPhaseStart, onPhaseComplete, } = config;
331
+ const { phases, logPath = join(tmpdir(), `validation-${new Date().toISOString().replace(/[:.]/g, '-')}.log`), enableFailFast = false, env = {}, onPhaseStart, onPhaseComplete, } = config;
279
332
  // Get current working tree hash (deterministic, content-based)
280
333
  const currentTreeHash = await getGitTreeHash();
281
- // Check if validation already passed for this exact code state
282
- if (!forceRun) {
283
- const { alreadyPassed, previousState } = checkExistingValidation(currentTreeHash, stateFilePath);
284
- if (alreadyPassed && previousState) {
285
- console.log('✅ Validation already passed for current working tree state');
286
- console.log(` Tree hash: ${currentTreeHash.substring(0, 12)}...`);
287
- console.log(` Last validated: ${previousState.timestamp}`);
288
- return previousState;
289
- }
290
- }
334
+ // Note: Caching is now handled at the CLI layer via git notes
335
+ // (see packages/cli/src/commands/validate.ts and @vibe-validate/history)
291
336
  // Initialize log file
292
337
  writeFileSync(logPath, `Validation started at ${new Date().toISOString()}\n\n`);
293
338
  let failedStep = null;
@@ -298,7 +343,7 @@ export async function runValidation(config) {
298
343
  onPhaseStart(phase);
299
344
  }
300
345
  const phaseStartTime = Date.now();
301
- const result = await runStepsInParallel(phase.steps, phase.name, enableFailFast, env, config.verbose ?? false);
346
+ const result = await runStepsInParallel(phase.steps, phase.name, enableFailFast, env, config.verbose ?? false, config.yaml ?? false, config.developerFeedback ?? false);
302
347
  const phaseDurationMs = Date.now() - phaseStartTime;
303
348
  const durationSecs = parseFloat((phaseDurationMs / 1000).toFixed(1));
304
349
  // Append all outputs to log file
@@ -315,9 +360,11 @@ export async function runValidation(config) {
315
360
  passed: result.success,
316
361
  steps: result.stepResults,
317
362
  };
318
- // If phase failed, include output
363
+ // If phase failed, extract and include output (LLM-optimized, not raw)
319
364
  if (!result.success && result.failedStep) {
320
- phaseResult.output = result.outputs.get(result.failedStep.name);
365
+ const rawOutput = result.outputs.get(result.failedStep.name) || '';
366
+ const extracted = extractByStepName(result.failedStep.name, rawOutput);
367
+ phaseResult.output = extracted.cleanOutput.trim() || rawOutput;
321
368
  }
322
369
  phaseResults.push(phaseResult);
323
370
  if (onPhaseComplete) {
@@ -327,33 +374,48 @@ export async function runValidation(config) {
327
374
  if (!result.success && result.failedStep) {
328
375
  failedStep = result.failedStep;
329
376
  const failedOutput = result.outputs.get(failedStep.name) || '';
330
- const failures = parseFailures(failedOutput);
377
+ // Extract actionable failures from raw output (LLM-optimized, 5-10 lines instead of 100+)
378
+ // This reduces git notes bloat and makes errors immediately actionable
379
+ const extracted = extractByStepName(failedStep.name, failedOutput);
380
+ // Use cleanOutput for storage (already formatted for YAML/JSON, stripped of ANSI codes)
381
+ // Falls back to raw output if extraction fails
382
+ const extractedOutput = extracted.cleanOutput.trim() || failedOutput;
383
+ // Use structured errors from extractor (replaces deprecated parseFailures)
384
+ const structuredFailures = extracted.errors.map(error => {
385
+ const location = error.file
386
+ ? `${error.file}${error.line ? `:${error.line}` : ''}`
387
+ : 'unknown';
388
+ return `${location} - ${error.message || 'No message'}`;
389
+ });
390
+ // IMPORTANT: Field order matches types.ts for YAML truncation safety
391
+ // Verbose fields (phases, failedStepOutput) at the end
331
392
  const validationResult = {
332
393
  passed: false,
333
394
  timestamp: new Date().toISOString(),
334
395
  treeHash: currentTreeHash,
335
- phases: phaseResults,
336
396
  failedStep: failedStep.name,
337
397
  rerunCommand: failedStep.command,
338
- failedStepOutput: failedOutput,
339
- failedTests: failures.length > 0 ? failures : undefined,
398
+ failedTests: structuredFailures.length > 0 ? structuredFailures : undefined,
340
399
  fullLogFile: logPath,
400
+ phases: phaseResults, // Contains verbose output - near end
401
+ failedStepOutput: extractedOutput, // Most verbose - dead last
341
402
  };
342
- // Write state file as YAML
343
- writeFileSync(stateFilePath, yamlStringify(validationResult));
403
+ // State persistence moved to validate.ts via git notes (v0.12.0+)
404
+ // The state file is deprecated - git notes are now the source of truth
344
405
  return validationResult;
345
406
  }
346
407
  }
347
408
  // All steps passed!
409
+ // IMPORTANT: Field order matches types.ts for YAML truncation safety
348
410
  const validationResult = {
349
411
  passed: true,
350
412
  timestamp: new Date().toISOString(),
351
413
  treeHash: currentTreeHash,
352
- phases: phaseResults,
353
414
  fullLogFile: logPath,
415
+ phases: phaseResults, // May contain output - at end for safety
354
416
  };
355
- // Write state file as YAML
356
- writeFileSync(stateFilePath, yamlStringify(validationResult));
417
+ // State persistence moved to validate.ts via git notes (v0.12.0+)
418
+ // The state file is deprecated - git notes are now the source of truth
357
419
  return validationResult;
358
420
  }
359
421
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,KAAK,EAAqB,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAC7E,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AAC5B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,SAAS,IAAI,aAAa,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAStD;;;;;;;GAOG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,UAAU,uBAAuB,CACrC,eAAuB,EACvB,aAAqB;IAErB,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAC/B,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC;IAClC,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QACpD,2DAA2D;QAC3D,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAqB,CAAC;QAErD,mDAAmD;QACnD,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,QAAQ,KAAK,eAAe,EAAE,CAAC;YACvD,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC;QACvD,CAAC;QAED,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC;IACxD,CAAC;IAAC,OAAO,MAAM,EAAE,CAAC;QAChB,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC;IAClC,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,UAAU,aAAa,CAAC,MAAc;IAC1C,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,4CAA4C;IAC5C,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7C,IAAI,cAAc,EAAE,CAAC;QACnB,QAAQ,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,oBAAoB;IACrE,CAAC;IAED,wCAAwC;IACxC,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACnE,IAAI,QAAQ,EAAE,CAAC;QACb,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED,oCAAoC;IACpC,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7D,IAAI,YAAY,EAAE,CAAC;QACjB,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACjE,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,KAAuB,EACvB,SAAiB,EACjB,iBAA0B,KAAK,EAC/B,MAA8B,EAAE,EAChC,UAAmB,KAAK;IAOxB,OAAO,CAAC,GAAG,CAAC,gBAAgB,SAAS,KAAK,KAAK,CAAC,MAAM,wBAAwB,CAAC,CAAC;IAEhF,uCAAuC;IACvC,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAEjE,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC1C,MAAM,WAAW,GAAiB,EAAE,CAAC;IACrC,MAAM,SAAS,GAAwD,EAAE,CAAC;IAC1E,IAAI,YAAY,GAAoD,IAAI,CAAC;IAEzE,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CACtC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CACf,IAAI,OAAO,CAAiE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC9F,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,QAAQ,UAAU,QAAQ,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAEtD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,mDAAmD;QACnD,+DAA+D;QAC/D,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE;YACnC,KAAK,EAAE,MAAM;YACb,KAAK,EAAE,IAAI,EAAG,iDAAiD;YAC/D,mFAAmF;YACnF,QAAQ,EAAE,OAAO,CAAC,QAAQ,KAAK,OAAO;YACtC,GAAG,EAAE;gBACH,GAAG,OAAO,CAAC,GAAG;gBACd,GAAG,GAAG;aACP;SACF,CAAC,CAAC;QAEH,mCAAmC;QACnC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAE/B,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;YAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC;YAChB,0DAA0D;YAC1D,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;YAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC;YAChB,0DAA0D;YAC1D,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE;YACtB,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YAC1C,MAAM,YAAY,GAAG,UAAU,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;YAChE,MAAM,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAE/B,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;YACtC,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;YAChD,OAAO,CAAC,GAAG,CAAC,SAAS,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,MAAM,KAAK,YAAY,IAAI,CAAC,CAAC;YAEjG,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC;YAExE,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;YAC1C,CAAC;iBAAM,CAAC;gBACN,8DAA8D;gBAC9D,2EAA2E;gBAC3E,qEAAqE;gBACrE,uFAAuF;gBACvF,IAAI,cAAc,IAAI,CAAC,YAAY,EAAE,CAAC;oBACpC,YAAY,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;oBAChC,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC;oBAEvE,mCAAmC;oBACnC,KAAK,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,SAAS,EAAE,CAAC;wBAC7D,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;4BACtD,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;gCACrD,iDAAiD;4BACnD,CAAC,CAAC,CAAC;wBACL,CAAC;oBACH,CAAC;gBACH,CAAC;gBACD,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;YACzC,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CACH,CACF,CAAC;IAEF,qBAAqB;IACrB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YACjC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC;YAC/B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;QACpE,CAAC;IACH,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;AACjD,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,MAAwB;IAC1D,MAAM,EACJ,MAAM,EACN,aAAa,GAAG,sBAAsB,EACtC,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,cAAc,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,EAC5F,cAAc,GAAG,KAAK,EACtB,QAAQ,GAAG,KAAK,EAChB,GAAG,GAAG,EAAE,EACR,YAAY,EACZ,eAAe,GAChB,GAAG,MAAM,CAAC;IAEX,+DAA+D;IAC/D,MAAM,eAAe,GAAG,MAAM,cAAc,EAAE,CAAC;IAE/C,+DAA+D;IAC/D,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,GAAG,uBAAuB,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;QAEjG,IAAI,aAAa,IAAI,aAAa,EAAE,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,4DAA4D,CAAC,CAAC;YAC1E,OAAO,CAAC,GAAG,CAAC,iBAAiB,eAAe,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;YACpE,OAAO,CAAC,GAAG,CAAC,sBAAsB,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC;YAC7D,OAAO,aAAa,CAAC;QACvB,CAAC;IACH,CAAC;IAED,sBAAsB;IACtB,aAAa,CAAC,OAAO,EAAE,yBAAyB,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAEhF,IAAI,UAAU,GAA0B,IAAI,CAAC;IAC7C,MAAM,YAAY,GAAkB,EAAE,CAAC;IAEvC,iBAAiB;IACjB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,YAAY,EAAE,CAAC;YACjB,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,MAAM,kBAAkB,CACrC,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,IAAI,EACV,cAAc,EACd,GAAG,EACH,MAAM,CAAC,OAAO,IAAI,KAAK,CACxB,CAAC;QACF,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,cAAc,CAAC;QACpD,MAAM,YAAY,GAAG,UAAU,CAAC,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAErE,iCAAiC;QACjC,KAAK,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YAChD,cAAc,CAAC,OAAO,EAAE,KAAK,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;YACjD,cAAc,CAAC,OAAO,EAAE,GAAG,QAAQ,GAAG,MAAM,CAAC,UAAU,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YACnG,cAAc,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;YAC/C,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAClC,CAAC;QAED,sBAAsB;QACtB,MAAM,WAAW,GAAgB;YAC/B,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,YAAY;YACZ,MAAM,EAAE,MAAM,CAAC,OAAO;YACtB,KAAK,EAAE,MAAM,CAAC,WAAW;SAC1B,CAAC;QAEF,kCAAkC;QAClC,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACzC,WAAW,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAClE,CAAC;QAED,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAE/B,IAAI,eAAe,EAAE,CAAC;YACpB,eAAe,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QACtC,CAAC;QAED,6BAA6B;QAC7B,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACzC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;YAE/B,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAC/D,MAAM,QAAQ,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;YAE7C,MAAM,gBAAgB,GAAqB;gBACzC,MAAM,EAAE,KAAK;gBACb,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,QAAQ,EAAE,eAAe;gBACzB,MAAM,EAAE,YAAY;gBACpB,UAAU,EAAE,UAAU,CAAC,IAAI;gBAC3B,YAAY,EAAE,UAAU,CAAC,OAAO;gBAChC,gBAAgB,EAAE,YAAY;gBAC9B,WAAW,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;gBACvD,WAAW,EAAE,OAAO;aACrB,CAAC;YAEF,2BAA2B;YAC3B,aAAa,CAAC,aAAa,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC,CAAC;YAE9D,OAAO,gBAAgB,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,oBAAoB;IACpB,MAAM,gBAAgB,GAAqB;QACzC,MAAM,EAAE,IAAI;QACZ,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,QAAQ,EAAE,eAAe;QACzB,MAAM,EAAE,YAAY;QACpB,WAAW,EAAE,OAAO;KACrB,CAAC;IAEF,2BAA2B;IAC3B,aAAa,CAAC,aAAa,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAE9D,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,mBAAmB,CAAC,eAAkC;IACpE,MAAM,OAAO,GAAG,KAAK,EAAE,MAAc,EAAE,EAAE;QACvC,OAAO,CAAC,GAAG,CAAC,kBAAkB,MAAM,iBAAiB,eAAe,CAAC,IAAI,sBAAsB,CAAC,CAAC;QAEjG,4BAA4B;QAC5B,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAC7D,gBAAgB,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAC1C,CAAC;QAEF,MAAM,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QACnC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC;IAEF,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IAChD,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;AAChD,CAAC"}
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -27,6 +27,23 @@ export interface ValidationPhase {
27
27
  /** Steps to execute in this phase */
28
28
  steps: ValidationStep[];
29
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
+ }
30
47
  /**
31
48
  * Result from executing a validation step
32
49
  */
@@ -39,6 +56,10 @@ export interface StepResult {
39
56
  durationSecs: number;
40
57
  /** Output from the step (stdout + stderr) */
41
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;
42
63
  }
43
64
  /**
44
65
  * Result from executing a validation phase
@@ -57,6 +78,10 @@ export interface PhaseResult {
57
78
  }
58
79
  /**
59
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).
60
85
  */
61
86
  export interface ValidationResult {
62
87
  /** Did validation pass? */
@@ -65,37 +90,40 @@ export interface ValidationResult {
65
90
  timestamp: string;
66
91
  /** Git tree hash (if in git repo) */
67
92
  treeHash: string;
68
- /** Results from each phase */
69
- phases?: PhaseResult[];
70
93
  /** Name of failed step (if any) */
71
94
  failedStep?: string;
72
95
  /** Command to re-run failed step */
73
96
  rerunCommand?: string;
74
- /** Output from the failed step */
75
- failedStepOutput?: string;
76
97
  /** Failed test names (if applicable) */
77
98
  failedTests?: string[];
78
99
  /** Path to full log file */
79
100
  fullLogFile?: string;
80
101
  /** Summary message */
81
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;
82
107
  }
83
108
  /**
84
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.
85
113
  */
86
114
  export interface ValidationConfig {
87
115
  /** Validation phases to execute */
88
116
  phases: ValidationPhase[];
89
- /** Path to state file (default: .validate-state.json) */
90
- stateFilePath?: string;
91
117
  /** Path to log file (default: os.tmpdir()/validation-{timestamp}.log) */
92
118
  logPath?: string;
93
119
  /** Enable fail-fast (stop on first failure) */
94
120
  enableFailFast?: boolean;
95
- /** Force re-run even if state says validation already passed */
96
- forceRun?: boolean;
97
121
  /** Show verbose output (stream command stdout/stderr in real-time) */
98
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;
99
127
  /** Environment variables to pass to all child processes */
100
128
  env?: Record<string, string>;
101
129
  /** Callback when phase starts */
@@ -106,21 +134,5 @@ export interface ValidationConfig {
106
134
  onStepStart?: (_step: ValidationStep) => void;
107
135
  /** Callback when step completes */
108
136
  onStepComplete?: (_step: ValidationStep, _result: StepResult) => void;
109
- /** Caching configuration */
110
- caching?: {
111
- /** Enable git tree hash caching */
112
- enabled: boolean;
113
- /** Cache strategy */
114
- strategy: 'git-tree-hash' | 'file-hash' | 'timestamp';
115
- /** Maximum age of cached results (ms) */
116
- maxAge?: number;
117
- };
118
- /** Output configuration */
119
- output?: {
120
- /** Output format */
121
- format: 'auto' | 'human' | 'yaml' | 'json';
122
- /** Show verbose output */
123
- verbose?: boolean;
124
- };
125
137
  }
126
138
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vibe-validate/core",
3
- "version": "0.11.0",
3
+ "version": "0.12.0",
4
4
  "description": "Core validation orchestration engine for vibe-validate",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -15,6 +15,13 @@
15
15
  "dist",
16
16
  "validation-result.schema.json"
17
17
  ],
18
+ "scripts": {
19
+ "build": "tsc && node dist/scripts/generate-result-schema.js",
20
+ "dev": "tsc --watch",
21
+ "test": "vitest run",
22
+ "test:watch": "vitest",
23
+ "clean": "rm -rf dist *.tsbuildinfo validation-result.schema.json"
24
+ },
18
25
  "keywords": [
19
26
  "validation",
20
27
  "parallel",
@@ -36,21 +43,16 @@
36
43
  "access": "public"
37
44
  },
38
45
  "dependencies": {
46
+ "@vibe-validate/extractors": "workspace:*",
47
+ "@vibe-validate/git": "workspace:*",
48
+ "strip-ansi": "^7.1.2",
39
49
  "yaml": "^2.6.1",
40
50
  "zod": "^3.24.1",
41
- "zod-to-json-schema": "^3.24.6",
42
- "@vibe-validate/git": "0.11.0"
51
+ "zod-to-json-schema": "^3.24.6"
43
52
  },
44
53
  "devDependencies": {
45
54
  "@types/node": "^20.17.6",
46
55
  "typescript": "^5.7.2",
47
56
  "vitest": "^2.1.8"
48
- },
49
- "scripts": {
50
- "build": "tsc && node dist/scripts/generate-result-schema.js",
51
- "dev": "tsc --watch",
52
- "test": "vitest run",
53
- "test:watch": "vitest",
54
- "clean": "rm -rf dist *.tsbuildinfo validation-result.schema.json"
55
57
  }
56
- }
58
+ }
package/LICENSE DELETED
@@ -1,21 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2025 Jeff Dutton
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.