@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.
Files changed (38) hide show
  1. package/dist/commands/history.d.ts.map +1 -1
  2. package/dist/commands/history.js +15 -7
  3. package/dist/commands/history.js.map +1 -1
  4. package/dist/commands/init.d.ts.map +1 -1
  5. package/dist/commands/init.js +20 -11
  6. package/dist/commands/init.js.map +1 -1
  7. package/dist/commands/pre-commit.d.ts.map +1 -1
  8. package/dist/commands/pre-commit.js +46 -29
  9. package/dist/commands/pre-commit.js.map +1 -1
  10. package/dist/commands/snapshot.d.ts.map +1 -1
  11. package/dist/commands/snapshot.js +26 -17
  12. package/dist/commands/snapshot.js.map +1 -1
  13. package/dist/commands/state.d.ts.map +1 -1
  14. package/dist/commands/state.js +3 -1
  15. package/dist/commands/state.js.map +1 -1
  16. package/dist/commands/validate.d.ts.map +1 -1
  17. package/dist/commands/validate.js +17 -134
  18. package/dist/commands/validate.js.map +1 -1
  19. package/dist/services/watch-pr-orchestrator.d.ts +8 -0
  20. package/dist/services/watch-pr-orchestrator.d.ts.map +1 -1
  21. package/dist/services/watch-pr-orchestrator.js +29 -18
  22. package/dist/services/watch-pr-orchestrator.js.map +1 -1
  23. package/dist/utils/check-validation.d.ts.map +1 -1
  24. package/dist/utils/check-validation.js +26 -11
  25. package/dist/utils/check-validation.js.map +1 -1
  26. package/dist/utils/pid-lock.d.ts +27 -28
  27. package/dist/utils/pid-lock.d.ts.map +1 -1
  28. package/dist/utils/pid-lock.js +178 -92
  29. package/dist/utils/pid-lock.js.map +1 -1
  30. package/dist/utils/temp-files.d.ts +12 -12
  31. package/dist/utils/temp-files.d.ts.map +1 -1
  32. package/dist/utils/temp-files.js +67 -36
  33. package/dist/utils/temp-files.js.map +1 -1
  34. package/dist/utils/validation-lock-wrapper.d.ts +62 -0
  35. package/dist/utils/validation-lock-wrapper.d.ts.map +1 -0
  36. package/dist/utils/validation-lock-wrapper.js +186 -0
  37. package/dist/utils/validation-lock-wrapper.js.map +1 -0
  38. 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":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE7E,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EACL,WAAW,EACX,SAAS,EACT,WAAW,GAEZ,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AA4BlD;;;;;GAKG;AACH,SAAS,iBAAiB,CAAC,QAAiB,EAAE,QAAiB;IAC7D,IAAI,QAAQ;QAAE,OAAO,CAAC,yBAAyB;IAE/C,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,gDAAgD,CAAC,CAAC,CAAC;IAC9E,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC,CAAC;IAChE,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,SAAS,uBAAuB,CAC9B,YAAqF,EACrF,eAAuB,EACvB,QAAiB;IAEjB,IAAI,QAAQ;QAAE,OAAO,CAAC,yBAAyB;IAE/C,MAAM,aAAa,GAAG,YAAY,CAAC,QAAQ,KAAK,eAAe,CAAC;IAChE,MAAM,UAAU,GAAG,aAAa;QAC9B,CAAC,CAAC,iBAAiB;QACnB,CAAC,CAAC,sBAAsB,eAAe,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IAE5D,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CACxB,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CACjE,CAAC;IACF,MAAM,UAAU,GACd,OAAO,GAAG,EAAE;QACV,CAAC,CAAC,GAAG,OAAO,cAAc;QAC1B,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,cAAc,CAAC;IAEhD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,gCAAgC,CAAC,CAAC,CAAC;IAC5D,OAAO,CAAC,GAAG,CAAC,gBAAgB,YAAY,CAAC,SAAS,EAAE,CAAC,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,gBAAgB,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,UAAU,GAAG,CAAC,CAAC;IACrF,OAAO,CAAC,GAAG,CAAC,UAAU,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC;IAC1C,OAAO,CAAC,GAAG,CAAC,cAAc,UAAU,EAAE,CAAC,CAAC;AAC1C,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,iLAAiL;AACjL,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,OAA8B,EAC9B,QAAqD;IAErD,IAAI,WAAW,GAAiC,IAAI,CAAC;IAErD,IAAI,CAAC;QACH,oDAAoD;QACpD,4DAA4D;QAC5D,MAAM,YAAY,GAAG,MAAM,iBAAiB,EAAE,CAAC;QAC/C,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,2FAA2F;YAC3F,MAAM,gBAAgB,GAAG,MAAM,oBAAoB,EAAE,CAAC;YAEtD,IAAI,gBAAgB,CAAC,MAAM,IAAI,gBAAgB,CAAC,QAAQ,EAAE,CAAC;gBACzD,+CAA+C;gBAC/C,MAAM,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,2BAA2B,CAAC;gBAC3F,mBAAmB,CAAC;oBAClB,QAAQ;oBACR,MAAM,EAAE,gBAAgB,CAAC,MAAM;iBAChC,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,4BAA4B;gBAC5B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,CAAC;YACvD,CAAC;YAED,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,YAAY,CAAC;QAE3C,yCAAyC;QACzC,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;QAEhC,qCAAqC;QACrC,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,WAAW,EAAE,CAAC;QAEtF,yCAAyC;QACzC,IAAI,UAAU,GAAG,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC;QAE7C,gDAAgD;QAChD,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YACxB,UAAU,GAAG,KAAK,CAAC;QACrB,CAAC;QAED,IAAI,WAAW,GAAgB,EAAE,CAAC;QAClC,IAAI,UAAU,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;YAC9C,0CAA0C;YAC1C,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,IAAI,eAAe,EAAE,CAAC;YAC5D,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,oEAAoE,CAAC,CAAC,CAAC;gBAC/F,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC1C,OAAO,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAC;gBACzE,OAAO,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;gBACtD,OAAO,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;gBACzD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,WAAW,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;QAChD,CAAC;aAAM,CAAC;YACN,qCAAqC;YACrC,WAAW,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;QACvC,CAAC;QAED,kEAAkE;QAClE,iEAAiE;QACjE,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,KAAK,KAAK,CAAC;QACjD,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,IAAI,KAAK,CAAC;QAEvC,sEAAsE;QACtE,IAAI,UAAU,EAAE,CAAC;YACf,2GAA2G;YAC3G,MAAM,YAAY,GAAG,MAAM,SAAS,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;YAE7D,IAAI,YAAY,EAAE,CAAC;gBACjB,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,GAAG,CAAC;gBAE/C,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,iDAAiD,CAAC,CAAC,CAAC;oBAC7E,OAAO,CAAC,GAAG,CAAC,UAAU,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC;oBAC1C,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;oBACnF,OAAO,CAAC,GAAG,CAAC,cAAc,WAAW,GAAG,CAAC,CAAC;gBAC5C,CAAC;gBAED,MAAM,UAAU,GAAG,MAAM,WAAW,CAAC,SAAS,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;gBAEhF,iBAAiB,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACnD,CAAC;YACD,sCAAsC;QACxC,CAAC;QAED,+CAA+C;QAC/C,IAAI,UAAU,EAAE,CAAC;YACf,2GAA2G;YAC3G,MAAM,QAAQ,GAAG,MAAM,cAAc,EAAE,CAAC;YAExC,MAAM,UAAU,GAAG,MAAM,WAAW,CAAC,SAAS,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;YAEvE,IAAI,CAAC,UAAU,CAAC,QAAQ,IAAI,UAAU,CAAC,YAAY,EAAE,CAAC;gBACpD,wCAAwC;gBAExC,kEAAkE;gBAClE,IAAI,CAAC,UAAU,EAAE,CAAC;oBAChB,uBAAuB,CAAC,UAAU,CAAC,YAAY,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;oBACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,wCAAwC;gBAC3D,CAAC;gBAED,wEAAwE;gBACxE,uCAAuC;YACzC,CAAC;iBAAM,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;gBAC9B,sDAAsD;gBACtD,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC;YACnC,CAAC;QACH,CAAC;QAED,gCAAgC;QAChC,OAAO,MAAM,QAAQ,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;IACxD,CAAC;YAAS,CAAC;QACT,gCAAgC;QAChC,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,WAAW,EAAE,CAAC;QACtB,CAAC;IACH,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vibe-validate/cli",
3
- "version": "0.18.3-rc.1",
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.3-rc.1",
67
- "@vibe-validate/core": "0.18.3-rc.1",
68
- "@vibe-validate/git": "0.18.3-rc.1",
69
- "@vibe-validate/extractors": "0.18.3-rc.1",
70
- "@vibe-validate/history": "0.18.3-rc.1"
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.3-rc.1"
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",