@paths.design/caws-cli 4.0.0 → 4.1.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/dist/commands/archive.d.ts +50 -0
- package/dist/commands/archive.d.ts.map +1 -0
- package/dist/commands/archive.js +353 -0
- package/dist/commands/iterate.d.ts.map +1 -1
- package/dist/commands/iterate.js +12 -13
- package/dist/commands/mode.d.ts +24 -0
- package/dist/commands/mode.d.ts.map +1 -0
- package/dist/commands/mode.js +259 -0
- package/dist/commands/plan.d.ts +49 -0
- package/dist/commands/plan.d.ts.map +1 -0
- package/dist/commands/plan.js +448 -0
- package/dist/commands/quality-gates.d.ts +52 -0
- package/dist/commands/quality-gates.d.ts.map +1 -0
- package/dist/commands/quality-gates.js +490 -0
- package/dist/commands/specs.d.ts +71 -0
- package/dist/commands/specs.d.ts.map +1 -0
- package/dist/commands/specs.js +735 -0
- package/dist/commands/status.d.ts +4 -3
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +552 -22
- package/dist/commands/tutorial.d.ts +55 -0
- package/dist/commands/tutorial.d.ts.map +1 -0
- package/dist/commands/tutorial.js +481 -0
- package/dist/commands/validate.d.ts +10 -3
- package/dist/commands/validate.d.ts.map +1 -1
- package/dist/commands/validate.js +137 -54
- package/dist/config/modes.d.ts +225 -0
- package/dist/config/modes.d.ts.map +1 -0
- package/dist/config/modes.js +321 -0
- package/dist/constants/spec-types.d.ts +41 -0
- package/dist/constants/spec-types.d.ts.map +1 -0
- package/dist/constants/spec-types.js +42 -0
- package/dist/index-new.d.ts +5 -0
- package/dist/index-new.d.ts.map +1 -0
- package/dist/index-new.js +317 -0
- package/dist/index.js +225 -10
- package/dist/index.js.backup +4711 -0
- package/dist/scaffold/git-hooks.d.ts.map +1 -1
- package/dist/scaffold/git-hooks.js +32 -44
- package/dist/scaffold/index.d.ts.map +1 -1
- package/dist/scaffold/index.js +19 -0
- package/dist/utils/quality-gates-errors.js +520 -0
- package/dist/utils/quality-gates.d.ts +49 -0
- package/dist/utils/quality-gates.d.ts.map +1 -0
- package/dist/utils/quality-gates.js +361 -0
- package/dist/utils/spec-resolver.d.ts +88 -0
- package/dist/utils/spec-resolver.d.ts.map +1 -0
- package/dist/utils/spec-resolver.js +602 -0
- package/package.json +6 -5
- package/templates/.cursor/hooks/caws-scope-guard.sh +64 -8
- package/templates/.cursor/hooks/validate-spec.sh +22 -12
- package/templates/.cursor/rules/{01-claims-verification.mdc → 00-claims-verification.mdc} +1 -1
- package/templates/.cursor/rules/01-working-style.mdc +50 -0
- package/templates/.cursor/rules/{02-testing-standards.mdc → 02-quality-gates.mdc} +84 -29
- package/templates/.cursor/rules/03-naming-and-refactor.mdc +33 -0
- package/templates/.cursor/rules/04-logging-language-style.mdc +23 -0
- package/templates/.cursor/rules/05-safe-defaults-guards.mdc +23 -0
- package/templates/.cursor/rules/06-typescript-conventions.mdc +36 -0
- package/templates/.cursor/rules/07-process-ops.mdc +20 -0
- package/templates/.cursor/rules/08-solid-and-architecture.mdc +16 -0
- package/templates/.cursor/rules/09-docstrings.mdc +89 -0
- package/templates/.cursor/rules/10-authorship-and-attribution.mdc +15 -0
- package/templates/.cursor/rules/11-documentation-quality-standards.mdc +390 -0
- package/templates/.cursor/rules/12-scope-management-waivers.mdc +385 -0
- package/templates/.cursor/rules/13-implementation-completeness.mdc +516 -0
- package/templates/.cursor/rules/14-language-agnostic-standards.mdc +588 -0
- package/templates/.cursor/rules/15-sophisticated-todo-detection.mdc +425 -0
- package/templates/.cursor/rules/README.md +93 -7
- package/templates/apps/tools/caws/prompt-lint.js.backup +274 -0
- package/templates/apps/tools/caws/provenance.js.backup +73 -0
- package/templates/scripts/quality-gates/check-god-objects.js +146 -0
- package/templates/scripts/quality-gates/run-quality-gates.js +50 -0
- package/templates/scripts/v3/analysis/todo_analyzer.py +1950 -0
- package/templates/.cursor/rules/03-infrastructure-standards.mdc +0 -251
- package/templates/.cursor/rules/04-documentation-integrity.mdc +0 -291
- package/templates/.cursor/rules/05-production-readiness-checklist.mdc +0 -214
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @fileoverview Validate Command Handler
|
|
3
|
-
* Handles validation commands for CAWS CLI
|
|
3
|
+
* Handles validation commands for CAWS CLI with multi-spec support
|
|
4
4
|
* @author @darianrosebrook
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
const fs = require('fs-extra');
|
|
8
7
|
const path = require('path');
|
|
9
|
-
const yaml = require('js-yaml');
|
|
10
8
|
const chalk = require('chalk');
|
|
11
9
|
|
|
12
10
|
// Import validation functionality
|
|
@@ -15,47 +13,40 @@ const {
|
|
|
15
13
|
getComplianceGrade,
|
|
16
14
|
} = require('../validation/spec-validation');
|
|
17
15
|
|
|
16
|
+
// Import spec resolution system
|
|
17
|
+
const { resolveSpec, suggestMigration } = require('../utils/spec-resolver');
|
|
18
|
+
|
|
18
19
|
/**
|
|
19
20
|
* Validate command handler
|
|
20
|
-
* Enhanced with JSON output format
|
|
21
|
-
* @param {string} specFile - Path to spec file
|
|
21
|
+
* Enhanced with multi-spec support and JSON output format
|
|
22
|
+
* @param {string} specFile - Path to spec file (optional, uses spec resolution)
|
|
22
23
|
* @param {Object} options - Command options
|
|
24
|
+
* @param {string} [options.specId] - Feature-specific spec ID
|
|
25
|
+
* @param {boolean} [options.interactive] - Use interactive spec selection
|
|
26
|
+
* @param {boolean} [options.format] - Output format (json)
|
|
23
27
|
*/
|
|
24
|
-
async function validateCommand(specFile, options) {
|
|
28
|
+
async function validateCommand(specFile, options = {}) {
|
|
25
29
|
try {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
passed: false,
|
|
34
|
-
verdict: 'fail',
|
|
35
|
-
errors: [
|
|
36
|
-
{
|
|
37
|
-
field: 'spec_file',
|
|
38
|
-
message: `Spec file not found: ${specPath}`,
|
|
39
|
-
suggestion: 'Run "caws init" first to create a working spec',
|
|
40
|
-
},
|
|
41
|
-
],
|
|
42
|
-
},
|
|
43
|
-
null,
|
|
44
|
-
2
|
|
45
|
-
)
|
|
46
|
-
);
|
|
47
|
-
} else {
|
|
48
|
-
console.error(chalk.red(`❌ Spec file not found: ${specPath}`));
|
|
49
|
-
console.error(chalk.blue('💡 Run "caws init" first to create a working spec'));
|
|
50
|
-
}
|
|
51
|
-
process.exit(1);
|
|
52
|
-
}
|
|
30
|
+
// Resolve spec using priority system
|
|
31
|
+
const resolved = await resolveSpec({
|
|
32
|
+
specId: options.specId,
|
|
33
|
+
specFile,
|
|
34
|
+
warnLegacy: options.format !== 'json',
|
|
35
|
+
interactive: options.interactive || false,
|
|
36
|
+
});
|
|
53
37
|
|
|
54
|
-
const
|
|
55
|
-
|
|
38
|
+
const { path: specPath, type: specType, spec } = resolved;
|
|
39
|
+
|
|
40
|
+
// Suggest migration if using legacy spec
|
|
41
|
+
if (specType === 'legacy' && options.format !== 'json') {
|
|
42
|
+
await suggestMigration();
|
|
43
|
+
}
|
|
56
44
|
|
|
57
45
|
if (options.format !== 'json') {
|
|
58
|
-
console.log(
|
|
46
|
+
console.log(
|
|
47
|
+
chalk.cyan(`🔍 Validating ${specType === 'feature' ? 'feature' : 'working'} spec...`)
|
|
48
|
+
);
|
|
49
|
+
console.log(chalk.gray(` Spec: ${path.relative(process.cwd(), specPath)}`));
|
|
59
50
|
}
|
|
60
51
|
|
|
61
52
|
const result = validateWorkingSpecWithSuggestions(spec, {
|
|
@@ -64,16 +55,87 @@ async function validateCommand(specFile, options) {
|
|
|
64
55
|
suggestions: !options.quiet,
|
|
65
56
|
checkBudget: true,
|
|
66
57
|
projectRoot: path.dirname(specPath),
|
|
58
|
+
specType,
|
|
67
59
|
});
|
|
68
60
|
|
|
61
|
+
// Enhanced validation for multi-spec scenarios
|
|
62
|
+
const enhancedValidation = { ...result };
|
|
63
|
+
|
|
64
|
+
if (specType === 'feature') {
|
|
65
|
+
// Check for potential issues in feature specs
|
|
66
|
+
const featureIssues = [];
|
|
67
|
+
|
|
68
|
+
// Check scope conflicts (if multiple specs exist)
|
|
69
|
+
const { checkMultiSpecStatus } = require('../utils/spec-resolver');
|
|
70
|
+
const multiSpecStatus = await checkMultiSpecStatus();
|
|
71
|
+
|
|
72
|
+
if (multiSpecStatus.specCount > 1) {
|
|
73
|
+
const { checkScopeConflicts } = require('../utils/spec-resolver');
|
|
74
|
+
const conflicts = await checkScopeConflicts(
|
|
75
|
+
Object.keys(multiSpecStatus.registry?.specs || {})
|
|
76
|
+
);
|
|
77
|
+
|
|
78
|
+
if (conflicts.length > 0) {
|
|
79
|
+
const myConflicts = conflicts.filter((c) => c.spec1 === spec.id || c.spec2 === spec.id);
|
|
80
|
+
|
|
81
|
+
if (myConflicts.length > 0) {
|
|
82
|
+
featureIssues.push({
|
|
83
|
+
type: 'warning',
|
|
84
|
+
message: `Scope conflicts detected with other specs`,
|
|
85
|
+
details: myConflicts.map((c) => {
|
|
86
|
+
const otherSpec = c.spec1 === spec.id ? c.spec2 : c.spec1;
|
|
87
|
+
return `Conflict with ${otherSpec}: ${c.conflicts.join(', ')}`;
|
|
88
|
+
}),
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
// Check for missing contracts in feature specs
|
|
95
|
+
if (spec.contracts && spec.contracts.length === 0 && spec.mode === 'feature') {
|
|
96
|
+
featureIssues.push({
|
|
97
|
+
type: 'info',
|
|
98
|
+
message: 'Consider adding API contracts for better integration',
|
|
99
|
+
suggestion: 'Add contracts section to define API boundaries',
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
// Check for overly broad scopes
|
|
104
|
+
if (spec.scope && spec.scope.in) {
|
|
105
|
+
const broadPatterns = spec.scope.in.filter(
|
|
106
|
+
(pattern) => pattern === 'src/' || pattern === 'tests/' || pattern.includes('*')
|
|
107
|
+
);
|
|
108
|
+
|
|
109
|
+
if (broadPatterns.length > 0) {
|
|
110
|
+
featureIssues.push({
|
|
111
|
+
type: 'warning',
|
|
112
|
+
message: 'Broad scope patterns detected',
|
|
113
|
+
details: `Patterns like ${broadPatterns.join(', ')} may conflict with other features`,
|
|
114
|
+
suggestion: 'Use more specific scope.in paths',
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
// Add feature-specific issues to validation result
|
|
120
|
+
if (featureIssues.length > 0) {
|
|
121
|
+
enhancedValidation.issues = (enhancedValidation.issues || []).concat(featureIssues);
|
|
122
|
+
enhancedValidation.featureValidation = {
|
|
123
|
+
passed: featureIssues.filter((i) => i.type === 'error').length === 0,
|
|
124
|
+
issues: featureIssues,
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
const finalResult = enhancedValidation;
|
|
130
|
+
|
|
69
131
|
// Format output based on requested format
|
|
70
132
|
if (options.format === 'json') {
|
|
71
133
|
// Structured JSON output matching CAWSValidationResult
|
|
72
134
|
const jsonResult = {
|
|
73
|
-
passed:
|
|
135
|
+
passed: finalResult.valid,
|
|
74
136
|
cawsVersion: '3.4.0',
|
|
75
137
|
timestamp: new Date().toISOString(),
|
|
76
|
-
verdict:
|
|
138
|
+
verdict: finalResult.valid ? 'pass' : 'fail',
|
|
77
139
|
spec: {
|
|
78
140
|
id: spec.id,
|
|
79
141
|
title: spec.title,
|
|
@@ -81,21 +143,29 @@ async function validateCommand(specFile, options) {
|
|
|
81
143
|
mode: spec.mode,
|
|
82
144
|
},
|
|
83
145
|
validation: {
|
|
84
|
-
errors:
|
|
85
|
-
warnings:
|
|
86
|
-
fixes:
|
|
146
|
+
errors: finalResult.errors || [],
|
|
147
|
+
warnings: finalResult.warnings || [],
|
|
148
|
+
fixes: finalResult.fixes || [],
|
|
87
149
|
},
|
|
88
|
-
budgetCompliance:
|
|
150
|
+
budgetCompliance: finalResult.budget_check || null,
|
|
151
|
+
specType,
|
|
152
|
+
specPath: path.relative(process.cwd(), specPath),
|
|
153
|
+
featureValidation: finalResult.featureValidation,
|
|
89
154
|
};
|
|
90
155
|
|
|
91
156
|
console.log(JSON.stringify(jsonResult, null, 2));
|
|
92
157
|
|
|
93
|
-
if (!
|
|
94
|
-
process.exit
|
|
158
|
+
if (!finalResult.valid) {
|
|
159
|
+
// Don't call process.exit in test environment
|
|
160
|
+
if (process.env.NODE_ENV !== 'test' && !process.env.JEST_WORKER_ID) {
|
|
161
|
+
process.exit(1);
|
|
162
|
+
} else {
|
|
163
|
+
throw new Error('Validation failed');
|
|
164
|
+
}
|
|
95
165
|
}
|
|
96
166
|
} else {
|
|
97
167
|
// Human-readable text output
|
|
98
|
-
if (
|
|
168
|
+
if (finalResult.valid) {
|
|
99
169
|
console.log(chalk.green('✅ Working spec validation passed'));
|
|
100
170
|
if (!options.quiet) {
|
|
101
171
|
console.log(chalk.gray(` Risk tier: ${spec.risk_tier}`));
|
|
@@ -103,10 +173,15 @@ async function validateCommand(specFile, options) {
|
|
|
103
173
|
if (spec.title) {
|
|
104
174
|
console.log(chalk.gray(` Title: ${spec.title}`));
|
|
105
175
|
}
|
|
106
|
-
if (
|
|
107
|
-
const grade = getComplianceGrade(
|
|
108
|
-
const scorePercent = (
|
|
109
|
-
const scoreColor =
|
|
176
|
+
if (finalResult.complianceScore !== undefined) {
|
|
177
|
+
const grade = getComplianceGrade(finalResult.complianceScore);
|
|
178
|
+
const scorePercent = (finalResult.complianceScore * 100).toFixed(0);
|
|
179
|
+
const scoreColor =
|
|
180
|
+
finalResult.complianceScore >= 0.9
|
|
181
|
+
? 'green'
|
|
182
|
+
: finalResult.complianceScore >= 0.7
|
|
183
|
+
? 'yellow'
|
|
184
|
+
: 'red';
|
|
110
185
|
console.log(chalk[scoreColor](` Compliance: ${scorePercent}% (Grade ${grade})`));
|
|
111
186
|
}
|
|
112
187
|
}
|
|
@@ -114,7 +189,7 @@ async function validateCommand(specFile, options) {
|
|
|
114
189
|
console.log(chalk.red('❌ Working spec validation failed'));
|
|
115
190
|
|
|
116
191
|
// Show errors
|
|
117
|
-
|
|
192
|
+
finalResult.errors.forEach((error, index) => {
|
|
118
193
|
console.log(` ${index + 1}. ${chalk.red(error.message)}`);
|
|
119
194
|
if (error.suggestion) {
|
|
120
195
|
console.log(` ${chalk.blue('💡 ' + error.suggestion)}`);
|
|
@@ -122,14 +197,19 @@ async function validateCommand(specFile, options) {
|
|
|
122
197
|
});
|
|
123
198
|
|
|
124
199
|
// Show warnings
|
|
125
|
-
if (
|
|
200
|
+
if (finalResult.warnings && finalResult.warnings.length > 0) {
|
|
126
201
|
console.log(chalk.yellow('\n⚠️ Warnings:'));
|
|
127
|
-
|
|
202
|
+
finalResult.warnings.forEach((warning, index) => {
|
|
128
203
|
console.log(` ${index + 1}. ${chalk.yellow(warning.message)}`);
|
|
129
204
|
});
|
|
130
205
|
}
|
|
131
206
|
|
|
132
|
-
process.exit
|
|
207
|
+
// Don't call process.exit in test environment
|
|
208
|
+
if (process.env.NODE_ENV !== 'test' && !process.env.JEST_WORKER_ID) {
|
|
209
|
+
process.exit(1);
|
|
210
|
+
} else {
|
|
211
|
+
throw new Error('Validation failed');
|
|
212
|
+
}
|
|
133
213
|
}
|
|
134
214
|
}
|
|
135
215
|
} catch (error) {
|
|
@@ -148,7 +228,10 @@ async function validateCommand(specFile, options) {
|
|
|
148
228
|
} else {
|
|
149
229
|
console.error(chalk.red('❌ Error during validation:'), error.message);
|
|
150
230
|
}
|
|
151
|
-
process.exit
|
|
231
|
+
// Don't call process.exit in test environment
|
|
232
|
+
if (process.env.NODE_ENV !== 'test' && !process.env.JEST_WORKER_ID) {
|
|
233
|
+
process.exit(1);
|
|
234
|
+
}
|
|
152
235
|
}
|
|
153
236
|
}
|
|
154
237
|
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
export namespace COMPLEXITY_TIERS {
|
|
2
|
+
namespace simple {
|
|
3
|
+
let name: string;
|
|
4
|
+
let description: string;
|
|
5
|
+
let color: chalk.Chalk;
|
|
6
|
+
let icon: string;
|
|
7
|
+
namespace features {
|
|
8
|
+
let workingSpec: boolean;
|
|
9
|
+
let basicValidation: boolean;
|
|
10
|
+
let statusDisplay: boolean;
|
|
11
|
+
let noQualityGates: boolean;
|
|
12
|
+
let noProvenance: boolean;
|
|
13
|
+
let noWaivers: boolean;
|
|
14
|
+
let noChangeBudgets: boolean;
|
|
15
|
+
let noMultiSpec: boolean;
|
|
16
|
+
}
|
|
17
|
+
namespace qualityRequirements {
|
|
18
|
+
let testCoverage: number;
|
|
19
|
+
let mutationScore: number;
|
|
20
|
+
let contracts: string;
|
|
21
|
+
}
|
|
22
|
+
let riskTiers: string[];
|
|
23
|
+
namespace commands {
|
|
24
|
+
let init: boolean;
|
|
25
|
+
let validate: boolean;
|
|
26
|
+
let status: boolean;
|
|
27
|
+
let specs: boolean;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
namespace standard {
|
|
31
|
+
let name_1: string;
|
|
32
|
+
export { name_1 as name };
|
|
33
|
+
let description_1: string;
|
|
34
|
+
export { description_1 as description };
|
|
35
|
+
let color_1: chalk.Chalk;
|
|
36
|
+
export { color_1 as color };
|
|
37
|
+
let icon_1: string;
|
|
38
|
+
export { icon_1 as icon };
|
|
39
|
+
export namespace features_1 {
|
|
40
|
+
let workingSpec_1: boolean;
|
|
41
|
+
export { workingSpec_1 as workingSpec };
|
|
42
|
+
export let fullValidation: boolean;
|
|
43
|
+
let statusDisplay_1: boolean;
|
|
44
|
+
export { statusDisplay_1 as statusDisplay };
|
|
45
|
+
export let qualityGates: boolean;
|
|
46
|
+
export let provenance: boolean;
|
|
47
|
+
export let waivers: boolean;
|
|
48
|
+
export let changeBudgets: boolean;
|
|
49
|
+
export let multiSpec: boolean;
|
|
50
|
+
export let changeFolders: boolean;
|
|
51
|
+
}
|
|
52
|
+
export { features_1 as features };
|
|
53
|
+
export namespace qualityRequirements_1 {
|
|
54
|
+
let testCoverage_1: number;
|
|
55
|
+
export { testCoverage_1 as testCoverage };
|
|
56
|
+
let mutationScore_1: number;
|
|
57
|
+
export { mutationScore_1 as mutationScore };
|
|
58
|
+
let contracts_1: string;
|
|
59
|
+
export { contracts_1 as contracts };
|
|
60
|
+
}
|
|
61
|
+
export { qualityRequirements_1 as qualityRequirements };
|
|
62
|
+
let riskTiers_1: string[];
|
|
63
|
+
export { riskTiers_1 as riskTiers };
|
|
64
|
+
export namespace commands_1 {
|
|
65
|
+
let init_1: boolean;
|
|
66
|
+
export { init_1 as init };
|
|
67
|
+
let validate_1: boolean;
|
|
68
|
+
export { validate_1 as validate };
|
|
69
|
+
let status_1: boolean;
|
|
70
|
+
export { status_1 as status };
|
|
71
|
+
let specs_1: boolean;
|
|
72
|
+
export { specs_1 as specs };
|
|
73
|
+
export let diagnose: boolean;
|
|
74
|
+
export let evaluate: boolean;
|
|
75
|
+
export let iterate: boolean;
|
|
76
|
+
let provenance_1: boolean;
|
|
77
|
+
export { provenance_1 as provenance };
|
|
78
|
+
let waivers_1: boolean;
|
|
79
|
+
export { waivers_1 as waivers };
|
|
80
|
+
export let hooks: boolean;
|
|
81
|
+
export let archive: boolean;
|
|
82
|
+
}
|
|
83
|
+
export { commands_1 as commands };
|
|
84
|
+
}
|
|
85
|
+
namespace enterprise {
|
|
86
|
+
let name_2: string;
|
|
87
|
+
export { name_2 as name };
|
|
88
|
+
let description_2: string;
|
|
89
|
+
export { description_2 as description };
|
|
90
|
+
let color_2: chalk.Chalk;
|
|
91
|
+
export { color_2 as color };
|
|
92
|
+
let icon_2: string;
|
|
93
|
+
export { icon_2 as icon };
|
|
94
|
+
export namespace features_2 {
|
|
95
|
+
let workingSpec_2: boolean;
|
|
96
|
+
export { workingSpec_2 as workingSpec };
|
|
97
|
+
let fullValidation_1: boolean;
|
|
98
|
+
export { fullValidation_1 as fullValidation };
|
|
99
|
+
let statusDisplay_2: boolean;
|
|
100
|
+
export { statusDisplay_2 as statusDisplay };
|
|
101
|
+
let qualityGates_1: boolean;
|
|
102
|
+
export { qualityGates_1 as qualityGates };
|
|
103
|
+
let provenance_2: boolean;
|
|
104
|
+
export { provenance_2 as provenance };
|
|
105
|
+
let waivers_2: boolean;
|
|
106
|
+
export { waivers_2 as waivers };
|
|
107
|
+
let changeBudgets_1: boolean;
|
|
108
|
+
export { changeBudgets_1 as changeBudgets };
|
|
109
|
+
let multiSpec_1: boolean;
|
|
110
|
+
export { multiSpec_1 as multiSpec };
|
|
111
|
+
let changeFolders_1: boolean;
|
|
112
|
+
export { changeFolders_1 as changeFolders };
|
|
113
|
+
export let auditTrails: boolean;
|
|
114
|
+
export let compliance: boolean;
|
|
115
|
+
export let advancedMonitoring: boolean;
|
|
116
|
+
}
|
|
117
|
+
export { features_2 as features };
|
|
118
|
+
export namespace qualityRequirements_2 {
|
|
119
|
+
let testCoverage_2: number;
|
|
120
|
+
export { testCoverage_2 as testCoverage };
|
|
121
|
+
let mutationScore_2: number;
|
|
122
|
+
export { mutationScore_2 as mutationScore };
|
|
123
|
+
let contracts_2: string;
|
|
124
|
+
export { contracts_2 as contracts };
|
|
125
|
+
}
|
|
126
|
+
export { qualityRequirements_2 as qualityRequirements };
|
|
127
|
+
let riskTiers_2: string[];
|
|
128
|
+
export { riskTiers_2 as riskTiers };
|
|
129
|
+
export namespace commands_2 {
|
|
130
|
+
let init_2: boolean;
|
|
131
|
+
export { init_2 as init };
|
|
132
|
+
let validate_2: boolean;
|
|
133
|
+
export { validate_2 as validate };
|
|
134
|
+
let status_2: boolean;
|
|
135
|
+
export { status_2 as status };
|
|
136
|
+
let specs_2: boolean;
|
|
137
|
+
export { specs_2 as specs };
|
|
138
|
+
let diagnose_1: boolean;
|
|
139
|
+
export { diagnose_1 as diagnose };
|
|
140
|
+
let evaluate_1: boolean;
|
|
141
|
+
export { evaluate_1 as evaluate };
|
|
142
|
+
let iterate_1: boolean;
|
|
143
|
+
export { iterate_1 as iterate };
|
|
144
|
+
let provenance_3: boolean;
|
|
145
|
+
export { provenance_3 as provenance };
|
|
146
|
+
let waivers_3: boolean;
|
|
147
|
+
export { waivers_3 as waivers };
|
|
148
|
+
let hooks_1: boolean;
|
|
149
|
+
export { hooks_1 as hooks };
|
|
150
|
+
let archive_1: boolean;
|
|
151
|
+
export { archive_1 as archive };
|
|
152
|
+
export let troubleshoot: boolean;
|
|
153
|
+
export let testAnalysis: boolean;
|
|
154
|
+
export let qualityMonitor: boolean;
|
|
155
|
+
}
|
|
156
|
+
export { commands_2 as commands };
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Get tier information
|
|
161
|
+
* @param {string} tier - Tier name
|
|
162
|
+
* @returns {Object} Tier configuration
|
|
163
|
+
*/
|
|
164
|
+
export function getTier(tier: string): any;
|
|
165
|
+
/**
|
|
166
|
+
* Get available tiers
|
|
167
|
+
* @returns {string[]} Array of tier names
|
|
168
|
+
*/
|
|
169
|
+
export function getAvailableTiers(): string[];
|
|
170
|
+
/**
|
|
171
|
+
* Get current mode from configuration
|
|
172
|
+
* @returns {Promise<string>} Current mode
|
|
173
|
+
*/
|
|
174
|
+
export function getCurrentMode(): Promise<string>;
|
|
175
|
+
/**
|
|
176
|
+
* Set current mode in configuration
|
|
177
|
+
* @param {string} mode - Mode to set
|
|
178
|
+
* @returns {Promise<boolean>} Success status
|
|
179
|
+
*/
|
|
180
|
+
export function setCurrentMode(mode: string): Promise<boolean>;
|
|
181
|
+
/**
|
|
182
|
+
* Check if a command is available in the current tier
|
|
183
|
+
* @param {string} command - Command name
|
|
184
|
+
* @param {string} tier - Tier name
|
|
185
|
+
* @returns {boolean} Whether command is available
|
|
186
|
+
*/
|
|
187
|
+
export function isCommandAvailable(command: string, tier?: string): boolean;
|
|
188
|
+
/**
|
|
189
|
+
* Check if a feature is enabled in the current tier
|
|
190
|
+
* @param {string} feature - Feature name
|
|
191
|
+
* @param {string} tier - Tier name
|
|
192
|
+
* @returns {boolean} Whether feature is enabled
|
|
193
|
+
*/
|
|
194
|
+
export function isFeatureEnabled(feature: string, tier?: string): boolean;
|
|
195
|
+
/**
|
|
196
|
+
* Get quality requirements for a tier
|
|
197
|
+
* @param {string} tier - Tier name
|
|
198
|
+
* @returns {Object} Quality requirements
|
|
199
|
+
*/
|
|
200
|
+
export function getQualityRequirements(tier?: string): any;
|
|
201
|
+
/**
|
|
202
|
+
* Get supported risk tiers for a complexity tier
|
|
203
|
+
* @param {string} tier - Tier name
|
|
204
|
+
* @returns {string[]} Supported risk tiers
|
|
205
|
+
*/
|
|
206
|
+
export function getSupportedRiskTiers(tier?: string): string[];
|
|
207
|
+
/**
|
|
208
|
+
* Validate if a risk tier is supported in the current complexity tier
|
|
209
|
+
* @param {string} riskTier - Risk tier to validate
|
|
210
|
+
* @param {string} complexityTier - Complexity tier
|
|
211
|
+
* @returns {boolean} Whether risk tier is supported
|
|
212
|
+
*/
|
|
213
|
+
export function isRiskTierSupported(riskTier: string, complexityTier?: string): boolean;
|
|
214
|
+
/**
|
|
215
|
+
* Display tier comparison
|
|
216
|
+
*/
|
|
217
|
+
export function displayTierComparison(): void;
|
|
218
|
+
/**
|
|
219
|
+
* Get tier recommendation based on project characteristics
|
|
220
|
+
* @param {Object} projectInfo - Project information
|
|
221
|
+
* @returns {string} Recommended tier
|
|
222
|
+
*/
|
|
223
|
+
export function getTierRecommendation(projectInfo?: any): string;
|
|
224
|
+
import chalk = require("chalk");
|
|
225
|
+
//# sourceMappingURL=modes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modes.d.ts","sourceRoot":"","sources":["../../src/config/modes.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2HA;;;;GAIG;AACH,8BAHW,MAAM,OAKhB;AAED;;;GAGG;AACH,qCAFa,MAAM,EAAE,CAIpB;AA8FD;;;GAGG;AACH,kCAFa,OAAO,CAAC,MAAM,CAAC,CAgB3B;AAED;;;;GAIG;AACH,qCAHW,MAAM,GACJ,OAAO,CAAC,OAAO,CAAC,CAuB5B;AA1ID;;;;;GAKG;AACH,4CAJW,MAAM,SACN,MAAM,GACJ,OAAO,CAKnB;AAED;;;;;GAKG;AACH,0CAJW,MAAM,SACN,MAAM,GACJ,OAAO,CAKnB;AAED;;;;GAIG;AACH,8CAHW,MAAM,OAMhB;AAED;;;;GAIG;AACH,6CAHW,MAAM,GACJ,MAAM,EAAE,CAKpB;AAED;;;;;GAKG;AACH,8CAJW,MAAM,mBACN,MAAM,GACJ,OAAO,CAKnB;AAED;;GAEG;AACH,8CAkCC;AAkDD;;;;GAIG;AACH,0DAFa,MAAM,CAsBlB"}
|