@vibe-validate/core 0.14.2 → 0.14.3

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.
@@ -4,7 +4,7 @@
4
4
  * Provides reliable process group cleanup for spawned child processes.
5
5
  * Used by validation runner for signal handling and fail-fast behavior.
6
6
  */
7
- import { ChildProcess } from 'child_process';
7
+ import { ChildProcess } from 'node:child_process';
8
8
  /**
9
9
  * Stop a child process and its entire process group (cross-platform)
10
10
  *
@@ -1 +1 @@
1
- {"version":3,"file":"process-utils.d.ts","sourceRoot":"","sources":["../src/process-utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAY,MAAM,eAAe,CAAC;AAEvD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,gBAAgB,CACpC,YAAY,EAAE,YAAY,EAC1B,WAAW,GAAE,MAAkB,GAC9B,OAAO,CAAC,IAAI,CAAC,CA+Cf"}
1
+ {"version":3,"file":"process-utils.d.ts","sourceRoot":"","sources":["../src/process-utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAY,MAAM,oBAAoB,CAAC;AAE5D;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,gBAAgB,CACpC,YAAY,EAAE,YAAY,EAC1B,WAAW,GAAE,MAAkB,GAC9B,OAAO,CAAC,IAAI,CAAC,CA+Cf"}
@@ -4,7 +4,7 @@
4
4
  * Provides reliable process group cleanup for spawned child processes.
5
5
  * Used by validation runner for signal handling and fail-fast behavior.
6
6
  */
7
- import { execSync } from 'child_process';
7
+ import { execSync } from 'node:child_process';
8
8
  /**
9
9
  * Stop a child process and its entire process group (cross-platform)
10
10
  *
@@ -1 +1 @@
1
- {"version":3,"file":"process-utils.js","sourceRoot":"","sources":["../src/process-utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAgB,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEvD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,YAA0B,EAC1B,cAAsB,SAAS;IAE/B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,IAAI,CAAC,YAAY,CAAC,MAAM,IAAI,YAAY,CAAC,GAAG,EAAE,CAAC;YAC7C,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC;YAE7B,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;gBAC3B,OAAO,CAAC,GAAG,CAAC,MAAM,WAAW,UAAU,CAAC,CAAC;gBACzC,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC,CAAC;YAEH,wCAAwC;YACxC,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;gBACjC,kDAAkD;gBAClD,sCAAsC;gBACtC,yCAAyC;gBACzC,IAAI,CAAC;oBACH,QAAQ,CAAC,iBAAiB,GAAG,QAAQ,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;gBAC9D,CAAC;gBAAC,MAAM,CAAC;oBACP,4CAA4C;gBAC9C,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,6CAA6C;gBAC7C,8CAA8C;gBAC9C,IAAI,CAAC;oBACH,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;gBAChC,CAAC;gBAAC,MAAM,CAAC;oBACP,4CAA4C;gBAC9C,CAAC;gBAED,gEAAgE;gBAChE,UAAU,CAAC,GAAG,EAAE;oBACd,IAAI,CAAC;wBACH,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;oBAChC,CAAC;oBAAC,MAAM,CAAC;wBACP,4CAA4C;oBAC9C,CAAC;gBACH,CAAC,EAAE,IAAI,CAAC,CAAC;YACX,CAAC;YAED,wDAAwD;YACxD,UAAU,CAAC,GAAG,EAAE;gBACd,OAAO,EAAE,CAAC;YACZ,CAAC,EAAE,IAAI,CAAC,CAAC;QACX,CAAC;aAAM,CAAC;YACN,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"process-utils.js","sourceRoot":"","sources":["../src/process-utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAgB,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE5D;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,YAA0B,EAC1B,cAAsB,SAAS;IAE/B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,IAAI,CAAC,YAAY,CAAC,MAAM,IAAI,YAAY,CAAC,GAAG,EAAE,CAAC;YAC7C,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC;YAE7B,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;gBAC3B,OAAO,CAAC,GAAG,CAAC,MAAM,WAAW,UAAU,CAAC,CAAC;gBACzC,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC,CAAC;YAEH,wCAAwC;YACxC,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;gBACjC,kDAAkD;gBAClD,sCAAsC;gBACtC,yCAAyC;gBACzC,IAAI,CAAC;oBACH,QAAQ,CAAC,iBAAiB,GAAG,QAAQ,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;gBAC9D,CAAC;gBAAC,MAAM,CAAC;oBACP,4CAA4C;gBAC9C,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,6CAA6C;gBAC7C,8CAA8C;gBAC9C,IAAI,CAAC;oBACH,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;gBAChC,CAAC;gBAAC,MAAM,CAAC;oBACP,4CAA4C;gBAC9C,CAAC;gBAED,gEAAgE;gBAChE,UAAU,CAAC,GAAG,EAAE;oBACd,IAAI,CAAC;wBACH,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;oBAChC,CAAC;oBAAC,MAAM,CAAC;wBACP,4CAA4C;oBAC9C,CAAC;gBACH,CAAC,EAAE,IAAI,CAAC,CAAC;YACX,CAAC;YAED,wDAAwD;YACxD,UAAU,CAAC,GAAG,EAAE;gBACd,OAAO,EAAE,CAAC;YACZ,CAAC,EAAE,IAAI,CAAC,CAAC;QACX,CAAC;aAAM,CAAC;YACN,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
package/dist/runner.d.ts CHANGED
@@ -9,7 +9,7 @@
9
9
  *
10
10
  * @packageDocumentation
11
11
  */
