@vibe-validate/core 0.10.3 → 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 +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/process-utils.d.ts +9 -6
- package/dist/process-utils.d.ts.map +1 -1
- package/dist/process-utils.js +35 -17
- package/dist/process-utils.js.map +1 -1
- package/dist/result-schema-export.d.ts +26 -0
- package/dist/result-schema-export.d.ts.map +1 -0
- package/dist/result-schema-export.js +34 -0
- package/dist/result-schema-export.js.map +1 -0
- package/dist/result-schema.d.ts +242 -0
- package/dist/result-schema.d.ts.map +1 -0
- package/dist/result-schema.js +96 -0
- package/dist/result-schema.js.map +1 -0
- package/dist/runner.d.ts +4 -42
- package/dist/runner.d.ts.map +1 -1
- package/dist/runner.js +142 -76
- package/dist/runner.js.map +1 -1
- package/dist/scripts/generate-result-schema.d.ts +10 -0
- package/dist/scripts/generate-result-schema.d.ts.map +1 -0
- package/dist/scripts/generate-result-schema.js +20 -0
- package/dist/scripts/generate-result-schema.js.map +1 -0
- package/dist/types.d.ts +36 -26
- package/dist/types.d.ts.map +1 -1
- package/package.json +16 -13
- package/validation-result.schema.json +100 -0
- package/LICENSE +0 -21
- package/dist/cli.d.ts +0 -8
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js +0 -104
- package/dist/cli.js.map +0 -1
package/dist/runner.d.ts.map
CHANGED
|
@@ -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;
|
|
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
|
|
13
|
+
import { writeFileSync, appendFileSync } from 'fs';
|
|
14
14
|
import { tmpdir } from 'os';
|
|
15
15
|
import { join } from 'path';
|
|
16
|
-
import
|
|
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
|
-
*
|
|
29
|
+
* Calculate extraction quality score based on extractor output
|
|
29
30
|
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
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
|
|
34
|
-
* @
|
|
35
|
-
* @returns Object with alreadyPassed flag and optional previousState
|
|
36
|
+
* @param formatted - Extractor output
|
|
37
|
+
* @returns Quality score (0-100)
|
|
36
38
|
*
|
|
37
|
-
* @
|
|
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
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
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
|
-
|
|
67
|
-
|
|
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
|
|
77
|
-
* more sophisticated parsing with tool-specific
|
|
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
|
-
|
|
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,11 +151,15 @@ 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
|
-
|
|
154
|
+
log(` ⏳ ${paddedName} → ${step.command}`);
|
|
157
155
|
const startTime = Date.now();
|
|
158
|
-
|
|
156
|
+
// Use shell: true for cross-platform compatibility
|
|
157
|
+
// Node.js automatically selects cmd.exe on Windows, sh on Unix
|
|
158
|
+
const proc = spawn(step.command, [], {
|
|
159
159
|
stdio: 'pipe',
|
|
160
|
-
|
|
160
|
+
shell: true, // Cross-platform: cmd.exe on Windows, sh on Unix
|
|
161
|
+
// detached: true only on Unix - Windows doesn't pipe stdio correctly when detached
|
|
162
|
+
detached: process.platform !== 'win32',
|
|
161
163
|
env: {
|
|
162
164
|
...process.env,
|
|
163
165
|
...env,
|
|
@@ -169,18 +171,29 @@ export async function runStepsInParallel(steps, phaseName, enableFailFast = fals
|
|
|
169
171
|
let stderr = '';
|
|
170
172
|
proc.stdout.on('data', data => {
|
|
171
173
|
const chunk = data.toString();
|
|
172
|
-
|
|
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;
|
|
173
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
|
|
174
180
|
if (verbose) {
|
|
175
|
-
|
|
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
|
+
}
|
|
176
187
|
}
|
|
177
188
|
});
|
|
178
189
|
proc.stderr.on('data', data => {
|
|
179
190
|
const chunk = data.toString();
|
|
180
|
-
stderr
|
|
191
|
+
// Strip ANSI escape codes from stderr as well
|
|
192
|
+
const cleanChunk = stripAnsi(chunk);
|
|
193
|
+
stderr += cleanChunk;
|
|
181
194
|
// Stream errors in real-time when verbose mode is enabled
|
|
182
195
|
if (verbose) {
|
|
183
|
-
process.stderr.write(chunk);
|
|
196
|
+
process.stderr.write(chunk); // Keep colors for terminal viewing
|
|
184
197
|
}
|
|
185
198
|
});
|
|
186
199
|
proc.on('close', code => {
|
|
@@ -190,8 +203,54 @@ export async function runStepsInParallel(steps, phaseName, enableFailFast = fals
|
|
|
190
203
|
outputs.set(step.name, output);
|
|
191
204
|
const status = code === 0 ? '✅' : '❌';
|
|
192
205
|
const result = code === 0 ? 'PASSED' : 'FAILED';
|
|
193
|
-
|
|
194
|
-
|
|
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);
|
|
195
254
|
if (code === 0) {
|
|
196
255
|
resolve({ step, output, durationSecs });
|
|
197
256
|
}
|
|
@@ -202,7 +261,7 @@ export async function runStepsInParallel(steps, phaseName, enableFailFast = fals
|
|
|
202
261
|
// Even if multiple failures occur, only one will be firstFailure, which is acceptable.
|
|
203
262
|
if (enableFailFast && !firstFailure) {
|
|
204
263
|
firstFailure = { step, output };
|
|
205
|
-
|
|
264
|
+
log(`\n⚠️ Fail-fast enabled: Killing remaining processes...`);
|
|
206
265
|
// Kill all other running processes
|
|
207
266
|
for (const { proc: otherProc, step: otherStep } of processes) {
|
|
208
267
|
if (otherStep !== step && otherProc.exitCode === null) {
|
|
@@ -255,9 +314,7 @@ export async function runStepsInParallel(steps, phaseName, enableFailFast = fals
|
|
|
255
314
|
* ],
|
|
256
315
|
* },
|
|
257
316
|
* ],
|
|
258
|
-
* stateFilePath: '.vibe-validate-state.yaml',
|
|
259
317
|
* enableFailFast: false,
|
|
260
|
-
* forceRun: false,
|
|
261
318
|
* });
|
|
262
319
|
*
|
|
263
320
|
* if (result.passed) {
|
|
@@ -271,19 +328,11 @@ export async function runStepsInParallel(steps, phaseName, enableFailFast = fals
|
|
|
271
328
|
* @public
|
|
272
329
|
*/
|
|
273
330
|
export async function runValidation(config) {
|
|
274
|
-
const { phases,
|
|
331
|
+
const { phases, logPath = join(tmpdir(), `validation-${new Date().toISOString().replace(/[:.]/g, '-')}.log`), enableFailFast = false, env = {}, onPhaseStart, onPhaseComplete, } = config;
|
|
275
332
|
// Get current working tree hash (deterministic, content-based)
|
|
276
333
|
const currentTreeHash = await getGitTreeHash();
|
|
277
|
-
//
|
|
278
|
-
|
|
279
|
-
const { alreadyPassed, previousState } = checkExistingValidation(currentTreeHash, stateFilePath);
|
|
280
|
-
if (alreadyPassed && previousState) {
|
|
281
|
-
console.log('✅ Validation already passed for current working tree state');
|
|
282
|
-
console.log(` Tree hash: ${currentTreeHash.substring(0, 12)}...`);
|
|
283
|
-
console.log(` Last validated: ${previousState.timestamp}`);
|
|
284
|
-
return previousState;
|
|
285
|
-
}
|
|
286
|
-
}
|
|
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)
|
|
287
336
|
// Initialize log file
|
|
288
337
|
writeFileSync(logPath, `Validation started at ${new Date().toISOString()}\n\n`);
|
|
289
338
|
let failedStep = null;
|
|
@@ -294,7 +343,7 @@ export async function runValidation(config) {
|
|
|
294
343
|
onPhaseStart(phase);
|
|
295
344
|
}
|
|
296
345
|
const phaseStartTime = Date.now();
|
|
297
|
-
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);
|
|
298
347
|
const phaseDurationMs = Date.now() - phaseStartTime;
|
|
299
348
|
const durationSecs = parseFloat((phaseDurationMs / 1000).toFixed(1));
|
|
300
349
|
// Append all outputs to log file
|
|
@@ -311,9 +360,11 @@ export async function runValidation(config) {
|
|
|
311
360
|
passed: result.success,
|
|
312
361
|
steps: result.stepResults,
|
|
313
362
|
};
|
|
314
|
-
// If phase failed, include output
|
|
363
|
+
// If phase failed, extract and include output (LLM-optimized, not raw)
|
|
315
364
|
if (!result.success && result.failedStep) {
|
|
316
|
-
|
|
365
|
+
const rawOutput = result.outputs.get(result.failedStep.name) || '';
|
|
366
|
+
const extracted = extractByStepName(result.failedStep.name, rawOutput);
|
|
367
|
+
phaseResult.output = extracted.cleanOutput.trim() || rawOutput;
|
|
317
368
|
}
|
|
318
369
|
phaseResults.push(phaseResult);
|
|
319
370
|
if (onPhaseComplete) {
|
|
@@ -323,33 +374,48 @@ export async function runValidation(config) {
|
|
|
323
374
|
if (!result.success && result.failedStep) {
|
|
324
375
|
failedStep = result.failedStep;
|
|
325
376
|
const failedOutput = result.outputs.get(failedStep.name) || '';
|
|
326
|
-
|
|
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
|
|
327
392
|
const validationResult = {
|
|
328
393
|
passed: false,
|
|
329
394
|
timestamp: new Date().toISOString(),
|
|
330
395
|
treeHash: currentTreeHash,
|
|
331
|
-
phases: phaseResults,
|
|
332
396
|
failedStep: failedStep.name,
|
|
333
397
|
rerunCommand: failedStep.command,
|
|
334
|
-
|
|
335
|
-
failedTests: failures.length > 0 ? failures : undefined,
|
|
398
|
+
failedTests: structuredFailures.length > 0 ? structuredFailures : undefined,
|
|
336
399
|
fullLogFile: logPath,
|
|
400
|
+
phases: phaseResults, // Contains verbose output - near end
|
|
401
|
+
failedStepOutput: extractedOutput, // Most verbose - dead last
|
|
337
402
|
};
|
|
338
|
-
//
|
|
339
|
-
|
|
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
|
|
340
405
|
return validationResult;
|
|
341
406
|
}
|
|
342
407
|
}
|
|
343
408
|
// All steps passed!
|
|
409
|
+
// IMPORTANT: Field order matches types.ts for YAML truncation safety
|
|
344
410
|
const validationResult = {
|
|
345
411
|
passed: true,
|
|
346
412
|
timestamp: new Date().toISOString(),
|
|
347
413
|
treeHash: currentTreeHash,
|
|
348
|
-
phases: phaseResults,
|
|
349
414
|
fullLogFile: logPath,
|
|
415
|
+
phases: phaseResults, // May contain output - at end for safety
|
|
350
416
|
};
|
|
351
|
-
//
|
|
352
|
-
|
|
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
|
|
353
419
|
return validationResult;
|
|
354
420
|
}
|
|
355
421
|
/**
|
package/dist/runner.js.map
CHANGED
|
@@ -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,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE;YAC7C,KAAK,EAAE,MAAM;YACb,QAAQ,EAAE,IAAI,EAAG,8CAA8C;YAC/D,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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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Generate JSON Schema File for Validation Results
|
|
4
|
+
*
|
|
5
|
+
* Creates validation-result.schema.json in the package root for use in
|
|
6
|
+
* validating documentation examples and agent integration code.
|
|
7
|
+
* This script runs during the build process.
|
|
8
|
+
*/
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=generate-result-schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-result-schema.d.ts","sourceRoot":"","sources":["../../src/scripts/generate-result-schema.ts"],"names":[],"mappings":";AACA;;;;;;GAMG"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Generate JSON Schema File for Validation Results
|
|
4
|
+
*
|
|
5
|
+
* Creates validation-result.schema.json in the package root for use in
|
|
6
|
+
* validating documentation examples and agent integration code.
|
|
7
|
+
* This script runs during the build process.
|
|
8
|
+
*/
|
|
9
|
+
import { writeFileSync } from 'node:fs';
|
|
10
|
+
import { fileURLToPath } from 'node:url';
|
|
11
|
+
import { dirname, join } from 'node:path';
|
|
12
|
+
import { validationResultJsonSchema } from '../result-schema-export.js';
|
|
13
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
14
|
+
const __dirname = dirname(__filename);
|
|
15
|
+
const packageRoot = join(__dirname, '..', '..');
|
|
16
|
+
const schemaPath = join(packageRoot, 'validation-result.schema.json');
|
|
17
|
+
// Generate and write schema file
|
|
18
|
+
writeFileSync(schemaPath, JSON.stringify(validationResultJsonSchema, null, 2), 'utf-8');
|
|
19
|
+
console.log('✓ Generated validation-result.schema.json');
|
|
20
|
+
//# sourceMappingURL=generate-result-schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-result-schema.js","sourceRoot":"","sources":["../../src/scripts/generate-result-schema.ts"],"names":[],"mappings":";AACA;;;;;;GAMG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AAExE,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AACtC,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAChD,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,+BAA+B,CAAC,CAAC;AAEtE,iCAAiC;AACjC,aAAa,CACX,UAAU,EACV,IAAI,CAAC,SAAS,CAAC,0BAA0B,EAAE,IAAI,EAAE,CAAC,CAAC,EACnD,OAAO,CACR,CAAC;AAEF,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -24,11 +24,26 @@ export interface ValidationPhase {
|
|
|
24
24
|
name: string;
|
|
25
25
|
/** Run steps in parallel? */
|
|
26
26
|
parallel: boolean;
|
|
27
|
-
/** Phase names this phase depends on */
|
|
28
|
-
dependsOn?: string[];
|
|
29
27
|
/** Steps to execute in this phase */
|
|
30
28
|
steps: ValidationStep[];
|
|
31
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
|
+
}
|
|
32
47
|
/**
|
|
33
48
|
* Result from executing a validation step
|
|
34
49
|
*/
|
|
@@ -41,6 +56,10 @@ export interface StepResult {
|
|
|
41
56
|
durationSecs: number;
|
|
42
57
|
/** Output from the step (stdout + stderr) */
|
|
43
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;
|
|
44
63
|
}
|
|
45
64
|
/**
|
|
46
65
|
* Result from executing a validation phase
|
|
@@ -59,6 +78,10 @@ export interface PhaseResult {
|
|
|
59
78
|
}
|
|
60
79
|
/**
|
|
61
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).
|
|
62
85
|
*/
|
|
63
86
|
export interface ValidationResult {
|
|
64
87
|
/** Did validation pass? */
|
|
@@ -67,37 +90,40 @@ export interface ValidationResult {
|
|
|
67
90
|
timestamp: string;
|
|
68
91
|
/** Git tree hash (if in git repo) */
|
|
69
92
|
treeHash: string;
|
|
70
|
-
/** Results from each phase */
|
|
71
|
-
phases?: PhaseResult[];
|
|
72
93
|
/** Name of failed step (if any) */
|
|
73
94
|
failedStep?: string;
|
|
74
95
|
/** Command to re-run failed step */
|
|
75
96
|
rerunCommand?: string;
|
|
76
|
-
/** Output from the failed step */
|
|
77
|
-
failedStepOutput?: string;
|
|
78
97
|
/** Failed test names (if applicable) */
|
|
79
98
|
failedTests?: string[];
|
|
80
99
|
/** Path to full log file */
|
|
81
100
|
fullLogFile?: string;
|
|
82
101
|
/** Summary message */
|
|
83
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;
|
|
84
107
|
}
|
|
85
108
|
/**
|
|
86
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.
|
|
87
113
|
*/
|
|
88
114
|
export interface ValidationConfig {
|
|
89
115
|
/** Validation phases to execute */
|
|
90
116
|
phases: ValidationPhase[];
|
|
91
|
-
/** Path to state file (default: .validate-state.json) */
|
|
92
|
-
stateFilePath?: string;
|
|
93
117
|
/** Path to log file (default: os.tmpdir()/validation-{timestamp}.log) */
|
|
94
118
|
logPath?: string;
|
|
95
119
|
/** Enable fail-fast (stop on first failure) */
|
|
96
120
|
enableFailFast?: boolean;
|
|
97
|
-
/** Force re-run even if state says validation already passed */
|
|
98
|
-
forceRun?: boolean;
|
|
99
121
|
/** Show verbose output (stream command stdout/stderr in real-time) */
|
|
100
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;
|
|
101
127
|
/** Environment variables to pass to all child processes */
|
|
102
128
|
env?: Record<string, string>;
|
|
103
129
|
/** Callback when phase starts */
|
|
@@ -108,21 +134,5 @@ export interface ValidationConfig {
|
|
|
108
134
|
onStepStart?: (_step: ValidationStep) => void;
|
|
109
135
|
/** Callback when step completes */
|
|
110
136
|
onStepComplete?: (_step: ValidationStep, _result: StepResult) => void;
|
|
111
|
-
/** Caching configuration */
|
|
112
|
-
caching?: {
|
|
113
|
-
/** Enable git tree hash caching */
|
|
114
|
-
enabled: boolean;
|
|
115
|
-
/** Cache strategy */
|
|
116
|
-
strategy: 'git-tree-hash' | 'file-hash' | 'timestamp';
|
|
117
|
-
/** Maximum age of cached results (ms) */
|
|
118
|
-
maxAge?: number;
|
|
119
|
-
};
|
|
120
|
-
/** Output configuration */
|
|
121
|
-
output?: {
|
|
122
|
-
/** Output format */
|
|
123
|
-
format: 'auto' | 'human' | 'yaml' | 'json';
|
|
124
|
-
/** Show verbose output */
|
|
125
|
-
verbose?: boolean;
|
|
126
|
-
};
|
|
127
137
|
}
|
|
128
138
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,+BAA+B;IAC/B,IAAI,EAAE,MAAM,CAAC;IAEb,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAC;IAEhB,uCAAuC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,mDAAmD;IACnD,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,gCAAgC;IAChC,IAAI,EAAE,MAAM,CAAC;IAEb,6BAA6B;IAC7B,QAAQ,EAAE,OAAO,CAAC;IAElB,
|
|
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.
|
|
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",
|
|
@@ -12,8 +12,16 @@
|
|
|
12
12
|
}
|
|
13
13
|
},
|
|
14
14
|
"files": [
|
|
15
|
-
"dist"
|
|
15
|
+
"dist",
|
|
16
|
+
"validation-result.schema.json"
|
|
16
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
|
+
},
|
|
17
25
|
"keywords": [
|
|
18
26
|
"validation",
|
|
19
27
|
"parallel",
|
|
@@ -35,21 +43,16 @@
|
|
|
35
43
|
"access": "public"
|
|
36
44
|
},
|
|
37
45
|
"dependencies": {
|
|
38
|
-
"
|
|
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",
|
|
51
|
+
"zod-to-json-schema": "^3.24.6"
|
|
41
52
|
},
|
|
42
53
|
"devDependencies": {
|
|
43
|
-
"@types/js-yaml": "^4.0.9",
|
|
44
54
|
"@types/node": "^20.17.6",
|
|
45
55
|
"typescript": "^5.7.2",
|
|
46
56
|
"vitest": "^2.1.8"
|
|
47
|
-
},
|
|
48
|
-
"scripts": {
|
|
49
|
-
"build": "tsc",
|
|
50
|
-
"dev": "tsc --watch",
|
|
51
|
-
"test": "vitest run",
|
|
52
|
-
"test:watch": "vitest",
|
|
53
|
-
"clean": "rm -rf dist *.tsbuildinfo"
|
|
54
57
|
}
|
|
55
|
-
}
|
|
58
|
+
}
|