@vibe-validate/cli 0.10.2 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +70 -88
- package/dist/bin.js +318 -13
- package/dist/bin.js.map +1 -1
- package/dist/commands/cleanup.d.ts.map +1 -1
- package/dist/commands/cleanup.js +5 -16
- package/dist/commands/cleanup.js.map +1 -1
- package/dist/commands/config.js +0 -15
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +83 -58
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/generate-workflow.d.ts +2 -2
- package/dist/commands/generate-workflow.d.ts.map +1 -1
- package/dist/commands/generate-workflow.js +67 -21
- package/dist/commands/generate-workflow.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +71 -109
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/state.d.ts.map +1 -1
- package/dist/commands/state.js +0 -5
- package/dist/commands/state.js.map +1 -1
- package/dist/commands/sync-check.d.ts.map +1 -1
- package/dist/commands/sync-check.js +5 -14
- package/dist/commands/sync-check.js.map +1 -1
- package/dist/commands/watch-pr.d.ts +6 -0
- package/dist/commands/watch-pr.d.ts.map +1 -0
- package/dist/commands/watch-pr.js +282 -0
- package/dist/commands/watch-pr.js.map +1 -0
- package/dist/schemas/watch-pr-schema.d.ts +261 -0
- package/dist/schemas/watch-pr-schema.d.ts.map +1 -0
- package/dist/schemas/watch-pr-schema.js +58 -0
- package/dist/schemas/watch-pr-schema.js.map +1 -0
- package/dist/scripts/generate-watch-pr-schema.d.ts +12 -0
- package/dist/scripts/generate-watch-pr-schema.d.ts.map +1 -0
- package/dist/scripts/generate-watch-pr-schema.js +35 -0
- package/dist/scripts/generate-watch-pr-schema.js.map +1 -0
- package/dist/services/ci-provider-registry.d.ts +38 -0
- package/dist/services/ci-provider-registry.d.ts.map +1 -0
- package/dist/services/ci-provider-registry.js +53 -0
- package/dist/services/ci-provider-registry.js.map +1 -0
- package/dist/services/ci-provider.d.ts +160 -0
- package/dist/services/ci-provider.d.ts.map +1 -0
- package/dist/services/ci-provider.js +11 -0
- package/dist/services/ci-provider.js.map +1 -0
- package/dist/services/ci-providers/github-actions.d.ts +40 -0
- package/dist/services/ci-providers/github-actions.d.ts.map +1 -0
- package/dist/services/ci-providers/github-actions.js +305 -0
- package/dist/services/ci-providers/github-actions.js.map +1 -0
- package/dist/utils/check-validation.d.ts +1 -1
- package/dist/utils/check-validation.d.ts.map +1 -1
- package/dist/utils/check-validation.js +2 -2
- package/dist/utils/check-validation.js.map +1 -1
- package/dist/utils/config-loader.d.ts +15 -3
- package/dist/utils/config-loader.d.ts.map +1 -1
- package/dist/utils/config-loader.js +61 -17
- package/dist/utils/config-loader.js.map +1 -1
- package/dist/utils/context-detector.d.ts +1 -1
- package/dist/utils/context-detector.js +1 -1
- package/dist/utils/normalize-line-endings.d.ts +53 -0
- package/dist/utils/normalize-line-endings.d.ts.map +1 -0
- package/dist/utils/normalize-line-endings.js +57 -0
- package/dist/utils/normalize-line-endings.js.map +1 -0
- package/dist/utils/setup-checks/gitignore-check.d.ts.map +1 -1
- package/dist/utils/setup-checks/gitignore-check.js +3 -4
- package/dist/utils/setup-checks/gitignore-check.js.map +1 -1
- package/dist/utils/template-discovery.d.ts +40 -0
- package/dist/utils/template-discovery.d.ts.map +1 -0
- package/dist/utils/template-discovery.js +136 -0
- package/dist/utils/template-discovery.js.map +1 -0
- package/package.json +9 -8
- package/watch-pr-result.schema.json +204 -0
package/README.md
CHANGED
|
@@ -30,16 +30,14 @@ npx @vibe-validate/cli validate
|
|
|
30
30
|
|
|
31
31
|
## Quick Start
|
|
32
32
|
|
|
33
|
-
1. **Create configuration file
|
|
33
|
+
1. **Create configuration file**:
|
|
34
34
|
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
export default defineConfig({
|
|
39
|
-
preset: preset('typescript-nodejs'),
|
|
40
|
-
});
|
|
35
|
+
```bash
|
|
36
|
+
npx vibe-validate init --template typescript-nodejs
|
|
41
37
|
```
|
|
42
38
|
|
|
39
|
+
This creates `vibe-validate.config.yaml` with sensible defaults.
|
|
40
|
+
|
|
43
41
|
2. **Run validation**:
|
|
44
42
|
|
|
45
43
|
```bash
|
|
@@ -66,7 +64,7 @@ npx vibe-validate validate [options]
|
|
|
66
64
|
- `--force` - Bypass cache and force re-validation
|
|
67
65
|
- `--no-cache` - Disable caching for this run
|
|
68
66
|
- `-v, --verbose` - Show detailed progress and output
|
|
69
|
-
- `--config <path>` - Path to config file (default: `vibe-validate.config.
|
|
67
|
+
- `--config <path>` - Path to config file (default: `vibe-validate.config.yaml`)
|
|
70
68
|
|
|
71
69
|
**Examples:**
|
|
72
70
|
|
|
@@ -81,7 +79,7 @@ npx vibe-validate validate --force
|
|
|
81
79
|
npx vibe-validate validate --verbose
|
|
82
80
|
|
|
83
81
|
# Custom config file
|
|
84
|
-
npx vibe-validate validate --config ./custom-config.
|
|
82
|
+
npx vibe-validate validate --config ./custom-config.yaml
|
|
85
83
|
```
|
|
86
84
|
|
|
87
85
|
**Exit Codes:**
|
|
@@ -145,8 +143,8 @@ npx vibe-validate config --verbose
|
|
|
145
143
|
|
|
146
144
|
**Use cases:**
|
|
147
145
|
- Verify configuration is loaded correctly
|
|
148
|
-
- Debug
|
|
149
|
-
- Inspect
|
|
146
|
+
- Debug configuration behavior
|
|
147
|
+
- Inspect settings
|
|
150
148
|
|
|
151
149
|
---
|
|
152
150
|
|
|
@@ -185,7 +183,7 @@ npx vibe-validate sync-check [options]
|
|
|
185
183
|
**Options:**
|
|
186
184
|
- `--main-branch <branch>` - Main branch name (overrides config, default: `main`)
|
|
187
185
|
- `--remote-origin <remote>` - Remote origin name (overrides config, default: `origin`)
|
|
188
|
-
- `--
|
|
186
|
+
- `--yaml` - Suppress human-friendly output, output YAML only
|
|
189
187
|
|
|
190
188
|
**Exit Codes:**
|
|
191
189
|
- `0` - Up to date or no remote
|
|
@@ -207,31 +205,28 @@ npx vibe-validate sync-check --main-branch develop --remote-origin upstream
|
|
|
207
205
|
|
|
208
206
|
**Configuration:**
|
|
209
207
|
|
|
210
|
-
Set defaults in `vibe-validate.config.
|
|
208
|
+
Set defaults in `vibe-validate.config.yaml`:
|
|
211
209
|
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
},
|
|
218
|
-
});
|
|
210
|
+
<!-- config:partial -->
|
|
211
|
+
```yaml
|
|
212
|
+
git:
|
|
213
|
+
mainBranch: main # Default: 'main'
|
|
214
|
+
remoteOrigin: origin # Default: 'origin'
|
|
219
215
|
```
|
|
220
216
|
|
|
221
217
|
**Common scenarios:**
|
|
222
218
|
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
219
|
+
<!-- config:partial -->
|
|
220
|
+
```yaml
|
|
221
|
+
# Forked repository - sync with upstream
|
|
222
|
+
git:
|
|
223
|
+
mainBranch: main
|
|
224
|
+
remoteOrigin: upstream
|
|
229
225
|
|
|
230
|
-
|
|
231
|
-
git:
|
|
232
|
-
mainBranch:
|
|
233
|
-
remoteOrigin:
|
|
234
|
-
}
|
|
226
|
+
# Legacy project - use master branch
|
|
227
|
+
git:
|
|
228
|
+
mainBranch: master
|
|
229
|
+
remoteOrigin: origin
|
|
235
230
|
```
|
|
236
231
|
|
|
237
232
|
---
|
|
@@ -361,61 +356,48 @@ npx vibe-validate doctor
|
|
|
361
356
|
|
|
362
357
|
## Configuration
|
|
363
358
|
|
|
364
|
-
Create `vibe-validate.config.
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
name:
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
},
|
|
401
|
-
});
|
|
402
|
-
```
|
|
403
|
-
|
|
404
|
-
**Or use presets:**
|
|
405
|
-
|
|
406
|
-
```javascript
|
|
407
|
-
import { defineConfig, preset } from '@vibe-validate/config';
|
|
408
|
-
|
|
409
|
-
export default defineConfig({
|
|
410
|
-
preset: preset('typescript-nodejs'),
|
|
411
|
-
});
|
|
412
|
-
```
|
|
413
|
-
|
|
414
|
-
**Available presets:**
|
|
359
|
+
Create `vibe-validate.config.yaml` in your project root:
|
|
360
|
+
|
|
361
|
+
<!-- config:example -->
|
|
362
|
+
```yaml
|
|
363
|
+
# JSON Schema for IDE autocomplete
|
|
364
|
+
$schema: https://unpkg.com/@vibe-validate/config/vibe-validate.schema.json
|
|
365
|
+
|
|
366
|
+
git:
|
|
367
|
+
mainBranch: main
|
|
368
|
+
remoteOrigin: origin
|
|
369
|
+
warnIfBehind: true
|
|
370
|
+
|
|
371
|
+
validation:
|
|
372
|
+
phases:
|
|
373
|
+
- name: Pre-Qualification
|
|
374
|
+
parallel: true
|
|
375
|
+
steps:
|
|
376
|
+
- name: TypeScript
|
|
377
|
+
command: pnpm typecheck
|
|
378
|
+
- name: ESLint
|
|
379
|
+
command: pnpm lint
|
|
380
|
+
|
|
381
|
+
- name: Testing
|
|
382
|
+
steps:
|
|
383
|
+
- name: Unit Tests
|
|
384
|
+
command: pnpm test
|
|
385
|
+
```
|
|
386
|
+
|
|
387
|
+
**Or use a config template:**
|
|
388
|
+
|
|
389
|
+
```bash
|
|
390
|
+
npx vibe-validate init --template typescript-nodejs
|
|
391
|
+
```
|
|
392
|
+
|
|
393
|
+
**Available templates:**
|
|
394
|
+
- `minimal` - Bare-bones starting point
|
|
415
395
|
- `typescript-library` - TypeScript library (no runtime)
|
|
416
396
|
- `typescript-nodejs` - Node.js application with TypeScript
|
|
417
397
|
- `typescript-react` - React application with TypeScript
|
|
418
398
|
|
|
399
|
+
All templates available at: https://github.com/jdutton/vibe-validate/tree/main/config-templates
|
|
400
|
+
|
|
419
401
|
## Caching
|
|
420
402
|
|
|
421
403
|
vibe-validate uses **git tree hash-based caching** for deterministic, content-based validation:
|
|
@@ -464,6 +446,7 @@ npx vibe-validate state
|
|
|
464
446
|
|
|
465
447
|
**Output:**
|
|
466
448
|
|
|
449
|
+
<!-- validation-result:example -->
|
|
467
450
|
```yaml
|
|
468
451
|
passed: false
|
|
469
452
|
timestamp: 2025-10-16T20:00:00.000Z
|
|
@@ -562,12 +545,11 @@ vv config
|
|
|
562
545
|
|
|
563
546
|
## Links
|
|
564
547
|
|
|
565
|
-
- [Full Documentation](https://github.com/
|
|
566
|
-
- [Configuration
|
|
567
|
-
- [
|
|
568
|
-
- [
|
|
569
|
-
- [Examples](https://github.com/jeffrdutton/vibe-validate/tree/main/examples)
|
|
548
|
+
- [Full Documentation](https://github.com/jdutton/vibe-validate#readme)
|
|
549
|
+
- [Configuration Reference](https://github.com/jdutton/vibe-validate/blob/main/docs/configuration-reference.md)
|
|
550
|
+
- [Config Templates Guide](https://github.com/jdutton/vibe-validate/blob/main/config-templates/README.md)
|
|
551
|
+
- [Getting Started](https://github.com/jdutton/vibe-validate/blob/main/docs/getting-started.md)
|
|
570
552
|
|
|
571
553
|
## License
|
|
572
554
|
|
|
573
|
-
MIT © [Jeff Dutton](https://github.com/
|
|
555
|
+
MIT © [Jeff Dutton](https://github.com/jdutton)
|
package/dist/bin.js
CHANGED
|
@@ -17,6 +17,7 @@ import { cleanupCommand } from './commands/cleanup.js';
|
|
|
17
17
|
import { configCommand } from './commands/config.js';
|
|
18
18
|
import { generateWorkflowCommand } from './commands/generate-workflow.js';
|
|
19
19
|
import { doctorCommand } from './commands/doctor.js';
|
|
20
|
+
import { registerWatchPRCommand } from './commands/watch-pr.js';
|
|
20
21
|
// Read version from package.json at runtime
|
|
21
22
|
// This approach works with ESM and survives TypeScript compilation
|
|
22
23
|
const __filename = fileURLToPath(import.meta.url);
|
|
@@ -47,6 +48,7 @@ cleanupCommand(program); // vibe-validate cleanup
|
|
|
47
48
|
configCommand(program); // vibe-validate config
|
|
48
49
|
generateWorkflowCommand(program); // vibe-validate generate-workflow
|
|
49
50
|
doctorCommand(program); // vibe-validate doctor
|
|
51
|
+
registerWatchPRCommand(program); // vibe-validate watch-pr
|
|
50
52
|
// Custom help handler: --help --verbose shows all subcommand options
|
|
51
53
|
const args = process.argv;
|
|
52
54
|
const hasHelp = args.includes('--help') || args.includes('-h');
|
|
@@ -60,27 +62,330 @@ program.parse();
|
|
|
60
62
|
/**
|
|
61
63
|
* Show comprehensive help with all subcommand options
|
|
62
64
|
* For AI assistants: Use `vibe-validate --help --verbose`
|
|
65
|
+
*
|
|
66
|
+
* Outputs in Markdown format for better LLM parsing and perfect docs sync
|
|
63
67
|
*/
|
|
64
68
|
function showComprehensiveHelp(program) {
|
|
65
|
-
console.log('vibe-validate
|
|
66
|
-
console.log('
|
|
69
|
+
console.log('# vibe-validate CLI Reference\n');
|
|
70
|
+
console.log('> Agent-friendly validation framework with git tree hash caching\n');
|
|
71
|
+
console.log('## Usage\n');
|
|
72
|
+
console.log('```bash');
|
|
73
|
+
console.log('vibe-validate <command> [options]');
|
|
74
|
+
console.log('```\n');
|
|
75
|
+
console.log('## Commands\n');
|
|
76
|
+
// Detailed command descriptions with exit codes, examples, etc.
|
|
77
|
+
const commandDetails = {
|
|
78
|
+
validate: {
|
|
79
|
+
whatItDoes: [
|
|
80
|
+
'1. Calculates git tree hash of working directory',
|
|
81
|
+
'2. Checks if hash matches cached state',
|
|
82
|
+
'3. If match: exits immediately (~288ms)',
|
|
83
|
+
'4. If no match: runs validation pipeline (~60-90s)',
|
|
84
|
+
'5. Caches result for next run'
|
|
85
|
+
],
|
|
86
|
+
exitCodes: {
|
|
87
|
+
0: 'Validation passed (or cached pass)',
|
|
88
|
+
1: 'Validation failed',
|
|
89
|
+
2: 'Configuration error'
|
|
90
|
+
},
|
|
91
|
+
creates: ['.vibe-validate-state.yaml (auto-created)'],
|
|
92
|
+
examples: [
|
|
93
|
+
'vibe-validate validate # Use cache if available',
|
|
94
|
+
'vibe-validate validate --force # Always run validation',
|
|
95
|
+
'vibe-validate validate --check # Just check if already passed'
|
|
96
|
+
]
|
|
97
|
+
},
|
|
98
|
+
init: {
|
|
99
|
+
whatItDoes: [
|
|
100
|
+
'Creates vibe-validate.config.yaml in project root',
|
|
101
|
+
'Optionally sets up pre-commit hooks',
|
|
102
|
+
'Optionally creates GitHub Actions workflow',
|
|
103
|
+
'Optionally updates .gitignore'
|
|
104
|
+
],
|
|
105
|
+
exitCodes: {
|
|
106
|
+
0: 'Configuration created successfully',
|
|
107
|
+
1: 'Failed (config exists without --force, or invalid template)'
|
|
108
|
+
},
|
|
109
|
+
creates: [
|
|
110
|
+
'vibe-validate.config.yaml (always)',
|
|
111
|
+
'.husky/pre-commit (with --setup-hooks)',
|
|
112
|
+
'.github/workflows/validate.yml (with --setup-workflow)',
|
|
113
|
+
'Updates .gitignore (with --fix-gitignore)'
|
|
114
|
+
],
|
|
115
|
+
examples: [
|
|
116
|
+
'vibe-validate init # Uses minimal template',
|
|
117
|
+
'vibe-validate init --template typescript-nodejs',
|
|
118
|
+
'vibe-validate init --template typescript-nodejs --setup-workflow --setup-hooks',
|
|
119
|
+
'vibe-validate init --force --template typescript-react # Overwrite existing'
|
|
120
|
+
]
|
|
121
|
+
},
|
|
122
|
+
'pre-commit': {
|
|
123
|
+
whatItDoes: [
|
|
124
|
+
'1. Runs sync-check (fails if branch behind origin/main)',
|
|
125
|
+
'2. Runs validate (with caching)',
|
|
126
|
+
'3. Reports git status (warns about unstaged files)'
|
|
127
|
+
],
|
|
128
|
+
exitCodes: {
|
|
129
|
+
0: 'Sync OK and validation passed',
|
|
130
|
+
1: 'Sync failed OR validation failed'
|
|
131
|
+
},
|
|
132
|
+
whenToUse: 'Run before every commit to ensure code is synced and validated',
|
|
133
|
+
errorGuidance: {
|
|
134
|
+
'sync failed': ['git fetch origin', 'git merge origin/main', 'Resolve conflicts if any', 'vibe-validate pre-commit # Retry'],
|
|
135
|
+
'validation failed': ['Fix errors shown in output', 'vibe-validate pre-commit # Retry']
|
|
136
|
+
},
|
|
137
|
+
examples: [
|
|
138
|
+
'vibe-validate pre-commit # Standard pre-commit workflow',
|
|
139
|
+
'vibe-validate pre-commit --skip-sync # Skip sync check (not recommended)'
|
|
140
|
+
]
|
|
141
|
+
},
|
|
142
|
+
state: {
|
|
143
|
+
whatItDoes: [
|
|
144
|
+
'Shows validation pass/fail status',
|
|
145
|
+
'Shows git tree hash (cache key)',
|
|
146
|
+
'Shows timestamp of last validation',
|
|
147
|
+
'Shows error summary (if failed)'
|
|
148
|
+
],
|
|
149
|
+
exitCodes: {
|
|
150
|
+
0: 'State file found and read successfully',
|
|
151
|
+
1: 'State file not found or invalid'
|
|
152
|
+
},
|
|
153
|
+
whenToUse: 'Debug why validation is cached/not cached, or see errors without re-running',
|
|
154
|
+
examples: [
|
|
155
|
+
'vibe-validate state # Show current state',
|
|
156
|
+
'vibe-validate state --verbose # Show full error output'
|
|
157
|
+
]
|
|
158
|
+
},
|
|
159
|
+
'sync-check': {
|
|
160
|
+
whatItDoes: [
|
|
161
|
+
'Checks if current branch is behind remote main',
|
|
162
|
+
'Compares local and remote commit histories',
|
|
163
|
+
'Reports sync status'
|
|
164
|
+
],
|
|
165
|
+
exitCodes: {
|
|
166
|
+
0: 'Up to date or no remote tracking',
|
|
167
|
+
1: 'Branch is behind (needs merge)',
|
|
168
|
+
2: 'Git command failed'
|
|
169
|
+
},
|
|
170
|
+
errorGuidance: {
|
|
171
|
+
'branch behind (exit 1)': ['git fetch origin', 'git merge origin/main # or git rebase origin/main', 'Resolve conflicts if any', 'vibe-validate pre-commit # Retry']
|
|
172
|
+
},
|
|
173
|
+
examples: [
|
|
174
|
+
'vibe-validate sync-check',
|
|
175
|
+
'vibe-validate sync-check --yaml # YAML output only'
|
|
176
|
+
]
|
|
177
|
+
},
|
|
178
|
+
cleanup: {
|
|
179
|
+
whatItDoes: [
|
|
180
|
+
'1. Switches to main branch',
|
|
181
|
+
'2. Pulls latest from origin/main',
|
|
182
|
+
'3. Identifies merged branches (via git log)',
|
|
183
|
+
'4. Deletes confirmed-merged branches',
|
|
184
|
+
'5. Reports cleanup summary'
|
|
185
|
+
],
|
|
186
|
+
exitCodes: {
|
|
187
|
+
0: 'Cleanup successful',
|
|
188
|
+
1: 'Failed (not on deletable branch, git errors)'
|
|
189
|
+
},
|
|
190
|
+
whenToUse: 'After PR merge to clean up local branches',
|
|
191
|
+
examples: [
|
|
192
|
+
'vibe-validate cleanup --dry-run # Preview',
|
|
193
|
+
'vibe-validate cleanup # Execute'
|
|
194
|
+
]
|
|
195
|
+
},
|
|
196
|
+
config: {
|
|
197
|
+
whatItDoes: [
|
|
198
|
+
'Shows resolved configuration',
|
|
199
|
+
'Validates configuration structure',
|
|
200
|
+
'Displays all configuration settings'
|
|
201
|
+
],
|
|
202
|
+
exitCodes: {
|
|
203
|
+
0: 'Configuration valid',
|
|
204
|
+
1: 'Configuration invalid or not found'
|
|
205
|
+
},
|
|
206
|
+
examples: [
|
|
207
|
+
'vibe-validate config # Show config',
|
|
208
|
+
'vibe-validate config --validate # Validate only'
|
|
209
|
+
]
|
|
210
|
+
},
|
|
211
|
+
'generate-workflow': {
|
|
212
|
+
whatItDoes: [
|
|
213
|
+
'Generates .github/workflows/validate.yml from config',
|
|
214
|
+
'Supports matrix mode (multiple Node/OS versions)',
|
|
215
|
+
'Supports non-matrix mode (separate jobs per phase)',
|
|
216
|
+
'Can check if workflow is in sync with config'
|
|
217
|
+
],
|
|
218
|
+
exitCodes: {
|
|
219
|
+
0: 'Workflow generated (or in sync with --check)',
|
|
220
|
+
1: 'Generation failed (or out of sync with --check)'
|
|
221
|
+
},
|
|
222
|
+
creates: ['.github/workflows/validate.yml'],
|
|
223
|
+
examples: [
|
|
224
|
+
'vibe-validate generate-workflow',
|
|
225
|
+
'vibe-validate generate-workflow --node-versions 20,22 --os ubuntu-latest,macos-latest',
|
|
226
|
+
'vibe-validate generate-workflow --check # Verify workflow is up to date'
|
|
227
|
+
]
|
|
228
|
+
},
|
|
229
|
+
doctor: {
|
|
230
|
+
whatItDoes: [
|
|
231
|
+
'Checks Node.js version (20+)',
|
|
232
|
+
'Verifies git repository exists',
|
|
233
|
+
'Checks package manager availability',
|
|
234
|
+
'Validates configuration file',
|
|
235
|
+
'Checks pre-commit hook setup',
|
|
236
|
+
'Verifies GitHub Actions workflow'
|
|
237
|
+
],
|
|
238
|
+
exitCodes: {
|
|
239
|
+
0: 'All critical checks passed',
|
|
240
|
+
1: 'One or more critical checks failed'
|
|
241
|
+
},
|
|
242
|
+
whenToUse: 'Diagnose setup issues or verify environment before using vibe-validate',
|
|
243
|
+
examples: [
|
|
244
|
+
'vibe-validate doctor # Run diagnostics',
|
|
245
|
+
'vibe-validate doctor --yaml # YAML output only'
|
|
246
|
+
]
|
|
247
|
+
},
|
|
248
|
+
'watch-pr': {
|
|
249
|
+
whatItDoes: [
|
|
250
|
+
'1. Detects PR from current branch (or uses provided PR number)',
|
|
251
|
+
'2. Polls CI provider (GitHub Actions) for check status',
|
|
252
|
+
'3. Shows real-time progress of all matrix jobs',
|
|
253
|
+
'4. On failure: fetches logs and extracts vibe-validate state file',
|
|
254
|
+
'5. Provides actionable recovery commands',
|
|
255
|
+
'6. Exits when all checks complete or timeout reached'
|
|
256
|
+
],
|
|
257
|
+
exitCodes: {
|
|
258
|
+
0: 'All checks passed',
|
|
259
|
+
1: 'One or more checks failed',
|
|
260
|
+
2: 'Timeout reached before completion'
|
|
261
|
+
},
|
|
262
|
+
whenToUse: 'Monitor CI checks in real-time after pushing to PR, especially useful for AI agents',
|
|
263
|
+
examples: [
|
|
264
|
+
'git push origin my-branch',
|
|
265
|
+
'vibe-validate watch-pr # Auto-detect PR',
|
|
266
|
+
'vibe-validate watch-pr 42 # Watch specific PR',
|
|
267
|
+
'vibe-validate watch-pr --yaml # YAML output only',
|
|
268
|
+
'vibe-validate watch-pr --fail-fast # Exit on first failure',
|
|
269
|
+
'vibe-validate watch-pr --timeout 600 # 10 minute timeout'
|
|
270
|
+
],
|
|
271
|
+
errorGuidance: {
|
|
272
|
+
'check fails': [
|
|
273
|
+
'# View error from state file in YAML output',
|
|
274
|
+
'vibe-validate watch-pr 42 --yaml | yq \'.failures[0].stateFile\'',
|
|
275
|
+
'',
|
|
276
|
+
'# Re-run failed check',
|
|
277
|
+
'gh run rerun <run-id> --failed'
|
|
278
|
+
],
|
|
279
|
+
'no PR found': [
|
|
280
|
+
'# Create PR first',
|
|
281
|
+
'gh pr create',
|
|
282
|
+
'',
|
|
283
|
+
'# Or specify PR number explicitly',
|
|
284
|
+
'vibe-validate watch-pr 42'
|
|
285
|
+
]
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
};
|
|
67
289
|
program.commands.forEach((cmd) => {
|
|
68
|
-
|
|
69
|
-
|
|
290
|
+
const cmdName = cmd.name();
|
|
291
|
+
const details = commandDetails[cmdName];
|
|
292
|
+
console.log(`### \`${cmd.name()}\`\n`);
|
|
293
|
+
console.log(`${cmd.description()}\n`);
|
|
294
|
+
if (details?.whatItDoes) {
|
|
295
|
+
console.log('**What it does:**\n');
|
|
296
|
+
details.whatItDoes.forEach(step => console.log(`${step}`));
|
|
297
|
+
console.log('');
|
|
298
|
+
}
|
|
299
|
+
if (details?.exitCodes) {
|
|
300
|
+
console.log('**Exit codes:**\n');
|
|
301
|
+
Object.entries(details.exitCodes).forEach(([code, desc]) => {
|
|
302
|
+
console.log(`- \`${code}\` - ${desc}`);
|
|
303
|
+
});
|
|
304
|
+
console.log('');
|
|
305
|
+
}
|
|
306
|
+
if (details?.creates) {
|
|
307
|
+
console.log('**Creates/modifies:**\n');
|
|
308
|
+
details.creates.forEach(file => console.log(`- ${file}`));
|
|
309
|
+
console.log('');
|
|
310
|
+
}
|
|
311
|
+
if (details?.whenToUse) {
|
|
312
|
+
console.log(`**When to use:** ${details.whenToUse}\n`);
|
|
313
|
+
}
|
|
70
314
|
const options = cmd.options.filter(opt => !opt.flags.includes('--help'));
|
|
71
315
|
if (options.length > 0) {
|
|
72
|
-
console.log('
|
|
316
|
+
console.log('**Options:**\n');
|
|
73
317
|
options.forEach((opt) => {
|
|
74
|
-
|
|
75
|
-
console.log(` ${flags} ${opt.description}`);
|
|
318
|
+
console.log(`- \`${opt.flags}\` - ${opt.description}`);
|
|
76
319
|
});
|
|
320
|
+
console.log('');
|
|
321
|
+
}
|
|
322
|
+
if (details?.errorGuidance) {
|
|
323
|
+
console.log('**Error recovery:**\n');
|
|
324
|
+
Object.entries(details.errorGuidance).forEach(([scenario, steps]) => {
|
|
325
|
+
console.log(`If **${scenario}**:`);
|
|
326
|
+
console.log('```bash');
|
|
327
|
+
steps.forEach(step => console.log(step));
|
|
328
|
+
console.log('```\n');
|
|
329
|
+
});
|
|
330
|
+
}
|
|
331
|
+
if (details?.examples) {
|
|
332
|
+
console.log('**Examples:**\n');
|
|
333
|
+
console.log('```bash');
|
|
334
|
+
details.examples.forEach(ex => console.log(ex));
|
|
335
|
+
console.log('```\n');
|
|
77
336
|
}
|
|
78
|
-
console.log('');
|
|
337
|
+
console.log('---\n');
|
|
79
338
|
});
|
|
80
|
-
console.log('Global Options
|
|
81
|
-
console.log('
|
|
82
|
-
console.log('
|
|
83
|
-
console.log('
|
|
84
|
-
console.log('
|
|
339
|
+
console.log('## Global Options\n');
|
|
340
|
+
console.log('- `-V, --version` - Show vibe-validate version');
|
|
341
|
+
console.log('- `-v, --verbose` - Show detailed output (use with --help for this output)');
|
|
342
|
+
console.log('- `-h, --help` - Show help for command\n');
|
|
343
|
+
console.log('## Files\n');
|
|
344
|
+
console.log('| File | Purpose |');
|
|
345
|
+
console.log('|------|---------|');
|
|
346
|
+
console.log('| `vibe-validate.config.yaml` | Configuration (required) |');
|
|
347
|
+
console.log('| `.vibe-validate-state.yaml` | Validation state (auto-created, add to .gitignore) |');
|
|
348
|
+
console.log('| `.github/workflows/validate.yml` | CI workflow (optional, generated) |');
|
|
349
|
+
console.log('| `.husky/pre-commit` | Pre-commit hook (optional, setup via init) |\n');
|
|
350
|
+
console.log('## Common Workflows\n');
|
|
351
|
+
console.log('### First-time setup\n');
|
|
352
|
+
console.log('```bash');
|
|
353
|
+
console.log('vibe-validate init --template typescript-nodejs --setup-workflow');
|
|
354
|
+
console.log('git add vibe-validate.config.yaml .github/workflows/validate.yml');
|
|
355
|
+
console.log('git commit -m "feat: add vibe-validate"');
|
|
356
|
+
console.log('```\n');
|
|
357
|
+
console.log('### Before every commit (recommended)\n');
|
|
358
|
+
console.log('```bash');
|
|
359
|
+
console.log('vibe-validate pre-commit');
|
|
360
|
+
console.log('# If fails: fix errors and retry');
|
|
361
|
+
console.log('```\n');
|
|
362
|
+
console.log('### After PR merge\n');
|
|
363
|
+
console.log('```bash');
|
|
364
|
+
console.log('vibe-validate cleanup');
|
|
365
|
+
console.log('# Cleans up merged branches');
|
|
366
|
+
console.log('```\n');
|
|
367
|
+
console.log('### Check validation state\n');
|
|
368
|
+
console.log('```bash');
|
|
369
|
+
console.log('vibe-validate state --verbose');
|
|
370
|
+
console.log('# Debug why validation failed');
|
|
371
|
+
console.log('```\n');
|
|
372
|
+
console.log('### Force re-validation\n');
|
|
373
|
+
console.log('```bash');
|
|
374
|
+
console.log('vibe-validate validate --force');
|
|
375
|
+
console.log('# Bypass cache, always run');
|
|
376
|
+
console.log('```\n');
|
|
377
|
+
console.log('## Exit Codes\n');
|
|
378
|
+
console.log('| Code | Meaning |');
|
|
379
|
+
console.log('|------|---------|');
|
|
380
|
+
console.log('| `0` | Success |');
|
|
381
|
+
console.log('| `1` | Failure (validation failed, sync check failed, invalid config) |');
|
|
382
|
+
console.log('| `2` | Error (git command failed, file system error) |\n');
|
|
383
|
+
console.log('## Caching\n');
|
|
384
|
+
console.log('- **Cache key**: Git tree hash of working directory (includes untracked files)');
|
|
385
|
+
console.log('- **Cache hit**: Validation skipped (~288ms)');
|
|
386
|
+
console.log('- **Cache miss**: Full validation runs (~60-90s)');
|
|
387
|
+
console.log('- **Invalidation**: Any file change (tracked or untracked)\n');
|
|
388
|
+
console.log('---\n');
|
|
389
|
+
console.log('For more details: https://github.com/jdutton/vibe-validate');
|
|
85
390
|
}
|
|
86
391
|
//# sourceMappingURL=bin.js.map
|
package/dist/bin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cleanup.d.ts","sourceRoot":"","sources":["../../src/commands/cleanup.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"cleanup.d.ts","sourceRoot":"","sources":["../../src/commands/cleanup.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKzC,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA8BrD"}
|
package/dist/commands/cleanup.js
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* Post-merge branch cleanup - switches to main and deletes merged branches.
|
|
5
5
|
*/
|
|
6
6
|
import { cleanupMergedBranches } from '@vibe-validate/git';
|
|
7
|
+
import { stringify as stringifyYaml } from 'yaml';
|
|
7
8
|
import chalk from 'chalk';
|
|
8
9
|
export function cleanupCommand(program) {
|
|
9
10
|
program
|
|
@@ -11,7 +12,7 @@ export function cleanupCommand(program) {
|
|
|
11
12
|
.description('Post-merge cleanup (switch to main, delete merged branches)')
|
|
12
13
|
.option('--main-branch <branch>', 'Main branch name', 'main')
|
|
13
14
|
.option('--dry-run', 'Show what would be deleted without actually deleting')
|
|
14
|
-
.option('--
|
|
15
|
+
.option('--yaml', 'Output YAML only (no human-friendly display)')
|
|
15
16
|
.action(async (options) => {
|
|
16
17
|
try {
|
|
17
18
|
// Run post-merge cleanup
|
|
@@ -19,21 +20,9 @@ export function cleanupCommand(program) {
|
|
|
19
20
|
mainBranch: options.mainBranch,
|
|
20
21
|
dryRun: options.dryRun,
|
|
21
22
|
});
|
|
22
|
-
// Output based on
|
|
23
|
-
if (options.
|
|
24
|
-
console.log(
|
|
25
|
-
}
|
|
26
|
-
else if (options.format === 'yaml') {
|
|
27
|
-
console.log(`success: ${result.success}`);
|
|
28
|
-
console.log(`currentBranch: ${result.currentBranch}`);
|
|
29
|
-
console.log(`mainSynced: ${result.mainSynced}`);
|
|
30
|
-
console.log(`branchesDeleted:`);
|
|
31
|
-
result.branchesDeleted.forEach((branch) => {
|
|
32
|
-
console.log(` - ${branch}`);
|
|
33
|
-
});
|
|
34
|
-
if ('error' in result && result.error) {
|
|
35
|
-
console.log(`error: ${result.error}`);
|
|
36
|
-
}
|
|
23
|
+
// Output based on quiet flag
|
|
24
|
+
if (options.yaml) {
|
|
25
|
+
console.log(stringifyYaml(result));
|
|
37
26
|
}
|
|
38
27
|
else {
|
|
39
28
|
// Human-friendly format
|