12
- import { type ChildProcess } from 'child_process';
12
+ import { type ChildProcess } from 'node:child_process';
13
13
  import type { ValidationStep, ValidationResult, ValidationConfig, StepResult } from './types.js';
14
14
  /**
15
15
  * Parse test output to extract specific failures
@@ -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;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,CA2KD;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"}
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAS,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAQ9D,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,CAwBtD;AAwID;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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,CA0ID;AAoDD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA6FvF;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,mBAAmB,CAAC,eAAe,EAAE,GAAG,CAAC,YAAY,CAAC,GAAG,IAAI,CAmB5E"}
package/dist/runner.js CHANGED
@@ -9,10 +9,10 @@
9
9
  *
10
10
  * @packageDocumentation
11
11
  */
12
- import { spawn } from 'child_process';
13
- import { writeFileSync, appendFileSync } from 'fs';
14
- import { tmpdir } from 'os';
15
- import { join } from 'path';
12
+ import { spawn } from 'node:child_process';
13
+ import { writeFileSync, appendFileSync } from 'node:fs';
14
+ import { tmpdir } from 'node:os';
15
+ import { join } from 'node:path';
16
16
  import stripAnsi from 'strip-ansi';
17
17
  import { getGitTreeHash } from '@vibe-validate/git';
18
18
  import { autoDetectAndExtract } from '@vibe-validate/extractors';
