@vibe-validate/cli 0.14.2 → 0.15.0-rc.1
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/README.md +26 -6
- package/bin/vibe-validate +131 -0
- package/config-templates/minimal.yaml +1 -1
- package/config-templates/typescript-library.yaml +1 -1
- package/config-templates/typescript-nodejs.yaml +1 -1
- package/config-templates/typescript-react.yaml +1 -1
- package/dist/bin.js +41 -21
- package/dist/bin.js.map +1 -1
- package/dist/commands/cleanup.d.ts +1 -1
- package/dist/commands/cleanup.d.ts.map +1 -1
- package/dist/commands/cleanup.js +135 -16
- package/dist/commands/cleanup.js.map +1 -1
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +13 -10
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +253 -189
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/generate-workflow.d.ts.map +1 -1
- package/dist/commands/generate-workflow.js +15 -13
- package/dist/commands/generate-workflow.js.map +1 -1
- package/dist/commands/history.d.ts.map +1 -1
- package/dist/commands/history.js +305 -98
- package/dist/commands/history.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +14 -6
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/pre-commit.d.ts.map +1 -1
- package/dist/commands/pre-commit.js +8 -3
- package/dist/commands/pre-commit.js.map +1 -1
- package/dist/commands/run.d.ts.map +1 -1
- package/dist/commands/run.js +620 -217
- package/dist/commands/run.js.map +1 -1
- package/dist/commands/state.d.ts.map +1 -1
- package/dist/commands/state.js +4 -7
- package/dist/commands/state.js.map +1 -1
- package/dist/commands/validate.d.ts.map +1 -1
- package/dist/commands/validate.js +7 -7
- package/dist/commands/validate.js.map +1 -1
- package/dist/commands/watch-pr.d.ts.map +1 -1
- package/dist/commands/watch-pr.js +73 -49
- package/dist/commands/watch-pr.js.map +1 -1
- package/dist/schemas/run-result-schema-export.d.ts +32 -0
- package/dist/schemas/run-result-schema-export.d.ts.map +1 -0
- package/dist/schemas/run-result-schema-export.js +40 -0
- package/dist/schemas/run-result-schema-export.js.map +1 -0
- package/dist/schemas/run-result-schema.d.ts +850 -0
- package/dist/schemas/run-result-schema.d.ts.map +1 -0
- package/dist/schemas/run-result-schema.js +67 -0
- package/dist/schemas/run-result-schema.js.map +1 -0
- package/dist/schemas/watch-pr-schema.d.ts +431 -33
- package/dist/schemas/watch-pr-schema.d.ts.map +1 -1
- package/dist/schemas/watch-pr-schema.js +2 -2
- package/dist/schemas/watch-pr-schema.js.map +1 -1
- package/dist/scripts/generate-run-result-schema.d.ts +10 -0
- package/dist/scripts/generate-run-result-schema.d.ts.map +1 -0
- package/dist/scripts/generate-run-result-schema.js +20 -0
- package/dist/scripts/generate-run-result-schema.js.map +1 -0
- package/dist/scripts/generate-watch-pr-schema.js +3 -3
- package/dist/scripts/generate-watch-pr-schema.js.map +1 -1
- package/dist/services/ci-provider.d.ts +21 -6
- package/dist/services/ci-provider.d.ts.map +1 -1
- package/dist/services/ci-providers/github-actions.d.ts +21 -0
- package/dist/services/ci-providers/github-actions.d.ts.map +1 -1
- package/dist/services/ci-providers/github-actions.js +65 -49
- package/dist/services/ci-providers/github-actions.js.map +1 -1
- package/dist/utils/check-validation.d.ts.map +1 -1
- package/dist/utils/check-validation.js +9 -5
- package/dist/utils/check-validation.js.map +1 -1
- package/dist/utils/config-error-reporter.js +9 -7
- package/dist/utils/config-error-reporter.js.map +1 -1
- package/dist/utils/config-loader.js +5 -5
- package/dist/utils/config-loader.js.map +1 -1
- package/dist/utils/git-detection.d.ts +0 -22
- package/dist/utils/git-detection.d.ts.map +1 -1
- package/dist/utils/git-detection.js +64 -56
- package/dist/utils/git-detection.js.map +1 -1
- package/dist/utils/pid-lock.js +7 -7
- package/dist/utils/pid-lock.js.map +1 -1
- package/dist/utils/project-id.d.ts.map +1 -1
- package/dist/utils/project-id.js +8 -6
- package/dist/utils/project-id.js.map +1 -1
- package/dist/utils/runner-adapter.js +4 -3
- package/dist/utils/runner-adapter.js.map +1 -1
- package/dist/utils/setup-checks/hooks-check.js +3 -3
- package/dist/utils/setup-checks/hooks-check.js.map +1 -1
- package/dist/utils/setup-checks/workflow-check.js +3 -3
- package/dist/utils/setup-checks/workflow-check.js.map +1 -1
- package/dist/utils/temp-files.d.ts +67 -0
- package/dist/utils/temp-files.d.ts.map +1 -0
- package/dist/utils/temp-files.js +202 -0
- package/dist/utils/temp-files.js.map +1 -0
- package/dist/utils/template-discovery.d.ts.map +1 -1
- package/dist/utils/template-discovery.js +5 -4
- package/dist/utils/template-discovery.js.map +1 -1
- package/dist/utils/validate-workflow.d.ts.map +1 -1
- package/dist/utils/validate-workflow.js +169 -150
- package/dist/utils/validate-workflow.js.map +1 -1
- package/dist/vibe-validate +131 -0
- package/package.json +11 -9
- package/run-result.schema.json +186 -0
- package/watch-pr-result.schema.json +128 -6
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Generate JSON Schema File for Run Command Results
|
|
4
|
+
*
|
|
5
|
+
* Creates run-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 { runResultJsonSchema } from '../schemas/run-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, 'run-result.schema.json');
|
|
17
|
+
// Generate and write schema file
|
|
18
|
+
writeFileSync(schemaPath, JSON.stringify(runResultJsonSchema, null, 2), 'utf-8');
|
|
19
|
+
console.log('✓ Generated run-result.schema.json');
|
|
20
|
+
//# sourceMappingURL=generate-run-result-schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-run-result-schema.js","sourceRoot":"","sources":["../../src/scripts/generate-run-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,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAE7E,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,wBAAwB,CAAC,CAAC;AAE/D,iCAAiC;AACjC,aAAa,CACX,UAAU,EACV,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE,IAAI,EAAE,CAAC,CAAC,EAC5C,OAAO,CACR,CAAC;AAEF,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC"}
|
|
@@ -8,9 +8,9 @@
|
|
|
8
8
|
* - Validating watch-pr output in tests
|
|
9
9
|
* - Documentation generation
|
|
10
10
|
*/
|
|
11
|
-
import { writeFileSync } from 'fs';
|
|
12
|
-
import { join, dirname } from 'path';
|
|
13
|
-
import { fileURLToPath } from 'url';
|
|
11
|
+
import { writeFileSync } from 'node:fs';
|
|
12
|
+
import { join, dirname } from 'node:path';
|
|
13
|
+
import { fileURLToPath } from 'node:url';
|
|
14
14
|
import { zodToJsonSchema } from 'zod-to-json-schema';
|
|
15
15
|
import { WatchPRResultSchema } from '../schemas/watch-pr-schema.js';
|
|
16
16
|
const __filename = fileURLToPath(import.meta.url);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-watch-pr-schema.js","sourceRoot":"","sources":["../../src/scripts/generate-watch-pr-schema.ts"],"names":[],"mappings":";AACA;;;;;;;;GAQG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"generate-watch-pr-schema.js","sourceRoot":"","sources":["../../src/scripts/generate-watch-pr-schema.ts"],"names":[],"mappings":";AACA;;;;;;;;GAQG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAEpE,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC,uBAAuB;AACvB,MAAM,UAAU,GAAG,eAAe,CAAC,mBAAmB,EAAE;IACtD,IAAI,EAAE,eAAe;IACrB,YAAY,EAAE,MAAM,EAAE,4CAA4C;CACnE,CAAC,CAAC;AAEH,eAAe;AACf,MAAM,kBAAkB,GAAG;IACzB,OAAO,EAAE,yCAAyC;IAClD,GAAG,EAAE,6FAA6F;IAClG,KAAK,EAAE,sCAAsC;IAC7C,WAAW,EAAE,4DAA4D;IACzE,GAAG,UAAU;CACd,CAAC;AAEF,gBAAgB;AAChB,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,mCAAmC,CAAC,CAAC;AACxE,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAEvE,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC"}
|
|
@@ -50,6 +50,24 @@ export interface CheckStatus {
|
|
|
50
50
|
/** Individual check results */
|
|
51
51
|
checks: CheckResult[];
|
|
52
52
|
}
|
|
53
|
+
/**
|
|
54
|
+
* Error extraction result (from extractors package)
|
|
55
|
+
*/
|
|
56
|
+
export interface ErrorExtraction {
|
|
57
|
+
/** Human-readable summary (e.g., "2 test failures", "5 type errors") */
|
|
58
|
+
summary: string;
|
|
59
|
+
/** Total error count */
|
|
60
|
+
totalErrors: number;
|
|
61
|
+
/** Parsed and structured errors */
|
|
62
|
+
errors: Array<{
|
|
63
|
+
file?: string;
|
|
64
|
+
line?: number;
|
|
65
|
+
column?: number;
|
|
66
|
+
message?: string;
|
|
67
|
+
}>;
|
|
68
|
+
/** Step-specific actionable guidance for fixing errors */
|
|
69
|
+
guidance?: string;
|
|
70
|
+
}
|
|
53
71
|
/**
|
|
54
72
|
* Validation result extracted from CI logs
|
|
55
73
|
*/
|
|
@@ -62,12 +80,6 @@ export interface ValidationResultContents {
|
|
|
62
80
|
treeHash?: string;
|
|
63
81
|
/** Name of step that failed */
|
|
64
82
|
failedStep?: string;
|
|
65
|
-
/** Command to re-run failed step */
|
|
66
|
-
rerunCommand?: string;
|
|
67
|
-
/** Output from failed step */
|
|
68
|
-
failedStepOutput?: string;
|
|
69
|
-
/** Parsed list of test failures (file:line format) */
|
|
70
|
-
failedTests?: string[];
|
|
71
83
|
/** All phases (if available) */
|
|
72
84
|
phases?: Array<{
|
|
73
85
|
name: string;
|
|
@@ -76,9 +88,12 @@ export interface ValidationResultContents {
|
|
|
76
88
|
output?: string;
|
|
77
89
|
steps?: Array<{
|
|
78
90
|
name: string;
|
|
91
|
+
command?: string;
|
|
92
|
+
exitCode?: number;
|
|
79
93
|
passed: boolean;
|
|
80
94
|
durationSecs?: number;
|
|
81
95
|
output?: string;
|
|
96
|
+
extraction?: ErrorExtraction;
|
|
82
97
|
}>;
|
|
83
98
|
}>;
|
|
84
99
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ci-provider.d.ts","sourceRoot":"","sources":["../../src/services/ci-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,yBAAyB;IACzB,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,kBAAkB;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,mCAAmC;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,yBAAyB;IACzB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,2CAA2C;IAC3C,EAAE,EAAE,MAAM,CAAC;IACX,4DAA4D;IAC5D,IAAI,EAAE,MAAM,CAAC;IACb,+BAA+B;IAC/B,MAAM,EAAE,QAAQ,GAAG,aAAa,GAAG,WAAW,CAAC;IAC/C,2CAA2C;IAC3C,UAAU,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,IAAI,CAAC;IAC/E,uCAAuC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gCAAgC;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,uBAAuB;IACvB,EAAE,EAAE,WAAW,CAAC;IAChB,uCAAuC;IACvC,MAAM,EAAE,SAAS,GAAG,aAAa,GAAG,WAAW,CAAC;IAChD,kEAAkE;IAClE,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,CAAC;IACxD,+BAA+B;IAC/B,MAAM,EAAE,WAAW,EAAE,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"ci-provider.d.ts","sourceRoot":"","sources":["../../src/services/ci-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,6 +14,27 @@ export declare class GitHubActionsProvider implements CIProvider {
|
|
|
14
14
|
fetchCheckStatus(prId: number | string): Promise<CheckStatus>;
|
|
15
15
|
fetchFailureLogs(runId: string): Promise<FailureLogs>;
|
|
16
16
|
extractValidationResult(logs: string): ValidationResultContents | null;
|
|
17
|
+
/**
|
|
18
|
+
* Create a function to extract content from GitHub Actions log lines
|
|
19
|
+
* Format: "Run name\tStep name\tTimestamp <content>"
|
|
20
|
+
*/
|
|
21
|
+
private createContentExtractor;
|
|
22
|
+
/**
|
|
23
|
+
* Find the start and end indices of validation result YAML in logs
|
|
24
|
+
*/
|
|
25
|
+
private findValidationResultBoundaries;
|
|
26
|
+
/**
|
|
27
|
+
* Find the closing separator (====) after YAML content
|
|
28
|
+
*/
|
|
29
|
+
private findClosingSeparator;
|
|
30
|
+
/**
|
|
31
|
+
* Extract YAML content between boundaries
|
|
32
|
+
*/
|
|
33
|
+
private extractYamlContent;
|
|
34
|
+
/**
|
|
35
|
+
* Parse YAML validation result from log content
|
|
36
|
+
*/
|
|
37
|
+
private parseAndEnrichValidationResult;
|
|
17
38
|
/**
|
|
18
39
|
* Transform GitHub check format to common CheckResult format
|
|
19
40
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github-actions.d.ts","sourceRoot":"","sources":["../../../src/services/ci-providers/github-actions.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"github-actions.d.ts","sourceRoot":"","sources":["../../../src/services/ci-providers/github-actions.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,UAAU,EACV,WAAW,EACX,WAAW,EAEX,WAAW,EACX,wBAAwB,EACzB,MAAM,mBAAmB,CAAC;AAE3B;;;;;;;GAOG;AACH,qBAAa,qBAAsB,YAAW,UAAU;IACtD,QAAQ,CAAC,IAAI,oBAAoB;IAE3B,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAa/B,iBAAiB,IAAI,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAoBhD,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAyB7D,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAkC3D,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,wBAAwB,GAAG,IAAI;IAatE;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAU9B;;OAEG;IACH,OAAO,CAAC,8BAA8B;IAsBtC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAwB5B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAgB1B;;OAEG;IACH,OAAO,CAAC,8BAA8B;IAUtC;;OAEG;IACH,OAAO,CAAC,cAAc;IAkEtB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAkB9B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAuB9B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAyBzB;;;;;OAKG;IACH,OAAO,CAAC,mBAAmB;CA2B5B"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { execSync } from 'node:child_process';
|
|
2
2
|
import { parse as parseYaml } from 'yaml';
|
|
3
|
-
import { autoDetectAndExtract } from '@vibe-validate/extractors';
|
|
4
3
|
/**
|
|
5
4
|
* GitHub Actions CI provider implementation
|
|
6
5
|
*
|
|
@@ -45,13 +44,13 @@ export class GitHubActionsProvider {
|
|
|
45
44
|
encoding: 'utf8',
|
|
46
45
|
stdio: ['pipe', 'pipe', 'pipe'],
|
|
47
46
|
}));
|
|
48
|
-
const checks = (data.statusCheckRollup
|
|
47
|
+
const checks = (data.statusCheckRollup ?? []).map((check) => this.transformCheck(check));
|
|
49
48
|
return {
|
|
50
49
|
pr: {
|
|
51
50
|
id: data.number,
|
|
52
51
|
title: data.title,
|
|
53
52
|
url: data.url,
|
|
54
|
-
branch: data.headRefName
|
|
53
|
+
branch: data.headRefName ?? '',
|
|
55
54
|
},
|
|
56
55
|
status: this.determineOverallStatus(checks),
|
|
57
56
|
result: this.determineOverallResult(checks),
|
|
@@ -66,7 +65,7 @@ export class GitHubActionsProvider {
|
|
|
66
65
|
encoding: 'utf8',
|
|
67
66
|
stdio: ['pipe', 'pipe', 'pipe'],
|
|
68
67
|
}));
|
|
69
|
-
checkName = runData.name
|
|
68
|
+
checkName = runData.name ?? checkName;
|
|
70
69
|
}
|
|
71
70
|
catch {
|
|
72
71
|
// Ignore error, use default name
|
|
@@ -88,11 +87,21 @@ export class GitHubActionsProvider {
|
|
|
88
87
|
};
|
|
89
88
|
}
|
|
90
89
|
extractValidationResult(logs) {
|
|
91
|
-
// GitHub Actions logs have format: "Run name\tStep name\tTimestamp <content>"
|
|
92
|
-
// We need to strip prefixes to get actual output
|
|
93
90
|
const lines = logs.split('\n');
|
|
94
|
-
|
|
95
|
-
const
|
|
91
|
+
const extractContent = this.createContentExtractor();
|
|
92
|
+
const boundaries = this.findValidationResultBoundaries(lines, extractContent);
|
|
93
|
+
if (!boundaries) {
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
96
|
+
const yamlContent = this.extractYamlContent(lines, boundaries, extractContent);
|
|
97
|
+
return this.parseAndEnrichValidationResult(yamlContent);
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Create a function to extract content from GitHub Actions log lines
|
|
101
|
+
* Format: "Run name\tStep name\tTimestamp <content>"
|
|
102
|
+
*/
|
|
103
|
+
createContentExtractor() {
|
|
104
|
+
return (line) => {
|
|
96
105
|
const parts = line.split('\t');
|
|
97
106
|
if (parts.length < 3)
|
|
98
107
|
return '';
|
|
@@ -100,18 +109,29 @@ export class GitHubActionsProvider {
|
|
|
100
109
|
// Strip timestamp (format: "2025-10-21T00:56:24.8654285Z <content>")
|
|
101
110
|
return contentWithTimestamp.replace(/^[0-9T:.Z-]+ /, '').replace(/^[0-9T:.Z-]+$/, '');
|
|
102
111
|
};
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Find the start and end indices of validation result YAML in logs
|
|
115
|
+
*/
|
|
116
|
+
findValidationResultBoundaries(lines, extractContent) {
|
|
117
|
+
// Find start: line containing "VALIDATION RESULT" (skip ANSI-coded lines)
|
|
106
118
|
const startIdx = lines.findIndex(l => {
|
|
107
119
|
return l.includes('VALIDATION RESULT') && !l.includes('[36;1m') && !l.includes('[0m');
|
|
108
120
|
});
|
|
109
121
|
if (startIdx < 0) {
|
|
110
122
|
return null;
|
|
111
123
|
}
|
|
112
|
-
// Find
|
|
113
|
-
|
|
114
|
-
|
|
124
|
+
// Find end: closing separator after YAML content
|
|
125
|
+
const endIdx = this.findClosingSeparator(lines, startIdx, extractContent);
|
|
126
|
+
if (endIdx < 0) {
|
|
127
|
+
return null;
|
|
128
|
+
}
|
|
129
|
+
return { startIdx, endIdx };
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Find the closing separator (====) after YAML content
|
|
133
|
+
*/
|
|
134
|
+
findClosingSeparator(lines, startIdx, extractContent) {
|
|
115
135
|
let foundYamlContent = false;
|
|
116
136
|
for (let i = startIdx + 1; i < lines.length; i++) {
|
|
117
137
|
const content = extractContent(lines[i]).trim();
|
|
@@ -119,44 +139,35 @@ export class GitHubActionsProvider {
|
|
|
119
139
|
if (content.startsWith('passed:') || content.startsWith('timestamp:') || content.startsWith('treeHash:')) {
|
|
120
140
|
foundYamlContent = true;
|
|
121
141
|
}
|
|
122
|
-
// Look for closing separator
|
|
123
|
-
if (foundYamlContent &&
|
|
124
|
-
|
|
125
|
-
break;
|
|
142
|
+
// Look for closing separator (40+ equals signs) after YAML content
|
|
143
|
+
if (foundYamlContent && /^={40,}$/.exec(content)) {
|
|
144
|
+
return i;
|
|
126
145
|
}
|
|
127
146
|
}
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
147
|
+
return -1;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Extract YAML content between boundaries
|
|
151
|
+
*/
|
|
152
|
+
extractYamlContent(lines, boundaries, extractContent) {
|
|
153
|
+
// YAML starts at startIdx + 2 (skip "VALIDATION RESULT" and separator)
|
|
154
|
+
const yamlStartIdx = boundaries.startIdx + 2;
|
|
135
155
|
const yamlLines = [];
|
|
136
|
-
for (let i = yamlStartIdx; i < endIdx; i++) {
|
|
137
|
-
|
|
138
|
-
const content = extractContent(lines[i]);
|
|
139
|
-
yamlLines.push(content);
|
|
156
|
+
for (let i = yamlStartIdx; i < boundaries.endIdx; i++) {
|
|
157
|
+
yamlLines.push(extractContent(lines[i]));
|
|
140
158
|
}
|
|
159
|
+
return yamlLines.join('\n').trim();
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Parse YAML validation result from log content
|
|
163
|
+
*/
|
|
164
|
+
parseAndEnrichValidationResult(yamlContent) {
|
|
141
165
|
try {
|
|
142
|
-
const
|
|
143
|
-
const result = parseYaml(stateYaml);
|
|
144
|
-
// If validation failed and we have step output, run it through extractors
|
|
145
|
-
// to extract structured failure details (test names, file locations, etc.)
|
|
146
|
-
if (!result.passed && result.failedStep && result.failedStepOutput) {
|
|
147
|
-
const extractorResult = autoDetectAndExtract(result.failedStep, result.failedStepOutput);
|
|
148
|
-
// Extract failed tests in "file:line" format from extractor errors
|
|
149
|
-
if (extractorResult.errors && extractorResult.errors.length > 0) {
|
|
150
|
-
result.failedTests = extractorResult.errors
|
|
151
|
-
.filter((e) => e.file && e.line)
|
|
152
|
-
.map((e) => `${e.file}:${e.line}${e.column ? `:${e.column}` : ''} - ${e.message || 'Test failed'}`)
|
|
153
|
-
.slice(0, 10); // Limit to first 10 for display
|
|
154
|
-
}
|
|
155
|
-
}
|
|
166
|
+
const result = parseYaml(yamlContent);
|
|
156
167
|
return result;
|
|
157
168
|
}
|
|
158
|
-
catch
|
|
159
|
-
// Failed to parse YAML
|
|
169
|
+
catch {
|
|
170
|
+
// Failed to parse validation YAML - return null
|
|
160
171
|
return null;
|
|
161
172
|
}
|
|
162
173
|
}
|
|
@@ -211,7 +222,7 @@ export class GitHubActionsProvider {
|
|
|
211
222
|
// Extract run ID from details URL if available
|
|
212
223
|
let checkId = 'unknown';
|
|
213
224
|
if (typeof check.detailsUrl === 'string') {
|
|
214
|
-
const runIdMatch =
|
|
225
|
+
const runIdMatch = /\/runs\/(\d+)/.exec(check.detailsUrl);
|
|
215
226
|
if (runIdMatch) {
|
|
216
227
|
checkId = runIdMatch[1];
|
|
217
228
|
}
|
|
@@ -267,7 +278,7 @@ export class GitHubActionsProvider {
|
|
|
267
278
|
*/
|
|
268
279
|
extractFailedStep(logs) {
|
|
269
280
|
// GitHub Actions marks failed steps with ##[error]
|
|
270
|
-
const errorMatch =
|
|
281
|
+
const errorMatch = /##\[error\]Process completed with exit code \d+\./.exec(logs);
|
|
271
282
|
if (!errorMatch) {
|
|
272
283
|
return undefined;
|
|
273
284
|
}
|
|
@@ -278,7 +289,7 @@ export class GitHubActionsProvider {
|
|
|
278
289
|
if (errorIndex > 0) {
|
|
279
290
|
// Look backwards for step name
|
|
280
291
|
for (let i = errorIndex - 1; i >= 0; i--) {
|
|
281
|
-
const runMatch =
|
|
292
|
+
const runMatch = /##\[group\]Run (.+)/.exec(lines[i]);
|
|
282
293
|
if (runMatch) {
|
|
283
294
|
return runMatch[1];
|
|
284
295
|
}
|
|
@@ -298,7 +309,12 @@ export class GitHubActionsProvider {
|
|
|
298
309
|
if (validationResult && !validationResult.passed) {
|
|
299
310
|
// Show concise summary: just the failed step and how to rerun
|
|
300
311
|
if (validationResult.failedStep) {
|
|
301
|
-
|
|
312
|
+
// Find the failed step's command (v0.15.0+: rerunCommand removed, use step.command)
|
|
313
|
+
const failedStep = validationResult.phases
|
|
314
|
+
?.flatMap(phase => phase.steps ?? [])
|
|
315
|
+
.find(step => step && step.name === validationResult.failedStep);
|
|
316
|
+
const rerunCommand = failedStep?.command ?? 'see full logs';
|
|
317
|
+
return `Failed step: ${validationResult.failedStep}\nRerun: ${rerunCommand}`;
|
|
302
318
|
}
|
|
303
319
|
}
|
|
304
320
|
// Fallback: Look for ##[error] lines (for non-validation failures)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github-actions.js","sourceRoot":"","sources":["../../../src/services/ci-providers/github-actions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"github-actions.js","sourceRoot":"","sources":["../../../src/services/ci-providers/github-actions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check-validation.d.ts","sourceRoot":"","sources":["../../src/utils/check-validation.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAIhE;;;;;;;;;;;GAWG;
|
|
1
|
+
{"version":3,"file":"check-validation.d.ts","sourceRoot":"","sources":["../../src/utils/check-validation.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAIhE;;;;;;;;;;;GAWG;AAEH,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,kBAAkB,EAAE,IAAI,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CA8IpG"}
|
|
@@ -20,18 +20,20 @@ import { stringify as yamlStringify } from 'yaml';
|
|
|
20
20
|
* @param _config - vibe-validate configuration (unused, kept for API compatibility)
|
|
21
21
|
* @param yaml - If true, output YAML to stdout instead of human-readable text
|
|
22
22
|
*/
|
|
23
|
+
// eslint-disable-next-line sonarjs/cognitive-complexity -- Complexity 36 acceptable for validation state checking (handles multiple output formats, git state retrieval, and comprehensive error scenarios)
|
|
23
24
|
export async function checkValidationStatus(_config, yaml = false) {
|
|
24
25
|
// Get current tree hash
|
|
25
26
|
let currentTreeHash;
|
|
26
27
|
try {
|
|
27
28
|
currentTreeHash = await getGitTreeHash();
|
|
28
29
|
}
|
|
29
|
-
catch (
|
|
30
|
+
catch (error) {
|
|
31
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
30
32
|
if (yaml) {
|
|
31
33
|
// YAML mode: Output structured error
|
|
32
34
|
const errorOutput = {
|
|
33
35
|
exists: false,
|
|
34
|
-
error:
|
|
36
|
+
error: `Not in git repository: ${errorMessage}`,
|
|
35
37
|
};
|
|
36
38
|
process.stdout.write('---\n');
|
|
37
39
|
process.stdout.write(yamlStringify(errorOutput));
|
|
@@ -39,6 +41,7 @@ export async function checkValidationStatus(_config, yaml = false) {
|
|
|
39
41
|
else {
|
|
40
42
|
// Human mode: Colored output
|
|
41
43
|
console.log(chalk.yellow('⚠️ Not in git repository'));
|
|
44
|
+
console.log(chalk.gray(` ${errorMessage}`));
|
|
42
45
|
console.log(chalk.blue('\n💡 Run validation:'), chalk.white('npx vibe-validate validate'));
|
|
43
46
|
}
|
|
44
47
|
process.exit(2);
|
|
@@ -48,13 +51,14 @@ export async function checkValidationStatus(_config, yaml = false) {
|
|
|
48
51
|
try {
|
|
49
52
|
historyNote = await readHistoryNote(currentTreeHash);
|
|
50
53
|
}
|
|
51
|
-
catch (
|
|
54
|
+
catch (error) {
|
|
55
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
52
56
|
if (yaml) {
|
|
53
57
|
// YAML mode: Output structured error
|
|
54
58
|
const errorOutput = {
|
|
55
59
|
exists: false,
|
|
56
60
|
treeHash: currentTreeHash,
|
|
57
|
-
error:
|
|
61
|
+
error: `Failed to read validation history: ${errorMessage}`,
|
|
58
62
|
};
|
|
59
63
|
process.stdout.write('---\n');
|
|
60
64
|
process.stdout.write(yamlStringify(errorOutput));
|
|
@@ -150,7 +154,7 @@ export async function checkValidationStatus(_config, yaml = false) {
|
|
|
150
154
|
console.log(chalk.gray(` Duration: ${durationSecs}s`));
|
|
151
155
|
console.log(chalk.gray(` Branch: ${passingRun.branch}`));
|
|
152
156
|
if (passingRun.result?.phases) {
|
|
153
|
-
const totalSteps = passingRun.result.phases.reduce((sum, phase) => sum + (phase.steps?.length
|
|
157
|
+
const totalSteps = passingRun.result.phases.reduce((sum, phase) => sum + (phase.steps?.length ?? 0), 0);
|
|
154
158
|
console.log(chalk.gray(` Phases: ${passingRun.result.phases.length}, Steps: ${totalSteps}`));
|
|
155
159
|
}
|
|
156
160
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check-validation.js","sourceRoot":"","sources":["../../src/utils/check-validation.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,MAAM,CAAC;AAElD;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,OAA2B,EAAE,IAAI,GAAG,KAAK;IACnF,wBAAwB;IACxB,IAAI,eAAuB,CAAC;IAC5B,IAAI,CAAC;QACH,eAAe,GAAG,MAAM,cAAc,EAAE,CAAC;IAC3C,CAAC;IAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"check-validation.js","sourceRoot":"","sources":["../../src/utils/check-validation.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,9 +17,9 @@ export function formatConfigErrors(details, maxErrors = 5) {
|
|
|
17
17
|
messages.push(chalk.yellow('Validation errors:'));
|
|
18
18
|
// Show up to maxErrors errors
|
|
19
19
|
const errorList = details.errors.slice(0, maxErrors);
|
|
20
|
-
|
|
20
|
+
for (const err of errorList) {
|
|
21
21
|
messages.push(chalk.gray(` • ${err}`));
|
|
22
|
-
}
|
|
22
|
+
}
|
|
23
23
|
if (details.errors.length > maxErrors) {
|
|
24
24
|
messages.push(chalk.gray(` ... and ${details.errors.length - maxErrors} more`));
|
|
25
25
|
}
|
|
@@ -51,10 +51,12 @@ export function displayConfigErrors(details, maxErrors = 5) {
|
|
|
51
51
|
console.error(chalk.red(`❌ Configuration is invalid: ${details.fileName}`));
|
|
52
52
|
console.error();
|
|
53
53
|
const errorMessages = formatConfigErrors(details, maxErrors);
|
|
54
|
-
|
|
54
|
+
for (const msg of errorMessages)
|
|
55
|
+
console.error(msg);
|
|
55
56
|
console.error();
|
|
56
57
|
const suggestions = formatConfigSuggestions();
|
|
57
|
-
|
|
58
|
+
for (const msg of suggestions)
|
|
59
|
+
console.error(msg);
|
|
58
60
|
}
|
|
59
61
|
/**
|
|
60
62
|
* Get error messages as plain strings (for programmatic use)
|
|
@@ -70,9 +72,9 @@ export function getPlainConfigErrors(details, maxErrors = 5) {
|
|
|
70
72
|
const messages = [];
|
|
71
73
|
// Show up to maxErrors errors
|
|
72
74
|
const errorList = details.errors.slice(0, maxErrors);
|
|
73
|
-
|
|
75
|
+
for (const err of errorList) {
|
|
74
76
|
messages.push(` • ${err}`);
|
|
75
|
-
}
|
|
77
|
+
}
|
|
76
78
|
if (details.errors.length > maxErrors) {
|
|
77
79
|
messages.push(` ... and ${details.errors.length - maxErrors} more`);
|
|
78
80
|
}
|
|
@@ -95,7 +97,7 @@ export function formatDoctorConfigError(details, maxErrors = 5) {
|
|
|
95
97
|
const suggestion = [
|
|
96
98
|
'Fix validation errors shown above',
|
|
97
99
|
'See configuration docs: https://github.com/jdutton/vibe-validate/blob/main/docs/configuration-reference.md',
|
|
98
|
-
'JSON Schema for IDE validation: https://raw.githubusercontent.com/jdutton/vibe-validate/main/packages/config/
|
|
100
|
+
'JSON Schema for IDE validation: https://raw.githubusercontent.com/jdutton/vibe-validate/main/packages/config/config.schema.json',
|
|
99
101
|
'Example YAML configs: https://github.com/jdutton/vibe-validate/tree/main/packages/cli/config-templates'
|
|
100
102
|
].join('\n ');
|
|
101
103
|
return { message, suggestion };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-error-reporter.js","sourceRoot":"","sources":["../../src/utils/config-error-reporter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAO1B;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAA2B,EAC3B,YAAoB,CAAC;IAErB,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAElD,8BAA8B;IAC9B,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IACrD,
|
|
1
|
+
{"version":3,"file":"config-error-reporter.js","sourceRoot":"","sources":["../../src/utils/config-error-reporter.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Loads and validates vibe-validate configuration from project root.
|
|
5
5
|
*/
|
|
6
|
-
import { join } from 'path';
|
|
7
|
-
import { existsSync } from 'fs';
|
|
6
|
+
import { join } from 'node:path';
|
|
7
|
+
import { existsSync } from 'node:fs';
|
|
8
8
|
import { findAndLoadConfig } from '@vibe-validate/config';
|
|
9
9
|
import chalk from 'chalk';
|
|
10
10
|
/**
|
|
@@ -69,7 +69,7 @@ export async function loadConfigWithErrors(cwd) {
|
|
|
69
69
|
}
|
|
70
70
|
// Always parse and validate to get detailed errors
|
|
71
71
|
try {
|
|
72
|
-
const { readFileSync } = await import('fs');
|
|
72
|
+
const { readFileSync } = await import('node:fs');
|
|
73
73
|
const { parse: parseYaml } = await import('yaml');
|
|
74
74
|
const { safeValidateConfig } = await import('@vibe-validate/config');
|
|
75
75
|
const content = readFileSync(configPath, 'utf-8');
|
|
@@ -82,13 +82,13 @@ export async function loadConfigWithErrors(cwd) {
|
|
|
82
82
|
if (!validation.success) {
|
|
83
83
|
return {
|
|
84
84
|
config: null,
|
|
85
|
-
errors: validation.errors
|
|
85
|
+
errors: validation.errors ?? ['Unknown validation error'],
|
|
86
86
|
filePath: configPath
|
|
87
87
|
};
|
|
88
88
|
}
|
|
89
89
|
// Validation succeeded
|
|
90
90
|
return {
|
|
91
|
-
config: validation.data
|
|
91
|
+
config: validation.data ?? null,
|
|
92
92
|
errors: null,
|
|
93
93
|
filePath: configPath
|
|
94
94
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-loader.js","sourceRoot":"","sources":["../../src/utils/config-loader.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"config-loader.js","sourceRoot":"","sources":["../../src/utils/config-loader.ts"],"names":[],"mappings":"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"}
|