@vibe-validate/cli 0.18.3-rc.1 → 0.18.4-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/dist/commands/history.d.ts.map +1 -1
- package/dist/commands/history.js +15 -7
- package/dist/commands/history.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +20 -11
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/pre-commit.d.ts.map +1 -1
- package/dist/commands/pre-commit.js +46 -29
- package/dist/commands/pre-commit.js.map +1 -1
- package/dist/commands/snapshot.d.ts.map +1 -1
- package/dist/commands/snapshot.js +26 -17
- package/dist/commands/snapshot.js.map +1 -1
- package/dist/commands/state.d.ts.map +1 -1
- package/dist/commands/state.js +3 -1
- package/dist/commands/state.js.map +1 -1
- package/dist/commands/validate.d.ts.map +1 -1
- package/dist/commands/validate.js +17 -134
- package/dist/commands/validate.js.map +1 -1
- package/dist/services/watch-pr-orchestrator.d.ts +8 -0
- package/dist/services/watch-pr-orchestrator.d.ts.map +1 -1
- package/dist/services/watch-pr-orchestrator.js +29 -18
- package/dist/services/watch-pr-orchestrator.js.map +1 -1
- package/dist/utils/check-validation.d.ts.map +1 -1
- package/dist/utils/check-validation.js +26 -11
- package/dist/utils/check-validation.js.map +1 -1
- package/dist/utils/pid-lock.d.ts +27 -28
- package/dist/utils/pid-lock.d.ts.map +1 -1
- package/dist/utils/pid-lock.js +178 -92
- package/dist/utils/pid-lock.js.map +1 -1
- package/dist/utils/temp-files.d.ts +12 -12
- package/dist/utils/temp-files.d.ts.map +1 -1
- package/dist/utils/temp-files.js +67 -36
- package/dist/utils/temp-files.js.map +1 -1
- package/dist/utils/validation-lock-wrapper.d.ts +62 -0
- package/dist/utils/validation-lock-wrapper.d.ts.map +1 -0
- package/dist/utils/validation-lock-wrapper.js +186 -0
- package/dist/utils/validation-lock-wrapper.js.map +1 -0
- package/package.json +9 -7
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validation Lock Wrapper
|
|
3
|
+
*
|
|
4
|
+
* Provides a reusable locking mechanism for validation workflows.
|
|
5
|
+
* Extracts the locking logic from validate.ts to enable consistent
|
|
6
|
+
* lock management across commands (validate, pre-commit, etc.).
|
|
7
|
+
*/
|
|
8
|
+
import { getGitTreeHash } from '@vibe-validate/git';
|
|
9
|
+
import chalk from 'chalk';
|
|
10
|
+
import { displayConfigErrors } from './config-error-reporter.js';
|
|
11
|
+
import { loadConfigWithErrors, loadConfigWithDir } from './config-loader.js';
|
|
12
|
+
import { detectContext } from './context-detector.js';
|
|
13
|
+
import { acquireLock, checkLock, waitForLock, } from './pid-lock.js';
|
|
14
|
+
import { detectProjectId } from './project-id.js';
|
|
15
|
+
/**
|
|
16
|
+
* Display the result of waiting for validation lock
|
|
17
|
+
*
|
|
18
|
+
* @param timedOut - Whether the wait timed out
|
|
19
|
+
* @param yamlMode - Whether in YAML output mode
|
|
20
|
+
*/
|
|
21
|
+
function displayWaitResult(timedOut, yamlMode) {
|
|
22
|
+
if (yamlMode)
|
|
23
|
+
return; // No output in YAML mode
|
|
24
|
+
if (timedOut) {
|
|
25
|
+
console.log(chalk.yellow('⏱️ Wait timed out, proceeding with validation'));
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
console.log(chalk.green('✓ Background validation completed'));
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Display information about existing validation lock
|
|
33
|
+
*
|
|
34
|
+
* @param existingLock - The existing lock information
|
|
35
|
+
* @param currentTreeHash - Current git tree hash
|
|
36
|
+
* @param yamlMode - Whether in YAML output mode
|
|
37
|
+
*/
|
|
38
|
+
function displayExistingLockInfo(existingLock, currentTreeHash, yamlMode) {
|
|
39
|
+
if (yamlMode)
|
|
40
|
+
return; // No output in YAML mode
|
|
41
|
+
const isCurrentHash = existingLock.treeHash === currentTreeHash;
|
|
42
|
+
const hashStatus = isCurrentHash
|
|
43
|
+
? 'same as current'
|
|
44
|
+
: `stale - current is ${currentTreeHash.substring(0, 7)}`;
|
|
45
|
+
const elapsed = Math.floor((Date.now() - new Date(existingLock.startTime).getTime()) / 1000);
|
|
46
|
+
const elapsedStr = elapsed < 60
|
|
47
|
+
? `${elapsed} seconds ago`
|
|
48
|
+
: `${Math.floor(elapsed / 60)} minutes ago`;
|
|
49
|
+
console.log(chalk.yellow('⚠️ Validation already running'));
|
|
50
|
+
console.log(` Directory: ${existingLock.directory}`);
|
|
51
|
+
console.log(` Tree Hash: ${existingLock.treeHash.substring(0, 7)} (${hashStatus})`);
|
|
52
|
+
console.log(` PID: ${existingLock.pid}`);
|
|
53
|
+
console.log(` Started: ${elapsedStr}`);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Execute a callback with validation lock management
|
|
57
|
+
*
|
|
58
|
+
* This function handles the complete locking workflow:
|
|
59
|
+
* 1. Load configuration with directory detection
|
|
60
|
+
* 2. Detect agent context
|
|
61
|
+
* 3. Determine lock options from config
|
|
62
|
+
* 4. Wait for existing locks (if enabled)
|
|
63
|
+
* 5. Acquire lock (if enabled)
|
|
64
|
+
* 6. Execute callback with context
|
|
65
|
+
* 7. Release lock in finally block
|
|
66
|
+
*
|
|
67
|
+
* @param options - Lock options
|
|
68
|
+
* @param callback - Function to execute with lock held
|
|
69
|
+
* @returns Result from callback
|
|
70
|
+
*
|
|
71
|
+
* @example
|
|
72
|
+
* ```typescript
|
|
73
|
+
* await withValidationLock(
|
|
74
|
+
* { lockEnabled: true, waitEnabled: true },
|
|
75
|
+
* async ({ config, configDir, context }) => {
|
|
76
|
+
* // Run validation workflow
|
|
77
|
+
* return runValidateWorkflow(config, options);
|
|
78
|
+
* }
|
|
79
|
+
* );
|
|
80
|
+
* ```
|
|
81
|
+
*/
|
|
82
|
+
// eslint-disable-next-line sonarjs/cognitive-complexity -- Complexity 26 acceptable for validation lock wrapper (orchestrates config, context, locking, wait, and acquire logic)
|
|
83
|
+
export async function withValidationLock(options, callback) {
|
|
84
|
+
let lockRelease = null;
|
|
85
|
+
try {
|
|
86
|
+
// Load configuration first (needed for lock config)
|
|
87
|
+
// Use loadConfigWithDir to get config directory for locking
|
|
88
|
+
const configResult = await loadConfigWithDir();
|
|
89
|
+
if (!configResult) {
|
|
90
|
+
// Get detailed error information to distinguish between missing file and validation errors
|
|
91
|
+
const configWithErrors = await loadConfigWithErrors();
|
|
92
|
+
if (configWithErrors.errors && configWithErrors.filePath) {
|
|
93
|
+
// Config file exists but has validation errors
|
|
94
|
+
const fileName = configWithErrors.filePath.split('/').pop() ?? 'vibe-validate.config.yaml';
|
|
95
|
+
displayConfigErrors({
|
|
96
|
+
fileName,
|
|
97
|
+
errors: configWithErrors.errors
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
// Config file doesn't exist
|
|
102
|
+
console.error(chalk.red('❌ No configuration found'));
|
|
103
|
+
}
|
|
104
|
+
process.exit(1);
|
|
105
|
+
}
|
|
106
|
+
const { config, configDir } = configResult;
|
|
107
|
+
// Detect context (Claude Code, CI, etc.)
|
|
108
|
+
const context = detectContext();
|
|
109
|
+
// Determine lock options from config
|
|
110
|
+
const lockConfig = config.locking ?? { enabled: true, concurrencyScope: 'directory' };
|
|
111
|
+
// Determine if locking should be enabled
|
|
112
|
+
let shouldLock = options.lockEnabled ?? true;
|
|
113
|
+
// If config disables locking, override CLI flag
|
|
114
|
+
if (!lockConfig.enabled) {
|
|
115
|
+
shouldLock = false;
|
|
116
|
+
}
|
|
117
|
+
let lockOptions = {};
|
|
118
|
+
if (lockConfig.concurrencyScope === 'project') {
|
|
119
|
+
// Project-scoped locking - need projectId
|
|
120
|
+
const projectId = lockConfig.projectId ?? detectProjectId();
|
|
121
|
+
if (!projectId) {
|
|
122
|
+
console.error(chalk.red('❌ ERROR: concurrencyScope=project but projectId cannot be detected'));
|
|
123
|
+
console.error(chalk.yellow('Solutions:'));
|
|
124
|
+
console.error(' 1. Add locking.projectId to vibe-validate.config.yaml');
|
|
125
|
+
console.error(' 2. Ensure git remote is configured');
|
|
126
|
+
console.error(' 3. Ensure package.json has name field');
|
|
127
|
+
process.exit(1);
|
|
128
|
+
}
|
|
129
|
+
lockOptions = { scope: 'project', projectId };
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
// Directory-scoped locking (default)
|
|
133
|
+
lockOptions = { scope: 'directory' };
|
|
134
|
+
}
|
|
135
|
+
// Default behavior: wait is enabled (wait for running validation)
|
|
136
|
+
// Users can opt out with waitEnabled: false for background hooks
|
|
137
|
+
const shouldWait = options.waitEnabled !== false;
|
|
138
|
+
const yamlMode = options.yaml ?? false;
|
|
139
|
+
// Handle wait mode (default: wait for running validation to complete)
|
|
140
|
+
if (shouldWait) {
|
|
141
|
+
// Use config directory for lock (not process.cwd()) - ensures same lock regardless of invocation directory
|
|
142
|
+
const existingLock = await checkLock(configDir, lockOptions);
|
|
143
|
+
if (existingLock) {
|
|
144
|
+
const waitTimeout = options.waitTimeout ?? 300;
|
|
145
|
+
if (!yamlMode) {
|
|
146
|
+
console.log(chalk.yellow('⏳ Waiting for running validation to complete...'));
|
|
147
|
+
console.log(` PID: ${existingLock.pid}`);
|
|
148
|
+
console.log(` Started: ${new Date(existingLock.startTime).toLocaleTimeString()}`);
|
|
149
|
+
console.log(` Timeout: ${waitTimeout}s`);
|
|
150
|
+
}
|
|
151
|
+
const waitResult = await waitForLock(configDir, waitTimeout, 1000, lockOptions);
|
|
152
|
+
displayWaitResult(waitResult.timedOut, yamlMode);
|
|
153
|
+
}
|
|
154
|
+
// If no lock exists, proceed normally
|
|
155
|
+
}
|
|
156
|
+
// Handle lock mode (single-instance execution)
|
|
157
|
+
if (shouldLock) {
|
|
158
|
+
// Use config directory for lock (not process.cwd()) - ensures same lock regardless of invocation directory
|
|
159
|
+
const treeHash = await getGitTreeHash();
|
|
160
|
+
const lockResult = await acquireLock(configDir, treeHash, lockOptions);
|
|
161
|
+
if (!lockResult.acquired && lockResult.existingLock) {
|
|
162
|
+
// Another validation is already running
|
|
163
|
+
// If --no-wait specified, exit immediately (for background hooks)
|
|
164
|
+
if (!shouldWait) {
|
|
165
|
+
displayExistingLockInfo(lockResult.existingLock, treeHash, yamlMode);
|
|
166
|
+
process.exit(0); // Exit 0 to not trigger errors in hooks
|
|
167
|
+
}
|
|
168
|
+
// If wait is enabled (default), the wait logic above already handled it
|
|
169
|
+
// Just don't try to acquire lock again
|
|
170
|
+
}
|
|
171
|
+
else if (lockResult.release) {
|
|
172
|
+
// Lock acquired successfully - store release function
|
|
173
|
+
lockRelease = lockResult.release;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
// Execute callback with context
|
|
177
|
+
return await callback({ config, configDir, context });
|
|
178
|
+
}
|
|
179
|
+
finally {
|
|
180
|
+
// Always release lock when done
|
|
181
|
+
if (lockRelease) {
|
|
182
|
+
await lockRelease();
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
//# sourceMappingURL=validation-lock-wrapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation-lock-wrapper.js","sourceRoot":"","sources":["../../src/utils/validation-lock-wrapper.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vibe-validate/cli",
|
|
3
|
-
"version": "0.18.
|
|
3
|
+
"version": "0.18.4-rc.1",
|
|
4
4
|
"description": "Command-line interface for vibe-validate validation framework",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -59,23 +59,25 @@
|
|
|
59
59
|
"chalk": "^5.6.2",
|
|
60
60
|
"commander": "^12.1.0",
|
|
61
61
|
"prompts": "^2.4.2",
|
|
62
|
+
"proper-lockfile": "^4.1.2",
|
|
62
63
|
"semver": "^7.7.3",
|
|
63
64
|
"yaml": "^2.8.2",
|
|
64
65
|
"zod": "^3.25.76",
|
|
65
66
|
"zod-to-json-schema": "^3.25.0",
|
|
66
|
-
"@vibe-validate/config": "0.18.
|
|
67
|
-
"@vibe-validate/core": "0.18.
|
|
68
|
-
"@vibe-validate/
|
|
69
|
-
"@vibe-validate/
|
|
70
|
-
"@vibe-validate/
|
|
67
|
+
"@vibe-validate/config": "0.18.4-rc.1",
|
|
68
|
+
"@vibe-validate/core": "0.18.4-rc.1",
|
|
69
|
+
"@vibe-validate/extractors": "0.18.4-rc.1",
|
|
70
|
+
"@vibe-validate/history": "0.18.4-rc.1",
|
|
71
|
+
"@vibe-validate/git": "0.18.4-rc.1"
|
|
71
72
|
},
|
|
72
73
|
"devDependencies": {
|
|
73
74
|
"@types/node": "^20.19.26",
|
|
74
75
|
"@types/prompts": "^2.4.9",
|
|
76
|
+
"@types/proper-lockfile": "^4.1.4",
|
|
75
77
|
"@types/semver": "^7.7.1",
|
|
76
78
|
"typescript": "^5.9.3",
|
|
77
79
|
"vitest": "^2.1.9",
|
|
78
|
-
"@vibe-validate/utils": "0.18.
|
|
80
|
+
"@vibe-validate/utils": "0.18.4-rc.1"
|
|
79
81
|
},
|
|
80
82
|
"scripts": {
|
|
81
83
|
"build": "tsc && node scripts/prepare-bin.js && node dist/scripts/generate-watch-pr-schema.js && node dist/scripts/generate-run-result-schema.js",
|