@vibe-validate/cli 0.14.1 → 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.
- package/README.md +2 -2
- package/config-templates/README.md +1 -1
- package/dist/bin.js +23 -17
- package/dist/bin.js.map +1 -1
- package/dist/commands/cleanup.d.ts.map +1 -1
- package/dist/commands/cleanup.js +32 -19
- package/dist/commands/cleanup.js.map +1 -1
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +23 -12
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +221 -198
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/generate-workflow.d.ts.map +1 -1
- package/dist/commands/generate-workflow.js +22 -12
- package/dist/commands/generate-workflow.js.map +1 -1
- package/dist/commands/history.d.ts.map +1 -1
- package/dist/commands/history.js +46 -34
- package/dist/commands/history.js.map +1 -1
- package/dist/commands/init.js +17 -19
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/pre-commit.d.ts.map +1 -1
- package/dist/commands/pre-commit.js +2 -1
- package/dist/commands/pre-commit.js.map +1 -1
- package/dist/commands/run.d.ts.map +1 -1
- package/dist/commands/run.js +8 -9
- package/dist/commands/run.js.map +1 -1
- package/dist/commands/validate.d.ts.map +1 -1
- package/dist/commands/validate.js +2 -1
- package/dist/commands/validate.js.map +1 -1
- package/dist/commands/watch-pr.d.ts.map +1 -1
- package/dist/commands/watch-pr.js +43 -36
- package/dist/commands/watch-pr.js.map +1 -1
- package/dist/schemas/watch-pr-schema.d.ts +31 -31
- 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-providers/github-actions.d.ts +25 -0
- package/dist/services/ci-providers/github-actions.d.ts.map +1 -1
- package/dist/services/ci-providers/github-actions.js +83 -46
- 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.d.ts +59 -0
- package/dist/utils/config-error-reporter.d.ts.map +1 -0
- package/dist/utils/config-error-reporter.js +105 -0
- package/dist/utils/config-error-reporter.js.map +1 -0
- 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.d.ts.map +1 -1
- package/dist/utils/pid-lock.js +10 -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 +9 -6
- package/dist/utils/project-id.js.map +1 -1
- package/dist/utils/run-validation-with-cache.d.ts +48 -0
- package/dist/utils/run-validation-with-cache.d.ts.map +1 -0
- package/dist/utils/run-validation-with-cache.js +123 -0
- package/dist/utils/run-validation-with-cache.js.map +1 -0
- package/dist/utils/runner-adapter.js +1 -1
- 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/template-discovery.d.ts.map +1 -1
- package/dist/utils/template-discovery.js +13 -19
- 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 +164 -150
- package/dist/utils/validate-workflow.js.map +1 -1
- package/dist/utils/validation-cache.d.ts +30 -0
- package/dist/utils/validation-cache.d.ts.map +1 -0
- package/dist/utils/validation-cache.js +57 -0
- package/dist/utils/validation-cache.js.map +1 -0
- package/package.json +7 -7
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Shared utilities for detecting git configuration (main branch, remote origin).
|
|
5
5
|
* Used by both init and doctor commands.
|
|
6
6
|
*/
|
|
7
|
-
import { execSync } from 'child_process';
|
|
7
|
+
import { execSync } from 'node:child_process';
|
|
8
8
|
import { GIT_DEFAULTS } from '@vibe-validate/config';
|
|
9
9
|
/**
|
|
10
10
|
* Detects git configuration from the current repository.
|
|
@@ -28,6 +28,55 @@ import { GIT_DEFAULTS } from '@vibe-validate/config';
|
|
|
28
28
|
* console.log(gitConfig.detected); // true if detected, false if defaults
|
|
29
29
|
* ```
|
|
30
30
|
*/
|
|
31
|
+
/**
|
|
32
|
+
* Select preferred remote from available remotes
|
|
33
|
+
*/
|
|
34
|
+
function selectPreferredRemote(remotes) {
|
|
35
|
+
if (remotes.includes('upstream')) {
|
|
36
|
+
return 'upstream'; // Forked repo workflow
|
|
37
|
+
}
|
|
38
|
+
if (remotes.includes('origin')) {
|
|
39
|
+
return 'origin'; // Standard workflow
|
|
40
|
+
}
|
|
41
|
+
return remotes[0]; // Use first available
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Detect main branch from remote HEAD
|
|
45
|
+
*/
|
|
46
|
+
function detectMainBranchFromHead(remote) {
|
|
47
|
+
try {
|
|
48
|
+
const headRef = execSync(`git symbolic-ref refs/remotes/${remote}/HEAD`, {
|
|
49
|
+
encoding: 'utf8',
|
|
50
|
+
stdio: 'pipe',
|
|
51
|
+
}).trim();
|
|
52
|
+
return headRef.replace(`refs/remotes/${remote}/`, '');
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Detect main branch from common branch names
|
|
60
|
+
*/
|
|
61
|
+
function detectMainBranchFromRemote(remote) {
|
|
62
|
+
try {
|
|
63
|
+
const branches = execSync(`git ls-remote --heads ${remote}`, {
|
|
64
|
+
encoding: 'utf8',
|
|
65
|
+
stdio: 'pipe',
|
|
66
|
+
}).trim();
|
|
67
|
+
// Check for common main branch names in order of preference
|
|
68
|
+
if (branches.includes('refs/heads/main'))
|
|
69
|
+
return 'main';
|
|
70
|
+
if (branches.includes('refs/heads/master'))
|
|
71
|
+
return 'master';
|
|
72
|
+
if (branches.includes('refs/heads/develop'))
|
|
73
|
+
return 'develop';
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
31
80
|
export function detectGitConfig() {
|
|
32
81
|
const defaults = {
|
|
33
82
|
mainBranch: GIT_DEFAULTS.MAIN_BRANCH,
|
|
@@ -42,68 +91,27 @@ export function detectGitConfig() {
|
|
|
42
91
|
// Not a git repository - use defaults
|
|
43
92
|
return defaults;
|
|
44
93
|
}
|
|
45
|
-
let mainBranch = GIT_DEFAULTS.MAIN_BRANCH;
|
|
46
|
-
let remoteOrigin = GIT_DEFAULTS.REMOTE_ORIGIN;
|
|
47
|
-
let detected = false;
|
|
48
|
-
// Try to detect main branch from remote HEAD
|
|
49
94
|
try {
|
|
50
|
-
//
|
|
95
|
+
// Get list of remotes
|
|
51
96
|
const remotesOutput = execSync('git remote', { encoding: 'utf8', stdio: 'pipe' }).trim();
|
|
52
97
|
const remotes = remotesOutput.split('\n').filter(Boolean);
|
|
53
|
-
if (remotes.length
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
}
|
|
64
|
-
// Try to detect main branch from remote HEAD
|
|
65
|
-
try {
|
|
66
|
-
const headRef = execSync(`git symbolic-ref refs/remotes/${remoteOrigin}/HEAD`, {
|
|
67
|
-
encoding: 'utf8',
|
|
68
|
-
stdio: 'pipe',
|
|
69
|
-
}).trim();
|
|
70
|
-
mainBranch = headRef.replace(`refs/remotes/${remoteOrigin}/`, '');
|
|
71
|
-
detected = true;
|
|
72
|
-
}
|
|
73
|
-
catch {
|
|
74
|
-
// Remote HEAD not set, try to detect from common branch names
|
|
75
|
-
try {
|
|
76
|
-
const branches = execSync(`git ls-remote --heads ${remoteOrigin}`, {
|
|
77
|
-
encoding: 'utf8',
|
|
78
|
-
stdio: 'pipe',
|
|
79
|
-
}).trim();
|
|
80
|
-
// Check for common main branch names in order of preference
|
|
81
|
-
if (branches.includes('refs/heads/main')) {
|
|
82
|
-
mainBranch = 'main';
|
|
83
|
-
detected = true;
|
|
84
|
-
}
|
|
85
|
-
else if (branches.includes('refs/heads/master')) {
|
|
86
|
-
mainBranch = 'master';
|
|
87
|
-
detected = true;
|
|
88
|
-
}
|
|
89
|
-
else if (branches.includes('refs/heads/develop')) {
|
|
90
|
-
mainBranch = 'develop';
|
|
91
|
-
detected = true;
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
catch {
|
|
95
|
-
// Failed to list remote branches - use defaults
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
+
if (remotes.length === 0) {
|
|
99
|
+
return defaults;
|
|
100
|
+
}
|
|
101
|
+
const remoteOrigin = selectPreferredRemote(remotes);
|
|
102
|
+
// Try to detect main branch from remote HEAD
|
|
103
|
+
let mainBranch = detectMainBranchFromHead(remoteOrigin);
|
|
104
|
+
// If HEAD not set, try common branch names
|
|
105
|
+
mainBranch ??= detectMainBranchFromRemote(remoteOrigin);
|
|
106
|
+
// Return detected config or defaults
|
|
107
|
+
if (mainBranch) {
|
|
108
|
+
return { mainBranch, remoteOrigin, detected: true };
|
|
98
109
|
}
|
|
110
|
+
return { mainBranch: GIT_DEFAULTS.MAIN_BRANCH, remoteOrigin, detected: false };
|
|
99
111
|
}
|
|
100
112
|
catch {
|
|
101
113
|
// Failed to detect - use defaults
|
|
114
|
+
return defaults;
|
|
102
115
|
}
|
|
103
|
-
return {
|
|
104
|
-
mainBranch,
|
|
105
|
-
remoteOrigin,
|
|
106
|
-
detected,
|
|
107
|
-
};
|
|
108
116
|
}
|
|
109
117
|
//# sourceMappingURL=git-detection.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-detection.js","sourceRoot":"","sources":["../../src/utils/git-detection.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"git-detection.js","sourceRoot":"","sources":["../../src/utils/git-detection.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pid-lock.d.ts","sourceRoot":"","sources":["../../src/utils/pid-lock.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,kCAAkC;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,6BAA6B;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,gDAAgD;IAChD,QAAQ,EAAE,MAAM,CAAC;IACjB,2CAA2C;IAC3C,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,6CAA6C;IAC7C,QAAQ,EAAE,OAAO,CAAC;IAClB,wBAAwB;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,8DAA8D;IAC9D,YAAY,CAAC,EAAE,QAAQ,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;OAIG;IACH,KAAK,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IAChC;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;
|
|
1
|
+
{"version":3,"file":"pid-lock.d.ts","sourceRoot":"","sources":["../../src/utils/pid-lock.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,kCAAkC;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,6BAA6B;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,gDAAgD;IAChD,QAAQ,EAAE,MAAM,CAAC;IACjB,2CAA2C;IAC3C,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,6CAA6C;IAC7C,QAAQ,EAAE,OAAO,CAAC;IAClB,wBAAwB;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,8DAA8D;IAC9D,YAAY,CAAC,EAAE,QAAQ,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;OAIG;IACH,KAAK,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IAChC;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA+DD;;;;;;;;;;;GAWG;AACH,wBAAsB,WAAW,CAC/B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,UAAU,CAAC,CA0CrB;AAED;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAIjE;AAED;;;;;;;;;GASG;AACH,wBAAsB,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAwBtG;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,WAAW,CAC/B,SAAS,EAAE,MAAM,EACjB,cAAc,GAAE,MAAY,EAC5B,cAAc,GAAE,MAAa,EAC7B,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,QAAQ,GAAG,IAAI,CAAA;CAAE,CAAC,CA6B/E"}
|
package/dist/utils/pid-lock.js
CHANGED
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
* Prevents concurrent validation runs using PID file mechanism.
|
|
5
5
|
* Cross-platform (Node.js), works on Windows, macOS, Linux.
|
|
6
6
|
*/
|
|
7
|
-
import { readFileSync, writeFileSync, unlinkSync, existsSync } from 'fs';
|
|
8
|
-
import { tmpdir } from 'os';
|
|
9
|
-
import { join } from 'path';
|
|
7
|
+
import { readFileSync, writeFileSync, unlinkSync, existsSync } from 'node:fs';
|
|
8
|
+
import { tmpdir } from 'node:os';
|
|
9
|
+
import { join } from 'node:path';
|
|
10
10
|
/**
|
|
11
11
|
* Encode directory path for use in lock file name
|
|
12
12
|
*
|
|
@@ -58,8 +58,9 @@ function isProcessRunning(pid) {
|
|
|
58
58
|
process.kill(pid, 0);
|
|
59
59
|
return true;
|
|
60
60
|
}
|
|
61
|
-
catch (
|
|
62
|
-
// ESRCH = no such process
|
|
61
|
+
catch (err) {
|
|
62
|
+
// ESRCH = no such process - expected when process doesn't exist
|
|
63
|
+
console.debug(`Process ${pid} check failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
63
64
|
return false;
|
|
64
65
|
}
|
|
65
66
|
}
|
|
@@ -94,8 +95,9 @@ export async function acquireLock(directory, treeHash, options = {}) {
|
|
|
94
95
|
// Clean it up and proceed
|
|
95
96
|
unlinkSync(lockFile);
|
|
96
97
|
}
|
|
97
|
-
catch (
|
|
98
|
+
catch (err) {
|
|
98
99
|
// Corrupted lock file - remove and proceed
|
|
100
|
+
console.debug(`Lock file corrupted, removing: ${err instanceof Error ? err.message : String(err)}`);
|
|
99
101
|
unlinkSync(lockFile);
|
|
100
102
|
}
|
|
101
103
|
}
|
|
@@ -150,8 +152,9 @@ export async function checkLock(directory, options = {}) {
|
|
|
150
152
|
unlinkSync(lockFile);
|
|
151
153
|
return null;
|
|
152
154
|
}
|
|
153
|
-
catch (
|
|
155
|
+
catch (err) {
|
|
154
156
|
// Corrupted lock file - clean up
|
|
157
|
+
console.debug(`Lock file corrupted, removing: ${err instanceof Error ? err.message : String(err)}`);
|
|
155
158
|
unlinkSync(lockFile);
|
|
156
159
|
return null;
|
|
157
160
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pid-lock.js","sourceRoot":"","sources":["../../src/utils/pid-lock.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"pid-lock.js","sourceRoot":"","sources":["../../src/utils/pid-lock.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-id.d.ts","sourceRoot":"","sources":["../../src/utils/project-id.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"project-id.d.ts","sourceRoot":"","sources":["../../src/utils/project-id.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA8BH;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,GAAE,MAAsB,GAAG,MAAM,GAAG,IAAI,CAmB9E;AAED;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B,CAAC,GAAG,GAAE,MAAsB,GAAG,MAAM,GAAG,IAAI,CAqBtF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,GAAG,GAAE,MAAsB,GAAG,MAAM,GAAG,IAAI,CAe1E"}
|
package/dist/utils/project-id.js
CHANGED
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
* Used when locking.concurrencyScope=project to ensure
|
|
6
6
|
* multiple directories (worktrees, clones) share the same lock.
|
|
7
7
|
*/
|
|
8
|
-
import { execSync } from 'child_process';
|
|
9
|
-
import { readFileSync, existsSync } from 'fs';
|
|
10
|
-
import { join } from 'path';
|
|
8
|
+
import { execSync } from 'node:child_process';
|
|
9
|
+
import { readFileSync, existsSync } from 'node:fs';
|
|
10
|
+
import { join } from 'node:path';
|
|
11
11
|
/**
|
|
12
12
|
* Extract project name from git remote URL
|
|
13
13
|
*
|
|
@@ -25,7 +25,8 @@ function extractProjectFromGitUrl(remoteUrl) {
|
|
|
25
25
|
// Extract repo name from various formats
|
|
26
26
|
// HTTPS: https://github.com/user/repo
|
|
27
27
|
// SSH: git@github.com:user/repo
|
|
28
|
-
|
|
28
|
+
// eslint-disable-next-line sonarjs/slow-regex -- Safe: [^/]+ is a negated character class (no backtracking), only parses git remote URLs (controlled input)
|
|
29
|
+
const match = /[/:]([^/]+)$/.exec(cleaned);
|
|
29
30
|
return match ? match[1] : null;
|
|
30
31
|
}
|
|
31
32
|
/**
|
|
@@ -50,8 +51,9 @@ export function getProjectIdFromGit(cwd = process.cwd()) {
|
|
|
50
51
|
}
|
|
51
52
|
return extractProjectFromGitUrl(remoteUrl);
|
|
52
53
|
}
|
|
53
|
-
catch (
|
|
54
|
+
catch (err) {
|
|
54
55
|
// Not a git repo or no remote configured
|
|
56
|
+
console.debug(`Failed to get project from git: ${err instanceof Error ? err.message : String(err)}`);
|
|
55
57
|
return null;
|
|
56
58
|
}
|
|
57
59
|
}
|
|
@@ -78,7 +80,8 @@ export function getProjectIdFromPackageJson(cwd = process.cwd()) {
|
|
|
78
80
|
// Remove scope prefix (@scope/package → package)
|
|
79
81
|
return name.replace(/^@[^/]+\//, '');
|
|
80
82
|
}
|
|
81
|
-
catch (
|
|
83
|
+
catch (err) {
|
|
84
|
+
console.debug(`Failed to get project from package.json: ${err instanceof Error ? err.message : String(err)}`);
|
|
82
85
|
return null;
|
|
83
86
|
}
|
|
84
87
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-id.js","sourceRoot":"","sources":["../../src/utils/project-id.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"project-id.js","sourceRoot":"","sources":["../../src/utils/project-id.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Run Validation with Caching
|
|
3
|
+
*
|
|
4
|
+
* Shared workflow for running validation with git tree hash caching.
|
|
5
|
+
* Used by both validate and pre-commit commands to ensure consistent behavior.
|
|
6
|
+
*/
|
|
7
|
+
import type { ValidationResult, ValidationConfig } from '@vibe-validate/core';
|
|
8
|
+
export interface ValidationWorkflowOptions {
|
|
9
|
+
/** Runner configuration for validation */
|
|
10
|
+
runnerConfig: ValidationConfig;
|
|
11
|
+
/** Force validation even if cached */
|
|
12
|
+
force?: boolean;
|
|
13
|
+
/** Show verbose output */
|
|
14
|
+
verbose?: boolean;
|
|
15
|
+
/** Callback for displaying cache hit information */
|
|
16
|
+
onCacheHit?: (info: {
|
|
17
|
+
treeHash: string;
|
|
18
|
+
timestamp: string;
|
|
19
|
+
duration: number;
|
|
20
|
+
branch: string;
|
|
21
|
+
result: ValidationResult;
|
|
22
|
+
}) => void;
|
|
23
|
+
}
|
|
24
|
+
export interface ValidationWorkflowResult {
|
|
25
|
+
/** Validation result */
|
|
26
|
+
result: ValidationResult;
|
|
27
|
+
/** Whether result was from cache */
|
|
28
|
+
fromCache: boolean;
|
|
29
|
+
/** Git tree hash (if in git repo) */
|
|
30
|
+
treeHash: string | null;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Run validation with full git tree hash caching workflow.
|
|
34
|
+
*
|
|
35
|
+
* This is the complete workflow used by both validate and pre-commit commands:
|
|
36
|
+
* 1. Get git tree hash
|
|
37
|
+
* 2. Check cache (git notes)
|
|
38
|
+
* 3. If cache hit: return cached result
|
|
39
|
+
* 4. If cache miss: run validation
|
|
40
|
+
* 5. Record result to git notes
|
|
41
|
+
* 6. Check worktree stability
|
|
42
|
+
* 7. Run health checks
|
|
43
|
+
*
|
|
44
|
+
* @param options - Validation workflow options
|
|
45
|
+
* @returns Validation workflow result
|
|
46
|
+
*/
|
|
47
|
+
export declare function runValidationWithCache(options: ValidationWorkflowOptions): Promise<ValidationWorkflowResult>;
|
|
48
|
+
//# sourceMappingURL=run-validation-with-cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-validation-with-cache.d.ts","sourceRoot":"","sources":["../../src/utils/run-validation-with-cache.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAG9E,MAAM,WAAW,yBAAyB;IACxC,0CAA0C;IAC1C,YAAY,EAAE,gBAAgB,CAAC;IAE/B,sCAAsC;IACtC,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,0BAA0B;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,oDAAoD;IACpD,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,gBAAgB,CAAC;KAC1B,KAAK,IAAI,CAAC;CACZ;AAED,MAAM,WAAW,wBAAwB;IACvC,wBAAwB;IACxB,MAAM,EAAE,gBAAgB,CAAC;IAEzB,oCAAoC;IACpC,SAAS,EAAE,OAAO,CAAC;IAEnB,qCAAqC;IACrC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,yBAAyB,GACjC,OAAO,CAAC,wBAAwB,CAAC,CAqGnC"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Run Validation with Caching
|
|
3
|
+
*
|
|
4
|
+
* Shared workflow for running validation with git tree hash caching.
|
|
5
|
+
* Used by both validate and pre-commit commands to ensure consistent behavior.
|
|
6
|
+
*/
|
|
7
|
+
import { runValidation } from '@vibe-validate/core';
|
|
8
|
+
import { getGitTreeHash } from '@vibe-validate/git';
|
|
9
|
+
import { recordValidationHistory, checkWorktreeStability, checkHistoryHealth, readHistoryNote, } from '@vibe-validate/history';
|
|
10
|
+
import chalk from 'chalk';
|
|
11
|
+
/**
|
|
12
|
+
* Run validation with full git tree hash caching workflow.
|
|
13
|
+
*
|
|
14
|
+
* This is the complete workflow used by both validate and pre-commit commands:
|
|
15
|
+
* 1. Get git tree hash
|
|
16
|
+
* 2. Check cache (git notes)
|
|
17
|
+
* 3. If cache hit: return cached result
|
|
18
|
+
* 4. If cache miss: run validation
|
|
19
|
+
* 5. Record result to git notes
|
|
20
|
+
* 6. Check worktree stability
|
|
21
|
+
* 7. Run health checks
|
|
22
|
+
*
|
|
23
|
+
* @param options - Validation workflow options
|
|
24
|
+
* @returns Validation workflow result
|
|
25
|
+
*/
|
|
26
|
+
export async function runValidationWithCache(options) {
|
|
27
|
+
const { runnerConfig, force = false, verbose = false, onCacheHit } = options;
|
|
28
|
+
// Get tree hash BEFORE validation (for caching and stability check)
|
|
29
|
+
let treeHashBefore = null;
|
|
30
|
+
try {
|
|
31
|
+
treeHashBefore = await getGitTreeHash();
|
|
32
|
+
}
|
|
33
|
+
catch (_error) {
|
|
34
|
+
// Not in git repo or git command failed - continue without history
|
|
35
|
+
if (verbose) {
|
|
36
|
+
console.warn(chalk.yellow('⚠️ Could not get git tree hash - history recording disabled'));
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
// Check cache: if validation already passed for this tree hash, skip re-running
|
|
40
|
+
if (treeHashBefore && !force) {
|
|
41
|
+
try {
|
|
42
|
+
const historyNote = await readHistoryNote(treeHashBefore);
|
|
43
|
+
if (historyNote && historyNote.runs.length > 0) {
|
|
44
|
+
// Find most recent passing run
|
|
45
|
+
const passingRun = [...historyNote.runs]
|
|
46
|
+
.reverse()
|
|
47
|
+
.find(run => run.passed);
|
|
48
|
+
if (passingRun && passingRun.result) {
|
|
49
|
+
// Cache hit! Call callback if provided
|
|
50
|
+
if (onCacheHit) {
|
|
51
|
+
onCacheHit({
|
|
52
|
+
treeHash: treeHashBefore,
|
|
53
|
+
timestamp: passingRun.timestamp,
|
|
54
|
+
duration: passingRun.duration,
|
|
55
|
+
branch: passingRun.branch,
|
|
56
|
+
result: passingRun.result,
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
return {
|
|
60
|
+
result: passingRun.result,
|
|
61
|
+
fromCache: true,
|
|
62
|
+
treeHash: treeHashBefore,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
catch (_error) {
|
|
68
|
+
// Cache check failed - proceed with validation
|
|
69
|
+
// This is expected for first-time validation
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
// Cache miss - run validation
|
|
73
|
+
const result = await runValidation(runnerConfig);
|
|
74
|
+
// Record validation history (if in git repo and stability check passes)
|
|
75
|
+
if (treeHashBefore) {
|
|
76
|
+
try {
|
|
77
|
+
// Check if worktree changed during validation
|
|
78
|
+
const stability = await checkWorktreeStability(treeHashBefore);
|
|
79
|
+
if (!stability.stable) {
|
|
80
|
+
console.warn(chalk.yellow('\n⚠️ Worktree changed during validation'));
|
|
81
|
+
console.warn(chalk.yellow(` Before: ${stability.treeHashBefore.slice(0, 12)}...`));
|
|
82
|
+
console.warn(chalk.yellow(` After: ${stability.treeHashAfter.slice(0, 12)}...`));
|
|
83
|
+
console.warn(chalk.yellow(' Results valid but history not recorded (unstable state)'));
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
// Record to git notes
|
|
87
|
+
const recordResult = await recordValidationHistory(treeHashBefore, result);
|
|
88
|
+
if (recordResult.recorded) {
|
|
89
|
+
if (verbose) {
|
|
90
|
+
console.log(chalk.gray(`\n📝 History recorded (tree: ${treeHashBefore.slice(0, 12)})`));
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
else if (verbose) {
|
|
94
|
+
console.warn(chalk.yellow(`⚠️ History recording failed: ${recordResult.reason}`));
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
catch (error) {
|
|
99
|
+
// Silent failure - don't block validation
|
|
100
|
+
if (verbose) {
|
|
101
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
102
|
+
console.warn(chalk.yellow(`⚠️ History recording error: ${errorMessage}`));
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
// Proactive health check (non-blocking)
|
|
107
|
+
try {
|
|
108
|
+
const health = await checkHistoryHealth();
|
|
109
|
+
if (health.shouldWarn) {
|
|
110
|
+
console.log('');
|
|
111
|
+
console.log(chalk.blue(health.warningMessage));
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
catch {
|
|
115
|
+
// Silent failure - don't block validation
|
|
116
|
+
}
|
|
117
|
+
return {
|
|
118
|
+
result,
|
|
119
|
+
fromCache: false,
|
|
120
|
+
treeHash: treeHashBefore,
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=run-validation-with-cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-validation-with-cache.js","sourceRoot":"","sources":["../../src/utils/run-validation-with-cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,7 +24,7 @@ export function createRunnerConfig(config, options) {
|
|
|
24
24
|
? createVerboseCallbacks(options.yaml)
|
|
25
25
|
: createMinimalCallbacks(options.yaml);
|
|
26
26
|
return {
|
|
27
|
-
phases: config.validation?.phases
|
|
27
|
+
phases: (config.validation?.phases ?? []),
|
|
28
28
|
enableFailFast: true, // Default to fail-fast (individual phases can override)
|
|
29
29
|
verbose: options.verbose, // Pass verbose flag to runner for output streaming
|
|
30
30
|
yaml: options.yaml, // Pass yaml flag to runner for stdout/stderr routing
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner-adapter.js","sourceRoot":"","sources":["../../src/utils/runner-adapter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,MAAM,OAAO,CAAC;AAS1B;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAChC,MAA0B,EAC1B,OAAsB;IAEtB,kFAAkF;IAClF,MAAM,OAAO,GAA2B,EAAE,CAAC;IAC3C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACvD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACvB,CAAC;IACH,CAAC;IAED,sCAAsC;IACtC,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO;QAC/B,CAAC,CAAC,sBAAsB,CAAC,OAAO,CAAC,IAAI,CAAC;QACtC,CAAC,CAAC,sBAAsB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzC,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,IAAI,EAAE;
|
|
1
|
+
{"version":3,"file":"runner-adapter.js","sourceRoot":"","sources":["../../src/utils/runner-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,9 +8,9 @@
|
|
|
8
8
|
* Note: This check does NOT install husky as a dependency. Users should
|
|
9
9
|
* install husky manually via `npm install -D husky` or `pnpm add -D husky`.
|
|
10
10
|
*/
|
|
11
|
-
import { readFile, writeFile, mkdir, chmod } from 'fs/promises';
|
|
12
|
-
import { existsSync } from 'fs';
|
|
13
|
-
import { join } from 'path';
|
|
11
|
+
import { readFile, writeFile, mkdir, chmod } from 'node:fs/promises';
|
|
12
|
+
import { existsSync } from 'node:fs';
|
|
13
|
+
import { join } from 'node:path';
|
|
14
14
|
const VIBE_VALIDATE_COMMAND = 'npx vibe-validate pre-commit';
|
|
15
15
|
export class HooksSetupCheck {
|
|
16
16
|
id = 'hooks';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks-check.js","sourceRoot":"","sources":["../../../src/utils/setup-checks/hooks-check.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"hooks-check.js","sourceRoot":"","sources":["../../../src/utils/setup-checks/hooks-check.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,9 +7,9 @@
|
|
|
7
7
|
* This check reuses the existing workflow generation logic from the
|
|
8
8
|
* generate-workflow command to create a standard GitHub Actions workflow.
|
|
9
9
|
*/
|
|
10
|
-
import { writeFile, mkdir } from 'fs/promises';
|
|
11
|
-
import { existsSync } from 'fs';
|
|
12
|
-
import { join } from 'path';
|
|
10
|
+
import { writeFile, mkdir } from 'node:fs/promises';
|
|
11
|
+
import { existsSync } from 'node:fs';
|
|
12
|
+
import { join } from 'node:path';
|
|
13
13
|
import { generateWorkflow } from '../../commands/generate-workflow.js';
|
|
14
14
|
import { loadConfig } from '../config-loader.js';
|
|
15
15
|
export class WorkflowSetupCheck {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-check.js","sourceRoot":"","sources":["../../../src/utils/setup-checks/workflow-check.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"workflow-check.js","sourceRoot":"","sources":["../../../src/utils/setup-checks/workflow-check.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template-discovery.d.ts","sourceRoot":"","sources":["../../src/utils/template-discovery.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,yDAAyD;IACzD,QAAQ,EAAE,MAAM,CAAC;IACjB,kFAAkF;IAClF,WAAW,EAAE,MAAM,CAAC;IACpB,mGAAmG;IACnG,WAAW,EAAE,MAAM,CAAC;CACrB;
|
|
1
|
+
{"version":3,"file":"template-discovery.d.ts","sourceRoot":"","sources":["../../src/utils/template-discovery.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,yDAAyD;IACzD,QAAQ,EAAE,MAAM,CAAC;IACjB,kFAAkF;IAClF,WAAW,EAAE,MAAM,CAAC;IACpB,mGAAmG;IACnG,WAAW,EAAE,MAAM,CAAC;CACrB;AA6ED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,IAAI,gBAAgB,EAAE,CAuBtD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,EAAE,CAa7C"}
|