@@ -41,12 +41,12 @@ import { stopProcessGroup } from './process-utils.js';
41
41
  function calculateExtractionQuality(formatted) {
42
42
  let score = 0;
43
43
  // Error extraction (0-60 points)
44
- const errorCount = formatted.errors?.length || 0;
44
+ const errorCount = formatted.errors?.length ?? 0;
45
45
  if (errorCount > 0) {
46
46
  score += Math.min(60, errorCount * 12); // Max 60 points for 5+ errors
47
47
  }
48
48
  // Field completeness (0-40 points)
49
- const errors = formatted.errors || [];
49
+ const errors = formatted.errors ?? [];
50
50
  if (errors.length > 0) {
51
51
  const firstError = errors[0];
52
52
  let fieldScore = 0;
@@ -94,17 +94,130 @@ export function parseFailures(output) {
94
94
  failures.push(...vitestFailures.slice(0, 10)); // Limit to first 10
95
95
  }
96
96
  // TypeScript errors - extract file:line
97
+ // eslint-disable-next-line sonarjs/slow-regex -- Safe: only parses TypeScript compiler output (controlled tool output), not user input
97
98
  const tsErrors = output.match(/[^(]+\(\d+,\d+\): error TS\d+:.+/g);
98
99
  if (tsErrors) {
99
100
  failures.push(...tsErrors.slice(0, 10).map(e => e.trim()));
100
101
  }
101
102
  // ESLint errors - extract file:line
103
+ // eslint-disable-next-line sonarjs/slow-regex -- Safe: only parses ESLint output (controlled linter output), not user input
102
104
  const eslintErrors = output.match(/\S+\.ts\(\d+,\d+\): .+/g);
103
105
  if (eslintErrors) {
104
106
  failures.push(...eslintErrors.slice(0, 10).map(e => e.trim()));
105
107
  }
106
108
  return failures;
107
109
  }
110
+ /**
111
+ * Detect tool type from step name
112
+ *
113
+ * Uses heuristics to determine which validation tool is running based on the step name.
114
+ * This is a temporary solution until extractors package returns detected tool type.
115
+ *
116
+ * @param stepName - Name of the validation step
117
+ * @returns Detected tool identifier (typescript, eslint, vitest, or unknown)
118
+ *
119
+ * @internal
120
+ */
121
+ function detectToolFromStepName(stepName) {
122
+ const stepLower = stepName.toLowerCase();
123
+ if (stepLower.includes('typescript') || stepLower.includes('tsc')) {
124
+ return 'typescript';
125
+ }
126
+ if (stepLower.includes('eslint')) {
127
+ return 'eslint';
128
+ }
129
+ if (stepLower.includes('test') || stepLower.includes('vitest')) {
130
+ return 'vitest';
131
+ }
132
+ return 'unknown';
133
+ }
134
+ /**
135
+ * Calculate confidence level from extraction quality score
136
+ *
137
+ * Maps numeric quality scores to confidence levels for easier interpretation.
138
+ *
139
+ * @param score - Quality score (0-100)
140
+ * @returns Confidence level (high >= 80, medium >= 50, low < 50)
141
+ *
142
+ * @internal
143
+ */
144
+ function calculateConfidenceLevel(score) {
145
+ if (score >= 80) {
146
+ return 'high';
147
+ }
148
+ if (score >= 50) {
149
+ return 'medium';
150
+ }
151
+ return 'low';
152
+ }
153
+ /**
154
+ * Process developer feedback for failed step
155
+ *
156
+ * Analyzes extraction quality and provides feedback for improving extractors.
157
+ * Only called when developerFeedback mode is enabled.
158
+ *
159
+ * @param stepResult - Step result to augment with extraction quality data
160
+ * @param stepName - Name of the validation step
161
+ * @param formatted - Formatted extractor output
162
+ * @param log - Logging function for output
163
+ * @param isWarning - Helper to check if error is a warning
164
+ * @param isNotWarning - Helper to check if error is not a warning
165
+ *
166
+ * @internal
167
+ */
168
+ function processDeveloperFeedback(stepResult, stepName, formatted, log, isWarning, isNotWarning) {
169
+ const detectedTool = detectToolFromStepName(stepName);
170
+ // eslint-disable-next-line sonarjs/deprecation -- calculateExtractionQuality is deprecated but still used for backwards compatibility
171
+ const score = calculateExtractionQuality(formatted);
172
+ const confidence = calculateConfidenceLevel(score);
173
+ stepResult.extractionQuality = {
174
+ detectedTool,
175
+ confidence,
176
+ score,
177
+ warnings: formatted.errors?.filter(isWarning).length ?? 0,
178
+ errorsExtracted: formatted.errors?.filter(isNotWarning).length ?? formatted.errors?.length ?? 0,
179
+ actionable: (formatted.errors?.length ?? 0) > 0,
180
+ };
181
+ // Alert on poor extraction quality (for failed steps)
182
+ if (score < 50) {
183
+ log(` ⚠️ Poor extraction quality (${score}%) - Extractors failed to extract failures`);
184
+ log(` 💡 vibe-validate improvement opportunity: Improve ${detectedTool} extractor for this output`);
185
+ }
186
+ }
187
+ /**
188
+ * Handle fail-fast process coordination
189
+ *
190
+ * Kills all other running processes when fail-fast is enabled and a step fails.
191
+ * Thread-safe due to JavaScript's single-threaded event loop.
192
+ *
193
+ * @param enableFailFast - Whether fail-fast mode is enabled
194
+ * @param firstFailure - Reference to first failure tracking object
195
+ * @param step - The failed step
196
+ * @param output - Output from failed step
197
+ * @param processes - Array of all running processes
198
+ * @param log - Logging function for output
199
+ * @param ignoreStopErrors - Callback to ignore already-stopped process errors
200
+ * @returns Updated firstFailure reference
201
+ *
202
+ * @internal
203
+ */
204
+ function handleFailFast(enableFailFast, firstFailure, step, output, processes, log, ignoreStopErrors) {
205
+ // RACE CONDITION SAFE: While multiple processes could fail simultaneously,
206
+ // JavaScript's single-threaded event loop ensures atomic assignment.
207
+ // Even if multiple failures occur, only one will be firstFailure, which is acceptable.
208
+ if (enableFailFast && !firstFailure) {
209
+ const failure = { step, output };
210
+ log(`\n⚠️ Fail-fast enabled: Killing remaining processes...`);
211
+ // Kill all other running processes
212
+ for (const { proc: otherProc, step: otherStep } of processes) {
213
+ if (otherStep !== step && otherProc.exitCode === null) {
214
+ stopProcessGroup(otherProc, otherStep.name).catch(ignoreStopErrors);
215
+ }
216
+ }
217
+ return failure;
218
+ }
219
+ return firstFailure;
220
+ }
108
221
  /**
109
222
  * Run validation steps in parallel with smart fail-fast
110
223
  *
@@ -149,6 +262,15 @@ export async function runStepsInParallel(steps, phaseName, enableFailFast = fals
149
262
  const stepResults = [];
150
263
  const processes = [];
151
264
  let firstFailure = null;
265
+ // Helper functions (extracted to reduce nesting depth)
266
+ const formatError = (error) => {
267
+ const linePart = error.line ? `:${error.line}` : '';
268
+ const location = error.file ? `${error.file}${linePart}` : 'unknown';
269
+ return `${location} - ${error.message ?? 'No message'}`;
270
+ };
271
+ const isWarning = (e) => e.severity === 'warning';
272
+ const isNotWarning = (e) => e.severity !== 'warning';
273
+ const ignoreStopErrors = () => { };
152
274
  const results = await Promise.allSettled(steps.map(step => new Promise((resolve, reject) => {
153
275
  const paddedName = step.name.padEnd(maxNameLength);
154
276
  log(` ⏳ ${paddedName} → ${step.command}`);
@@ -199,7 +321,7 @@ export async function runStepsInParallel(steps, phaseName, enableFailFast = fals
199
321
  });
200
322
  proc.on('close', code => {
201
323
  const durationMs = Date.now() - startTime;
202
- const durationSecs = parseFloat((durationMs / 1000).toFixed(1));
324
+ const durationSecs = Number.parseFloat((durationMs / 1000).toFixed(1));
203
325
  const output = stdout + stderr;
204
326
  outputs.set(step.name, output);
205
327
  const status = code === 0 ? '✅' : '❌';
@@ -214,41 +336,15 @@ export async function runStepsInParallel(steps, phaseName, enableFailFast = fals
214
336
  // Only run extractors on FAILED steps (code !== 0)
215
337
  // Rationale: Passing tests have no failures to extract, extraction would always produce
216
338
  // meaningless results (score: 0, no errors). Skipping saves CPU and reduces output noise.
339
+ // eslint-disable-next-line @typescript-eslint/prefer-optional-chain -- Explicit null/undefined/empty check is clearer than optional chaining
217
340
  if (code !== 0 && output && output.trim()) {
218
341
  const formatted = autoDetectAndExtract(step.name, output);
219
342
  // Extract structured failures/tests
220
- stepResult.failedTests = formatted.errors?.map(error => {
221
- const location = error.file
222
- ? `${error.file}${error.line ? `:${error.line}` : ''}`
223
- : 'unknown';
224
- return `${location} - ${error.message || 'No message'}`;
225
- }) || [];
343
+ stepResult.failedTests = formatted.errors?.map(formatError) ?? [];
226
344
  // Only include extraction quality metrics when developerFeedback is enabled
227
345
  // This is for vibe-validate contributors to identify extraction improvement opportunities
228
346
  if (developerFeedback) {
229
- // Detect tool from step name (heuristic until extractors returns this)
230
- const detectedTool = step.name.toLowerCase().includes('typescript') || step.name.toLowerCase().includes('tsc')
231
- ? 'typescript'
232
- : step.name.toLowerCase().includes('eslint')
233
- ? 'eslint'
234
- : step.name.toLowerCase().includes('test') || step.name.toLowerCase().includes('vitest')
235
- ? 'vitest'
236
- : 'unknown';
237
- // Calculate extraction quality metrics
238
- const score = calculateExtractionQuality(formatted);
239
- stepResult.extractionQuality = {
240
- detectedTool,
241
- confidence: score >= 80 ? 'high' : score >= 50 ? 'medium' : 'low',
242
- score,
243
- warnings: formatted.errors?.filter(e => e.severity === 'warning').length || 0,
244
- errorsExtracted: formatted.errors?.filter(e => e.severity !== 'warning').length || formatted.errors?.length || 0,
245
- actionable: (formatted.errors?.length || 0) > 0,
246
- };
247
- // Alert on poor extraction quality (for failed steps)
248
- if (score < 50) {
249
- log(` ⚠️ Poor extraction quality (${score}%) - Extractors failed to extract failures`);
250
- log(` 💡 vibe-validate improvement opportunity: Improve ${detectedTool} extractor for this output`);
251
- }
347
+ processDeveloperFeedback(stepResult, step.name, formatted, log, isWarning, isNotWarning);
252
348
  }
253
349
  }
254
350
  stepResults.push(stepResult);
@@ -257,21 +353,7 @@ export async function runStepsInParallel(steps, phaseName, enableFailFast = fals
257
353
  }
258
354
  else {
259
355
  // On first failure, kill other processes if fail-fast enabled
260
- // RACE CONDITION SAFE: While multiple processes could fail simultaneously,
261
- // JavaScript's single-threaded event loop ensures atomic assignment.
262
- // Even if multiple failures occur, only one will be firstFailure, which is acceptable.
263
- if (enableFailFast && !firstFailure) {
264
- firstFailure = { step, output };
265
- log(`\n⚠️ Fail-fast enabled: Killing remaining processes...`);
266
- // Kill all other running processes
267
- for (const { proc: otherProc, step: otherStep } of processes) {
268
- if (otherStep !== step && otherProc.exitCode === null) {
269
- stopProcessGroup(otherProc, otherStep.name).catch(() => {
270
- // Process may have already exited, ignore errors
271
- });
272
- }
273
- }
274
- }
356
+ firstFailure = handleFailFast(enableFailFast, firstFailure, step, output, processes, log, ignoreStopErrors);
275
357
  reject({ step, output, durationSecs });
276
358
  }
277
359
  });
@@ -285,6 +367,42 @@ export async function runStepsInParallel(steps, phaseName, enableFailFast = fals
285
367
  }
286
368
  return { success: true, outputs, stepResults };
287
369
  }
370
+ /**
371
+ * Append step outputs to log file
372
+ */
373
+ function appendStepOutputsToLog(logPath, outputs, failedStepName) {
374
+ for (const [stepName, output] of outputs) {
375
+ appendFileSync(logPath, `\n${'='.repeat(60)}\n`);
376
+ appendFileSync(logPath, `${stepName}${failedStepName === stepName ? ' - FAILED' : ''}\n`);
377
+ appendFileSync(logPath, `${'='.repeat(60)}\n`);
378
+ appendFileSync(logPath, output);
379
+ }
380
+ }
381
+ /**
382
+ * Create failed validation result with extracted errors
383
+ */
384
+ function createFailedValidationResult(failedStep, failedOutput, currentTreeHash, logPath, phaseResults) {
385
+ // Extract actionable failures (LLM-optimized)
386
+ const extracted = autoDetectAndExtract(failedStep.name, failedOutput);
387
+ const extractedOutput = extracted.cleanOutput.trim() || failedOutput;
388
+ // Use structured errors from extractor
389
+ const structuredFailures = extracted.errors.map(error => {
390
+ const linePart = error.line ? `:${error.line}` : '';
391
+ const location = error.file ? `${error.file}${linePart}` : 'unknown';
392
+ return `${location} - ${error.message ?? 'No message'}`;
393
+ });
394
+ return {
395
+ passed: false,
396
+ timestamp: new Date().toISOString(),
397
+ treeHash: currentTreeHash,
398
+ failedStep: failedStep.name,
399
+ rerunCommand: failedStep.command,
400
+ failedTests: structuredFailures.length > 0 ? structuredFailures : undefined,
401
+ fullLogFile: logPath,
402
+ phases: phaseResults,
403
+ failedStepOutput: extractedOutput,
404
+ };
405
+ }
288
406
  /**
289
407
  * Validation runner with state tracking and caching
290
408
  *
@@ -336,7 +454,6 @@ export async function runValidation(config) {
336
454
  // (see packages/cli/src/commands/validate.ts and @vibe-validate/history)
337
455
  // Initialize log file
338
456
  writeFileSync(logPath, `Validation started at ${new Date().toISOString()}\n\n`);
339
- let failedStep = null;
340
457
  const phaseResults = [];
341
458
  // Run each phase
342
459
  for (const phase of phases) {
@@ -346,14 +463,9 @@ export async function runValidation(config) {
346
463
  const phaseStartTime = Date.now();
347
464
  const result = await runStepsInParallel(phase.steps, phase.name, enableFailFast, env, config.verbose ?? false, config.yaml ?? false, config.developerFeedback ?? false);
348
465
  const phaseDurationMs = Date.now() - phaseStartTime;
349
- const durationSecs = parseFloat((phaseDurationMs / 1000).toFixed(1));
466
+ const durationSecs = Number.parseFloat((phaseDurationMs / 1000).toFixed(1));
350
467
  // Append all outputs to log file
351
- for (const [stepName, output] of result.outputs) {
352
- appendFileSync(logPath, `\n${'='.repeat(60)}\n`);
353
- appendFileSync(logPath, `${stepName}${result.failedStep?.name === stepName ? ' - FAILED' : ''}\n`);
354
- appendFileSync(logPath, `${'='.repeat(60)}\n`);
355
- appendFileSync(logPath, output);
356
- }
468
+ appendStepOutputsToLog(logPath, result.outputs, result.failedStep?.name);
357
469
  // Record phase result
358
470
  const phaseResult = {
359
471
  name: phase.name,
@@ -363,6 +475,7 @@ export async function runValidation(config) {
363
475
  };
364
476
  // If phase failed, extract and include output (LLM-optimized, not raw)
365
477
  if (!result.success && result.failedStep) {
478
+ // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing -- Need to filter empty strings, not just null/undefined
366
479
  const rawOutput = result.outputs.get(result.failedStep.name) || '';
367
480
  const extracted = autoDetectAndExtract(result.failedStep.name, rawOutput);
368
481
  phaseResult.output = extracted.cleanOutput.trim() || rawOutput;
@@ -371,39 +484,11 @@ export async function runValidation(config) {
371
484
  if (onPhaseComplete) {
372
485
  onPhaseComplete(phase, phaseResult);
373
486
  }
374
- // If phase failed, stop here
487
+ // If phase failed, stop here and return failure result
375
488
  if (!result.success && result.failedStep) {
376
- failedStep = result.failedStep;
377
- const failedOutput = result.outputs.get(failedStep.name) || '';
378
- // Extract actionable failures from raw output (LLM-optimized, 5-10 lines instead of 100+)
379
- // This reduces git notes bloat and makes errors immediately actionable
380
- const extracted = autoDetectAndExtract(failedStep.name, failedOutput);
381
- // Use cleanOutput for storage (already formatted for YAML/JSON, stripped of ANSI codes)
382
- // Falls back to raw output if extraction fails
383
- const extractedOutput = extracted.cleanOutput.trim() || failedOutput;
384
- // Use structured errors from extractor (replaces deprecated parseFailures)
385
- const structuredFailures = extracted.errors.map(error => {
386
- const location = error.file
387
- ? `${error.file}${error.line ? `:${error.line}` : ''}`
388
- : 'unknown';
389
- return `${location} - ${error.message || 'No message'}`;
390
- });
391
- // IMPORTANT: Field order matches types.ts for YAML truncation safety
392
- // Verbose fields (phases, failedStepOutput) at the end
393
- const validationResult = {
394
- passed: false,
395
- timestamp: new Date().toISOString(),
396
- treeHash: currentTreeHash,
397
- failedStep: failedStep.name,
398
- rerunCommand: failedStep.command,
399
- failedTests: structuredFailures.length > 0 ? structuredFailures : undefined,
400
- fullLogFile: logPath,
401
- phases: phaseResults, // Contains verbose output - near end
402
- failedStepOutput: extractedOutput, // Most verbose - dead last
403
- };
404
- // State persistence moved to validate.ts via git notes (v0.12.0+)
405
- // The state file is deprecated - git notes are now the source of truth
406
- return validationResult;
489
+ // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing -- Need to filter empty strings, not just null/undefined
490
+ const failedOutput = result.outputs.get(result.failedStep.name) || '';
491
+ return createFailedValidationResult(result.failedStep, failedOutput, currentTreeHash, logPath, phaseResults);
407
492
  }
408
493
  }
409
494
  // All steps passed!
@@ -449,7 +534,11 @@ export function setupSignalHandlers(activeProcesses) {
449
534
  await Promise.all(cleanupPromises);
450
535
  process.exit(1);
451
536
  };
452
- process.on('SIGTERM', () => cleanup('SIGTERM'));
453
- process.on('SIGINT', () => cleanup('SIGINT'));
537
+ process.on('SIGTERM', () => {
538
+ void cleanup('SIGTERM');
539
+ });
540
+ process.on('SIGINT', () => {
541
+ void cleanup('SIGINT');
542
+ });
454
543
  }
455
544
  //# sourceMappingURL=runner.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.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.14.2",
3
+ "version": "0.14.3",
4
4
  "description": "Core validation orchestration engine for vibe-validate",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -40,8 +40,8 @@
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.2",
44
- "@vibe-validate/git": "0.14.2"
43
+ "@vibe-validate/extractors": "0.14.3",
44
+ "@vibe-validate/git": "0.14.3"
45
45
  },
46
46
  "devDependencies": {
47
47
  "@types/node": "^20.17.6",