@paths.design/caws-cli 8.2.0 ā 8.2.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/dist/budget-derivation.js +10 -10
- package/dist/commands/archive.js +22 -22
- package/dist/commands/burnup.js +7 -7
- package/dist/commands/diagnose.js +25 -25
- package/dist/commands/evaluate.js +20 -20
- package/dist/commands/init.js +71 -72
- package/dist/commands/iterate.js +21 -21
- package/dist/commands/mode.js +11 -11
- package/dist/commands/plan.js +5 -5
- package/dist/commands/provenance.js +86 -86
- package/dist/commands/quality-gates.js +4 -4
- package/dist/commands/quality-monitor.js +17 -17
- package/dist/commands/session.js +312 -0
- package/dist/commands/specs.js +44 -44
- package/dist/commands/status.js +43 -43
- package/dist/commands/templates.js +14 -14
- package/dist/commands/tool.js +1 -1
- package/dist/commands/troubleshoot.js +11 -11
- package/dist/commands/tutorial.js +119 -119
- package/dist/commands/validate.js +6 -6
- package/dist/commands/waivers.js +93 -60
- package/dist/commands/workflow.js +17 -17
- package/dist/commands/worktree.js +13 -13
- package/dist/config/index.js +5 -5
- package/dist/config/modes.js +7 -7
- package/dist/constants/spec-types.js +5 -5
- package/dist/error-handler.js +4 -4
- package/dist/generators/jest-config-generator.js +3 -3
- package/dist/generators/working-spec.js +4 -4
- package/dist/index.js +79 -27
- package/dist/minimal-cli.js +9 -9
- package/dist/policy/PolicyManager.js +1 -1
- package/dist/scaffold/claude-hooks.js +7 -7
- package/dist/scaffold/cursor-hooks.js +8 -8
- package/dist/scaffold/git-hooks.js +152 -152
- package/dist/scaffold/index.js +48 -48
- package/dist/session/session-manager.js +548 -0
- package/dist/test-analysis.js +20 -20
- package/dist/utils/command-wrapper.js +8 -8
- package/dist/utils/detection.js +7 -7
- package/dist/utils/finalization.js +21 -21
- package/dist/utils/git-lock.js +3 -3
- package/dist/utils/gitignore-updater.js +1 -1
- package/dist/utils/project-analysis.js +7 -7
- package/dist/utils/quality-gates-utils.js +35 -35
- package/dist/utils/spec-resolver.js +8 -8
- package/dist/utils/typescript-detector.js +5 -5
- package/dist/utils/yaml-validation.js +1 -1
- package/dist/validation/spec-validation.js +4 -4
- package/dist/worktree/worktree-manager.js +11 -5
- package/package.json +1 -1
|
@@ -14,7 +14,7 @@ const TUTORIALS = {
|
|
|
14
14
|
agent: {
|
|
15
15
|
name: 'AI Agent Onboarding',
|
|
16
16
|
description: 'Complete guide for AI agents working with CAWS',
|
|
17
|
-
icon: '
|
|
17
|
+
icon: '',
|
|
18
18
|
steps: [
|
|
19
19
|
{
|
|
20
20
|
id: 'welcome',
|
|
@@ -23,11 +23,11 @@ const TUTORIALS = {
|
|
|
23
23
|
Welcome to CAWS (Coding Agent Workflow System)!
|
|
24
24
|
|
|
25
25
|
CAWS helps AI agents and developers collaborate effectively by providing:
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
26
|
+
- Structured specifications and requirements
|
|
27
|
+
- Automated validation and quality gates
|
|
28
|
+
- Progress tracking and status monitoring
|
|
29
|
+
- Change management and archival
|
|
30
|
+
- Multi-tier complexity modes
|
|
31
31
|
|
|
32
32
|
This tutorial will guide you through the essential CAWS workflow.
|
|
33
33
|
`,
|
|
@@ -39,9 +39,9 @@ This tutorial will guide you through the essential CAWS workflow.
|
|
|
39
39
|
content: `
|
|
40
40
|
Every CAWS session should start with validation:
|
|
41
41
|
|
|
42
|
-
1.
|
|
43
|
-
2.
|
|
44
|
-
3.
|
|
42
|
+
1. Always validate first: \`caws validate\`
|
|
43
|
+
2. Check current status: \`caws status --visual\`
|
|
44
|
+
3. Get guidance: \`caws iterate --current-state "Starting implementation"\`
|
|
45
45
|
|
|
46
46
|
These commands ensure you're working with validated specifications and understand the current project state.
|
|
47
47
|
`,
|
|
@@ -54,20 +54,20 @@ These commands ensure you're working with validated specifications and understan
|
|
|
54
54
|
content: `
|
|
55
55
|
CAWS adapts to your project needs with three complexity tiers:
|
|
56
56
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
57
|
+
**Simple Mode** (70% coverage, 30% mutation)
|
|
58
|
+
- Perfect for small projects and prototyping
|
|
59
|
+
- Minimal commands and features
|
|
60
|
+
- Quick setup and iteration
|
|
61
61
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
62
|
+
**Standard Mode** (80% coverage, 50% mutation)
|
|
63
|
+
- Balanced approach for most projects
|
|
64
|
+
- Quality gates and provenance tracking
|
|
65
|
+
- Change management and archival
|
|
66
66
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
67
|
+
**Enterprise Mode** (90% coverage, 70% mutation)
|
|
68
|
+
- Full compliance and audit trails
|
|
69
|
+
- Advanced monitoring and reporting
|
|
70
|
+
- Maximum quality assurance
|
|
71
71
|
|
|
72
72
|
Check your current mode: \`caws mode current\`
|
|
73
73
|
Switch modes: \`caws mode set --interactive\`
|
|
@@ -81,21 +81,21 @@ Switch modes: \`caws mode set --interactive\`
|
|
|
81
81
|
content: `
|
|
82
82
|
CAWS uses a multi-spec system for better organization:
|
|
83
83
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
84
|
+
**Individual spec files** instead of monolithic specs
|
|
85
|
+
**Type-based organization** (feature, fix, refactor, etc.)
|
|
86
|
+
**Visual progress tracking** across all specs
|
|
87
|
+
**Concurrent development** support
|
|
88
88
|
|
|
89
89
|
Commands:
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
90
|
+
- \`caws specs list\` - View all specs
|
|
91
|
+
- \`caws specs create <id>\` - Create new spec
|
|
92
|
+
- \`caws specs show <id>\` - View spec details
|
|
93
|
+
- \`caws specs update <id>\` - Update spec status
|
|
94
94
|
|
|
95
95
|
Each spec contains:
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
96
|
+
- Acceptance criteria with progress tracking
|
|
97
|
+
- Risk tier and complexity mode
|
|
98
|
+
- Contract definitions and validation
|
|
99
99
|
`,
|
|
100
100
|
action: 'Try: caws specs list',
|
|
101
101
|
verify: 'specs_list',
|
|
@@ -106,19 +106,19 @@ Each spec contains:
|
|
|
106
106
|
content: `
|
|
107
107
|
Follow this proven TDD workflow:
|
|
108
108
|
|
|
109
|
-
1.
|
|
110
|
-
2.
|
|
111
|
-
3.
|
|
112
|
-
4.
|
|
113
|
-
5.
|
|
114
|
-
6.
|
|
115
|
-
7.
|
|
109
|
+
1. **Plan**: Create/update specs with acceptance criteria
|
|
110
|
+
2. **Validate**: Ensure specs are valid and complete
|
|
111
|
+
3. **Test First**: Write failing tests for each criterion
|
|
112
|
+
4. **Implement**: Make tests pass incrementally
|
|
113
|
+
5. **Track Progress**: Update acceptance criteria status
|
|
114
|
+
6. **Quality Gates**: Run validation and quality checks
|
|
115
|
+
7. **Archive**: Complete and archive finished work
|
|
116
116
|
|
|
117
117
|
Key commands:
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
118
|
+
- \`caws progress update --criterion-id A1 --status completed\`
|
|
119
|
+
- \`caws validate\` - Validate current work
|
|
120
|
+
- \`caws status --visual\` - Check progress
|
|
121
|
+
- \`caws archive <change-id>\` - Complete work
|
|
122
122
|
`,
|
|
123
123
|
action: 'Try: caws status --visual',
|
|
124
124
|
verify: 'status_check',
|
|
@@ -129,25 +129,25 @@ Key commands:
|
|
|
129
129
|
content: `
|
|
130
130
|
CAWS enforces quality through multiple gates:
|
|
131
131
|
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
132
|
+
**Validation Gates**
|
|
133
|
+
- Spec format and completeness
|
|
134
|
+
- Contract compliance
|
|
135
|
+
- Risk tier requirements
|
|
136
|
+
|
|
137
|
+
**Testing Gates**
|
|
138
|
+
- Test coverage thresholds
|
|
139
|
+
- Mutation testing scores
|
|
140
|
+
- Integration test passing
|
|
141
|
+
|
|
142
|
+
**Progress Gates**
|
|
143
|
+
- Acceptance criteria completion
|
|
144
|
+
- Spec status validation
|
|
145
|
+
- Change budget compliance
|
|
146
|
+
|
|
147
|
+
**Quick Checks**
|
|
148
|
+
- \`caws validate\` - Spec validation
|
|
149
|
+
- \`caws diagnose\` - Health checks (if in standard/enterprise mode)
|
|
150
|
+
- \`caws evaluate\` - Quality evaluation
|
|
151
151
|
`,
|
|
152
152
|
action: 'Try: caws validate',
|
|
153
153
|
verify: 'quality_check',
|
|
@@ -156,23 +156,23 @@ CAWS enforces quality through multiple gates:
|
|
|
156
156
|
id: 'common-patterns',
|
|
157
157
|
title: 'Common Patterns & Best Practices',
|
|
158
158
|
content: `
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
159
|
+
**Avoid These**:
|
|
160
|
+
- Don't start implementation before validation
|
|
161
|
+
- Don't create duplicate files (enhanced-*, new-*)
|
|
162
|
+
- Don't exceed change budgets
|
|
163
|
+
- Don't skip quality gates
|
|
164
|
+
|
|
165
|
+
**Do These**:
|
|
166
|
+
- Always validate first: \`caws validate\`
|
|
167
|
+
- Use multi-spec system for organization
|
|
168
|
+
- Write tests before implementation (TDD)
|
|
169
|
+
- Update progress: \`caws progress update\`
|
|
170
|
+
- Archive completed work: \`caws archive\`
|
|
171
|
+
|
|
172
|
+
**Get Help**:
|
|
173
|
+
- \`caws --help\` - All commands
|
|
174
|
+
- \`caws workflow guidance\` - Workflow-specific help
|
|
175
|
+
- \`docs/agents/full-guide.md\` - Complete documentation
|
|
176
176
|
`,
|
|
177
177
|
action: 'Try: caws --help',
|
|
178
178
|
verify: 'help_check',
|
|
@@ -181,15 +181,15 @@ CAWS enforces quality through multiple gates:
|
|
|
181
181
|
id: 'completion',
|
|
182
182
|
title: 'Tutorial Complete!',
|
|
183
183
|
content: `
|
|
184
|
-
|
|
184
|
+
Congratulations! You've completed the CAWS agent tutorial.
|
|
185
185
|
|
|
186
186
|
**Key Takeaways**:
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
187
|
+
- CAWS provides structure and validation for AI-human collaboration
|
|
188
|
+
- Start every session with validation and status checks
|
|
189
|
+
- Use the multi-spec system for better organization
|
|
190
|
+
- Follow TDD practices with comprehensive testing
|
|
191
|
+
- Respect quality gates and change budgets
|
|
192
|
+
- Archive completed work for clean project history
|
|
193
193
|
|
|
194
194
|
**Next Steps**:
|
|
195
195
|
1. Explore the multi-spec system: \`caws specs create my-feature\`
|
|
@@ -199,7 +199,7 @@ CAWS enforces quality through multiple gates:
|
|
|
199
199
|
|
|
200
200
|
Remember: CAWS exists to make AI-human collaboration reliable and high-quality. Follow the rules, validate often, and deliver excellent results!
|
|
201
201
|
|
|
202
|
-
|
|
202
|
+
Pro tip: Use \`caws status --visual\` regularly to stay oriented
|
|
203
203
|
`,
|
|
204
204
|
action: 'Tutorial complete! Try: caws specs create my-feature',
|
|
205
205
|
},
|
|
@@ -209,7 +209,7 @@ Remember: CAWS exists to make AI-human collaboration reliable and high-quality.
|
|
|
209
209
|
developer: {
|
|
210
210
|
name: 'Developer Quick Start',
|
|
211
211
|
description: 'Fast track for developers new to CAWS',
|
|
212
|
-
icon: '
|
|
212
|
+
icon: '',
|
|
213
213
|
steps: [
|
|
214
214
|
{
|
|
215
215
|
id: 'welcome-dev',
|
|
@@ -218,11 +218,11 @@ Remember: CAWS exists to make AI-human collaboration reliable and high-quality.
|
|
|
218
218
|
Welcome to CAWS! This quick start will get you up and running fast.
|
|
219
219
|
|
|
220
220
|
CAWS helps development teams by providing:
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
221
|
+
- Clear specification management
|
|
222
|
+
- Structured change workflows
|
|
223
|
+
- Progress visibility for stakeholders
|
|
224
|
+
- Quality gates and validation
|
|
225
|
+
- Better AI-human collaboration
|
|
226
226
|
|
|
227
227
|
Let's get you started!
|
|
228
228
|
`,
|
|
@@ -242,9 +242,9 @@ First, ensure CAWS is properly initialized:
|
|
|
242
242
|
For existing projects, use: \`caws scaffold\`
|
|
243
243
|
|
|
244
244
|
Choose a mode that fits your project:
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
245
|
+
- Simple: Small projects, quick prototyping
|
|
246
|
+
- Standard: Most teams and projects
|
|
247
|
+
- Enterprise: Large teams, compliance requirements
|
|
248
248
|
`,
|
|
249
249
|
action: 'Try: caws mode current',
|
|
250
250
|
verify: 'mode_setup',
|
|
@@ -258,9 +258,9 @@ Create a spec for your feature or fix:
|
|
|
258
258
|
\`caws specs create user-login --type feature --title "User Login System"\`
|
|
259
259
|
|
|
260
260
|
This creates:
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
261
|
+
- A new spec file in \`.caws/specs/user-login.yaml\`
|
|
262
|
+
- Basic structure with acceptance criteria template
|
|
263
|
+
- Automatic registration in the specs registry
|
|
264
264
|
|
|
265
265
|
View all specs: \`caws specs list\`
|
|
266
266
|
View spec details: \`caws specs show user-login\`
|
|
@@ -288,9 +288,9 @@ acceptance_criteria:
|
|
|
288
288
|
\`\`\`
|
|
289
289
|
|
|
290
290
|
Each criterion should be:
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
291
|
+
- Testable and verifiable
|
|
292
|
+
- Specific and measurable
|
|
293
|
+
- Focused on user value
|
|
294
294
|
`,
|
|
295
295
|
action: 'Edit your spec file and add acceptance criteria',
|
|
296
296
|
verify: 'criteria_defined',
|
|
@@ -326,10 +326,10 @@ When all acceptance criteria are completed:
|
|
|
326
326
|
3. **Archive the work**: \`caws archive user-login\`
|
|
327
327
|
|
|
328
328
|
This:
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
329
|
+
- Validates all criteria are met
|
|
330
|
+
- Moves completed work to archive
|
|
331
|
+
- Updates provenance chain
|
|
332
|
+
- Provides completion summary
|
|
333
333
|
|
|
334
334
|
View archived work: Check \`.caws/archive/\` directory
|
|
335
335
|
`,
|
|
@@ -347,21 +347,21 @@ View archived work: Check \`.caws/archive/\` directory
|
|
|
347
347
|
* @param {number} totalSteps - Total number of steps
|
|
348
348
|
*/
|
|
349
349
|
function displayTutorialStep(step, stepNumber, totalSteps) {
|
|
350
|
-
console.log(chalk.bold.cyan(`\
|
|
351
|
-
console.log(chalk.cyan('
|
|
350
|
+
console.log(chalk.bold.cyan(`\nStep ${stepNumber}/${totalSteps}: ${step.title}`));
|
|
351
|
+
console.log(chalk.cyan('='.repeat(60)));
|
|
352
352
|
|
|
353
353
|
// Display content with proper formatting
|
|
354
354
|
const lines = step.content.trim().split('\n');
|
|
355
355
|
lines.forEach((line) => {
|
|
356
356
|
if (
|
|
357
|
-
line.startsWith('
|
|
358
|
-
line.startsWith('
|
|
359
|
-
line.startsWith('
|
|
360
|
-
line.startsWith('
|
|
361
|
-
line.startsWith('
|
|
357
|
+
line.startsWith('-') ||
|
|
358
|
+
line.startsWith('') ||
|
|
359
|
+
line.startsWith('') ||
|
|
360
|
+
line.startsWith('') ||
|
|
361
|
+
line.startsWith('')
|
|
362
362
|
) {
|
|
363
363
|
console.log(chalk.gray(line));
|
|
364
|
-
} else if (line.startsWith('
|
|
364
|
+
} else if (line.startsWith('') || line.startsWith('') || line.startsWith('')) {
|
|
365
365
|
console.log(line);
|
|
366
366
|
} else if (line.includes('`')) {
|
|
367
367
|
console.log(chalk.cyan(line));
|
|
@@ -371,7 +371,7 @@ function displayTutorialStep(step, stepNumber, totalSteps) {
|
|
|
371
371
|
});
|
|
372
372
|
|
|
373
373
|
if (step.action) {
|
|
374
|
-
console.log(chalk.yellow(`\n
|
|
374
|
+
console.log(chalk.yellow(`\n${step.action}`));
|
|
375
375
|
}
|
|
376
376
|
|
|
377
377
|
console.log('');
|
|
@@ -396,7 +396,7 @@ async function runInteractiveTutorial(tutorialType) {
|
|
|
396
396
|
output: process.stdout,
|
|
397
397
|
});
|
|
398
398
|
|
|
399
|
-
console.log(chalk.bold.green(`\
|
|
399
|
+
console.log(chalk.bold.green(`\nStarting ${tutorial.icon} ${tutorial.name}`));
|
|
400
400
|
console.log(chalk.green(tutorial.description));
|
|
401
401
|
console.log(chalk.gray(`Total steps: ${tutorial.steps.length}\n`));
|
|
402
402
|
|
|
@@ -420,7 +420,7 @@ async function runInteractiveTutorial(tutorialType) {
|
|
|
420
420
|
rl.close();
|
|
421
421
|
|
|
422
422
|
// Final message
|
|
423
|
-
console.log(chalk.bold.green(`\n
|
|
423
|
+
console.log(chalk.bold.green(`\n${tutorial.icon} ${tutorial.name} Complete!`));
|
|
424
424
|
console.log(chalk.green('You can always run this tutorial again with:'));
|
|
425
425
|
console.log(chalk.cyan(`caws tutorial ${tutorialType}`));
|
|
426
426
|
console.log('');
|
|
@@ -436,8 +436,8 @@ async function tutorialCommand(tutorialType, _options = {}) {
|
|
|
436
436
|
async () => {
|
|
437
437
|
if (!tutorialType) {
|
|
438
438
|
// Show available tutorials
|
|
439
|
-
console.log(chalk.bold.cyan('\
|
|
440
|
-
console.log(chalk.cyan('
|
|
439
|
+
console.log(chalk.bold.cyan('\nAvailable CAWS Tutorials'));
|
|
440
|
+
console.log(chalk.cyan('==================================================\n'));
|
|
441
441
|
|
|
442
442
|
Object.entries(TUTORIALS).forEach(([type, tutorial]) => {
|
|
443
443
|
console.log(`${tutorial.icon} ${chalk.green(type.padEnd(12))} - ${tutorial.description}`);
|
|
@@ -44,7 +44,7 @@ async function validateCommand(specFile, options = {}) {
|
|
|
44
44
|
|
|
45
45
|
if (options.format !== 'json') {
|
|
46
46
|
console.log(
|
|
47
|
-
chalk.cyan(
|
|
47
|
+
chalk.cyan(`Validating ${specType === 'feature' ? 'feature' : 'working'} spec...`)
|
|
48
48
|
);
|
|
49
49
|
console.log(chalk.gray(` Spec: ${path.relative(process.cwd(), specPath)}`));
|
|
50
50
|
}
|
|
@@ -166,7 +166,7 @@ async function validateCommand(specFile, options = {}) {
|
|
|
166
166
|
} else {
|
|
167
167
|
// Human-readable text output
|
|
168
168
|
if (finalResult.valid) {
|
|
169
|
-
console.log(chalk.green('
|
|
169
|
+
console.log(chalk.green('Working spec validation passed'));
|
|
170
170
|
if (!options.quiet) {
|
|
171
171
|
console.log(chalk.gray(` Risk tier: ${spec.risk_tier}`));
|
|
172
172
|
console.log(chalk.gray(` Mode: ${spec.mode}`));
|
|
@@ -186,13 +186,13 @@ async function validateCommand(specFile, options = {}) {
|
|
|
186
186
|
}
|
|
187
187
|
}
|
|
188
188
|
} else {
|
|
189
|
-
console.log(chalk.red('
|
|
189
|
+
console.log(chalk.red('Working spec validation failed'));
|
|
190
190
|
|
|
191
191
|
// Show errors
|
|
192
192
|
finalResult.errors.forEach((error, index) => {
|
|
193
193
|
console.log(` ${index + 1}. ${chalk.red(error.message)}`);
|
|
194
194
|
if (error.suggestion) {
|
|
195
|
-
console.log(` ${chalk.blue('
|
|
195
|
+
console.log(` ${chalk.blue('' + error.suggestion)}`);
|
|
196
196
|
}
|
|
197
197
|
if (error.example) {
|
|
198
198
|
console.log(` ${chalk.gray('Example:')}`);
|
|
@@ -210,7 +210,7 @@ async function validateCommand(specFile, options = {}) {
|
|
|
210
210
|
|
|
211
211
|
// Show warnings
|
|
212
212
|
if (finalResult.warnings && finalResult.warnings.length > 0) {
|
|
213
|
-
console.log(chalk.yellow('\
|
|
213
|
+
console.log(chalk.yellow('\nWarnings:'));
|
|
214
214
|
finalResult.warnings.forEach((warning, index) => {
|
|
215
215
|
console.log(` ${index + 1}. ${chalk.yellow(warning.message)}`);
|
|
216
216
|
});
|
|
@@ -238,7 +238,7 @@ async function validateCommand(specFile, options = {}) {
|
|
|
238
238
|
)
|
|
239
239
|
);
|
|
240
240
|
} else {
|
|
241
|
-
console.error(chalk.red('
|
|
241
|
+
console.error(chalk.red('Error during validation:'), error.message);
|
|
242
242
|
}
|
|
243
243
|
// Don't call process.exit in test environment
|
|
244
244
|
if (process.env.NODE_ENV !== 'test' && !process.env.JEST_WORKER_ID) {
|