@paths.design/caws-cli 8.2.1 → 8.3.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.
Files changed (51) hide show
  1. package/dist/budget-derivation.js +10 -10
  2. package/dist/commands/archive.js +22 -22
  3. package/dist/commands/burnup.js +7 -7
  4. package/dist/commands/diagnose.js +25 -25
  5. package/dist/commands/evaluate.js +20 -20
  6. package/dist/commands/init.js +71 -72
  7. package/dist/commands/iterate.js +21 -21
  8. package/dist/commands/mode.js +11 -11
  9. package/dist/commands/plan.js +5 -5
  10. package/dist/commands/provenance.js +86 -86
  11. package/dist/commands/quality-gates.js +3 -3
  12. package/dist/commands/quality-monitor.js +17 -17
  13. package/dist/commands/session.js +312 -0
  14. package/dist/commands/specs.js +44 -44
  15. package/dist/commands/status.js +43 -43
  16. package/dist/commands/templates.js +14 -14
  17. package/dist/commands/tool.js +1 -1
  18. package/dist/commands/troubleshoot.js +11 -11
  19. package/dist/commands/tutorial.js +119 -119
  20. package/dist/commands/validate.js +6 -6
  21. package/dist/commands/waivers.js +93 -60
  22. package/dist/commands/workflow.js +17 -17
  23. package/dist/commands/worktree.js +13 -13
  24. package/dist/config/index.js +5 -5
  25. package/dist/config/modes.js +7 -7
  26. package/dist/constants/spec-types.js +5 -5
  27. package/dist/error-handler.js +4 -4
  28. package/dist/generators/jest-config-generator.js +3 -3
  29. package/dist/generators/working-spec.js +4 -4
  30. package/dist/index.js +79 -27
  31. package/dist/minimal-cli.js +9 -9
  32. package/dist/policy/PolicyManager.js +1 -1
  33. package/dist/scaffold/claude-hooks.js +7 -7
  34. package/dist/scaffold/cursor-hooks.js +8 -8
  35. package/dist/scaffold/git-hooks.js +152 -152
  36. package/dist/scaffold/index.js +48 -48
  37. package/dist/session/session-manager.js +548 -0
  38. package/dist/test-analysis.js +20 -20
  39. package/dist/utils/command-wrapper.js +8 -8
  40. package/dist/utils/detection.js +7 -7
  41. package/dist/utils/finalization.js +21 -21
  42. package/dist/utils/git-lock.js +3 -3
  43. package/dist/utils/gitignore-updater.js +1 -1
  44. package/dist/utils/project-analysis.js +7 -7
  45. package/dist/utils/quality-gates-utils.js +35 -35
  46. package/dist/utils/spec-resolver.js +8 -8
  47. package/dist/utils/typescript-detector.js +5 -5
  48. package/dist/utils/yaml-validation.js +1 -1
  49. package/dist/validation/spec-validation.js +4 -4
  50. package/dist/worktree/worktree-manager.js +11 -5
  51. 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
- • šŸ“‹ 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
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. āœ… Always validate first: \`caws validate\`
43
- 2. šŸ“Š Check current status: \`caws status --visual\`
44
- 3. šŸŽÆ Get guidance: \`caws iterate --current-state "Starting implementation"\`
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
- 🟢 **Simple Mode** (70% coverage, 30% mutation)
58
- • Perfect for small projects and prototyping
59
- • Minimal commands and features
60
- • Quick setup and iteration
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
- 🟔 **Standard Mode** (80% coverage, 50% mutation)
63
- • Balanced approach for most projects
64
- • Quality gates and provenance tracking
65
- • Change management and archival
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
- šŸ”“ **Enterprise Mode** (90% coverage, 70% mutation)
68
- • Full compliance and audit trails
69
- • Advanced monitoring and reporting
70
- • Maximum quality assurance
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
- šŸ“ **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
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
- • \`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
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
- • Acceptance criteria with progress tracking
97
- • Risk tier and complexity mode
98
- • Contract definitions and validation
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. šŸ“‹ **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
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
- • \`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
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
- šŸ” **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
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
- 🚫 **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
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
- šŸŽ‰ Congratulations! You've completed the CAWS agent tutorial.
184
+ Congratulations! You've completed the CAWS agent tutorial.
185
185
 
186
186
  **Key Takeaways**:
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
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
- šŸ’” Pro tip: Use \`caws status --visual\` regularly to stay oriented
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
- • šŸ“‹ Clear specification management
222
- • šŸ”„ Structured change workflows
223
- • šŸ“Š Progress visibility for stakeholders
224
- • šŸ—ļø Quality gates and validation
225
- • šŸ¤ Better AI-human collaboration
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
- • 🟢 Simple: Small projects, quick prototyping
246
- • 🟔 Standard: Most teams and projects
247
- • šŸ”“ Enterprise: Large teams, compliance requirements
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
- • A new spec file in \`.caws/specs/user-login.yaml\`
262
- • Basic structure with acceptance criteria template
263
- • Automatic registration in the specs registry
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
- • āœ… Testable and verifiable
292
- • šŸ“ Specific and measurable
293
- • šŸŽÆ Focused on user value
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
- • āœ… Validates all criteria are met
330
- • šŸ“¦ Moves completed work to archive
331
- • šŸ“Š Updates provenance chain
332
- • šŸŽÆ Provides completion summary
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(`\nšŸ“š Step ${stepNumber}/${totalSteps}: ${step.title}`));
351
- console.log(chalk.cyan('━'.repeat(60)));
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('🟢') || line.startsWith('🟔') || 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šŸ’” ${step.action}`));
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(`\nšŸš€ Starting ${tutorial.icon} ${tutorial.name}`));
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šŸŽ‰ ${tutorial.icon} ${tutorial.name} Complete!`));
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('\nšŸ“š Available CAWS Tutorials'));
440
- console.log(chalk.cyan('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n'));
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(`šŸ” Validating ${specType === 'feature' ? 'feature' : 'working'} spec...`)
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('āœ… Working spec validation passed'));
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('āŒ Working spec validation failed'));
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('šŸ’” ' + error.suggestion)}`);
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('\nāš ļø Warnings:'));
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('āŒ Error during validation:'), error.message);
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) {