@paths.design/caws-cli 6.0.0 → 7.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/budget-derivation.d.ts +74 -0
- package/dist/budget-derivation.d.ts.map +1 -0
- package/dist/cicd-optimizer.d.ts +142 -0
- package/dist/cicd-optimizer.d.ts.map +1 -0
- package/dist/commands/archive.d.ts +50 -0
- package/dist/commands/archive.d.ts.map +1 -0
- package/dist/commands/burnup.d.ts +6 -0
- package/dist/commands/burnup.d.ts.map +1 -0
- package/dist/commands/diagnose.d.ts +52 -0
- package/dist/commands/diagnose.d.ts.map +1 -0
- package/dist/commands/evaluate.d.ts +8 -0
- package/dist/commands/evaluate.d.ts.map +1 -0
- package/dist/commands/init.d.ts +5 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/iterate.d.ts +8 -0
- package/dist/commands/iterate.d.ts.map +1 -0
- package/dist/commands/mode.d.ts +24 -0
- package/dist/commands/mode.d.ts.map +1 -0
- package/dist/commands/plan.d.ts +49 -0
- package/dist/commands/plan.d.ts.map +1 -0
- package/dist/commands/provenance.d.ts +32 -0
- package/dist/commands/provenance.d.ts.map +1 -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 +4 -2
- package/dist/commands/quality-monitor.d.ts +17 -0
- package/dist/commands/quality-monitor.d.ts.map +1 -0
- package/dist/commands/specs.d.ts +71 -0
- package/dist/commands/specs.d.ts.map +1 -0
- package/dist/commands/status.d.ts +44 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/templates.d.ts +74 -0
- package/dist/commands/templates.d.ts.map +1 -0
- package/dist/commands/tool.d.ts +13 -0
- package/dist/commands/tool.d.ts.map +1 -0
- package/dist/commands/troubleshoot.d.ts +8 -0
- package/dist/commands/troubleshoot.d.ts.map +1 -0
- package/dist/commands/tutorial.d.ts +55 -0
- package/dist/commands/tutorial.d.ts.map +1 -0
- package/dist/commands/validate.d.ts +15 -0
- package/dist/commands/validate.d.ts.map +1 -0
- package/dist/commands/waivers.d.ts +8 -0
- package/dist/commands/waivers.d.ts.map +1 -0
- package/dist/commands/workflow.d.ts +85 -0
- package/dist/commands/workflow.d.ts.map +1 -0
- package/dist/config/index.d.ts +29 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/modes.d.ts +225 -0
- package/dist/config/modes.d.ts.map +1 -0
- package/dist/constants/spec-types.d.ts +41 -0
- package/dist/constants/spec-types.d.ts.map +1 -0
- package/dist/error-handler.d.ts +164 -0
- package/dist/error-handler.d.ts.map +1 -0
- package/dist/generators/jest-config.d.ts +32 -0
- package/dist/generators/jest-config.d.ts.map +1 -0
- package/dist/generators/working-spec.d.ts +13 -0
- package/dist/generators/working-spec.d.ts.map +1 -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.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js.backup +4711 -0
- package/dist/minimal-cli.d.ts +3 -0
- package/dist/minimal-cli.d.ts.map +1 -0
- package/dist/policy/PolicyManager.d.ts +104 -0
- package/dist/policy/PolicyManager.d.ts.map +1 -0
- package/dist/scaffold/cursor-hooks.d.ts +7 -0
- package/dist/scaffold/cursor-hooks.d.ts.map +1 -0
- package/dist/scaffold/git-hooks.d.ts +20 -0
- package/dist/scaffold/git-hooks.d.ts.map +1 -0
- package/dist/scaffold/git-hooks.js +65 -7
- package/dist/scaffold/index.d.ts +20 -0
- package/dist/scaffold/index.d.ts.map +1 -0
- package/dist/scaffold/index.js +179 -41
- package/dist/spec/SpecFileManager.d.ts +146 -0
- package/dist/spec/SpecFileManager.d.ts.map +1 -0
- package/dist/test-analysis.d.ts +182 -0
- package/dist/test-analysis.d.ts.map +1 -0
- package/dist/tool-interface.d.ts +236 -0
- package/dist/tool-interface.d.ts.map +1 -0
- package/dist/tool-loader.d.ts +77 -0
- package/dist/tool-loader.d.ts.map +1 -0
- package/dist/tool-validator.d.ts +72 -0
- package/dist/tool-validator.d.ts.map +1 -0
- package/dist/utils/detection.d.ts +7 -0
- package/dist/utils/detection.d.ts.map +1 -0
- package/dist/utils/finalization.d.ts +17 -0
- package/dist/utils/finalization.d.ts.map +1 -0
- package/dist/utils/project-analysis.d.ts +14 -0
- package/dist/utils/project-analysis.d.ts.map +1 -0
- package/dist/utils/project-analysis.js +103 -0
- package/dist/utils/quality-gates.d.ts +49 -0
- package/dist/utils/quality-gates.d.ts.map +1 -0
- package/dist/utils/spec-resolver.d.ts +88 -0
- package/dist/utils/spec-resolver.d.ts.map +1 -0
- package/dist/utils/typescript-detector.d.ts +63 -0
- package/dist/utils/typescript-detector.d.ts.map +1 -0
- package/dist/validation/spec-validation.d.ts +43 -0
- package/dist/validation/spec-validation.d.ts.map +1 -0
- package/dist/waivers-manager.d.ts +167 -0
- package/dist/waivers-manager.d.ts.map +1 -0
- package/package.json +1 -1
- package/templates/COMMIT_CONVENTIONS.md +86 -0
- package/templates/apps/tools/caws/prompt-lint.js.backup +274 -0
- package/templates/apps/tools/caws/provenance.js.backup +73 -0
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Spec File Manager - Handles WorkingSpec file operations and YAML conversion
|
|
3
|
+
*
|
|
4
|
+
* Features:
|
|
5
|
+
* - Bidirectional WorkingSpec ↔ YAML conversion
|
|
6
|
+
* - Temporary file support for validation workflows
|
|
7
|
+
* - Backup/restore capabilities
|
|
8
|
+
* - Automatic cleanup of old temporary files
|
|
9
|
+
*/
|
|
10
|
+
export class SpecFileManager {
|
|
11
|
+
constructor(config?: {});
|
|
12
|
+
projectRoot: any;
|
|
13
|
+
useTemporaryFiles: any;
|
|
14
|
+
tempDir: any;
|
|
15
|
+
/**
|
|
16
|
+
* Convert WorkingSpec object to YAML string
|
|
17
|
+
*
|
|
18
|
+
* @param {Object} spec - WorkingSpec to convert
|
|
19
|
+
* @returns {string} YAML string representation
|
|
20
|
+
*/
|
|
21
|
+
specToYaml(spec: any): string;
|
|
22
|
+
/**
|
|
23
|
+
* Parse YAML string to WorkingSpec object
|
|
24
|
+
*
|
|
25
|
+
* @param {string} yamlContent - YAML string to parse
|
|
26
|
+
* @returns {Object} Parsed WorkingSpec object
|
|
27
|
+
* @throws {Error} If YAML is invalid or doesn't match WorkingSpec schema
|
|
28
|
+
*/
|
|
29
|
+
yamlToSpec(yamlContent: string): any;
|
|
30
|
+
/**
|
|
31
|
+
* Get path to .caws/working-spec.yaml in project
|
|
32
|
+
*
|
|
33
|
+
* @returns {string} Absolute path to working spec file
|
|
34
|
+
*/
|
|
35
|
+
getSpecFilePath(): string;
|
|
36
|
+
/**
|
|
37
|
+
* Check if working spec file exists
|
|
38
|
+
*
|
|
39
|
+
* @returns {Promise<boolean>} True if file exists
|
|
40
|
+
*/
|
|
41
|
+
specFileExists(): Promise<boolean>;
|
|
42
|
+
/**
|
|
43
|
+
* Read working spec from .caws/working-spec.yaml
|
|
44
|
+
*
|
|
45
|
+
* @returns {Promise<Object>} Parsed WorkingSpec object
|
|
46
|
+
* @throws {Error} If file doesn't exist or is invalid
|
|
47
|
+
*/
|
|
48
|
+
readSpecFile(): Promise<any>;
|
|
49
|
+
/**
|
|
50
|
+
* Write WorkingSpec to file
|
|
51
|
+
*
|
|
52
|
+
* Writes to .caws/working-spec.yaml or a temporary file based on configuration.
|
|
53
|
+
*
|
|
54
|
+
* @param {Object} spec - WorkingSpec to write
|
|
55
|
+
* @param {Object} options - Write options
|
|
56
|
+
* @param {boolean} options.useTemp - Override temp file usage
|
|
57
|
+
* @param {boolean} options.backup - Create backup before writing
|
|
58
|
+
* @returns {Promise<Object>} Write result with file path and cleanup function
|
|
59
|
+
*/
|
|
60
|
+
writeSpecFile(spec: any, options?: {
|
|
61
|
+
useTemp: boolean;
|
|
62
|
+
backup: boolean;
|
|
63
|
+
}): Promise<any>;
|
|
64
|
+
/**
|
|
65
|
+
* Update existing working spec file
|
|
66
|
+
*
|
|
67
|
+
* Reads current spec, merges changes, and writes back.
|
|
68
|
+
*
|
|
69
|
+
* @param {Object} updates - Partial WorkingSpec with fields to update
|
|
70
|
+
* @returns {Promise<Object>} Updated WorkingSpec
|
|
71
|
+
*/
|
|
72
|
+
updateSpecFile(updates: any): Promise<any>;
|
|
73
|
+
/**
|
|
74
|
+
* Create backup of working spec
|
|
75
|
+
*
|
|
76
|
+
* @returns {Promise<string>} Path to backup file
|
|
77
|
+
*/
|
|
78
|
+
backupSpecFile(): Promise<string>;
|
|
79
|
+
/**
|
|
80
|
+
* Restore working spec from backup
|
|
81
|
+
*
|
|
82
|
+
* @param {string} backupPath - Path to backup file
|
|
83
|
+
* @returns {Promise<void>}
|
|
84
|
+
*/
|
|
85
|
+
restoreSpecFile(backupPath: string): Promise<void>;
|
|
86
|
+
/**
|
|
87
|
+
* List all backup files
|
|
88
|
+
*
|
|
89
|
+
* @returns {Promise<string[]>} Array of backup file paths
|
|
90
|
+
*/
|
|
91
|
+
listBackups(): Promise<string[]>;
|
|
92
|
+
/**
|
|
93
|
+
* Delete old backup files
|
|
94
|
+
*
|
|
95
|
+
* @param {Object} options - Cleanup options
|
|
96
|
+
* @param {number} options.maxAge - Maximum age in milliseconds (default: 7 days)
|
|
97
|
+
* @param {number} options.keep - Minimum number of backups to keep (default: 5)
|
|
98
|
+
* @returns {Promise<number>} Number of backups deleted
|
|
99
|
+
*/
|
|
100
|
+
cleanupBackups(options?: {
|
|
101
|
+
maxAge: number;
|
|
102
|
+
keep: number;
|
|
103
|
+
}): Promise<number>;
|
|
104
|
+
/**
|
|
105
|
+
* Validate spec file exists and is parseable
|
|
106
|
+
*
|
|
107
|
+
* @returns {Promise<Object>} Validation result
|
|
108
|
+
*/
|
|
109
|
+
validateSpecFile(): Promise<any>;
|
|
110
|
+
/**
|
|
111
|
+
* Clean up old temporary spec files
|
|
112
|
+
*
|
|
113
|
+
* Removes temp files older than specified age.
|
|
114
|
+
*
|
|
115
|
+
* @param {number} maxAge - Maximum age in milliseconds (default: 1 hour)
|
|
116
|
+
* @returns {Promise<number>} Number of files cleaned up
|
|
117
|
+
*/
|
|
118
|
+
cleanupTempFiles(maxAge?: number): Promise<number>;
|
|
119
|
+
/**
|
|
120
|
+
* Get spec file stats (size, modified date, etc.)
|
|
121
|
+
*
|
|
122
|
+
* @returns {Promise<Object>} File stats
|
|
123
|
+
*/
|
|
124
|
+
getSpecFileStats(): Promise<any>;
|
|
125
|
+
/**
|
|
126
|
+
* Create a new SpecFileManager instance with different configuration
|
|
127
|
+
*
|
|
128
|
+
* @param {Object} config - New configuration
|
|
129
|
+
* @returns {SpecFileManager} New instance
|
|
130
|
+
*/
|
|
131
|
+
withConfig(config: any): SpecFileManager;
|
|
132
|
+
}
|
|
133
|
+
export const defaultSpecFileManager: SpecFileManager;
|
|
134
|
+
/**
|
|
135
|
+
* Create a SpecFileManager instance with default configuration
|
|
136
|
+
*
|
|
137
|
+
* @param {string} projectRoot - Project root directory
|
|
138
|
+
* @param {Object} options - Additional options
|
|
139
|
+
* @returns {SpecFileManager} SpecFileManager instance
|
|
140
|
+
*/
|
|
141
|
+
export function createSpecFileManager(projectRoot: string, options?: any): SpecFileManager;
|
|
142
|
+
export declare function specToYaml(spec: any): string;
|
|
143
|
+
export declare function yamlToSpec(yaml: any): any;
|
|
144
|
+
export declare function readSpecFile(projectRoot: any): Promise<any>;
|
|
145
|
+
export declare function writeSpecFile(spec: any, projectRoot: any, options: any): Promise<any>;
|
|
146
|
+
//# sourceMappingURL=SpecFileManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SpecFileManager.d.ts","sourceRoot":"","sources":["../../src/spec/SpecFileManager.js"],"names":[],"mappings":"AAaA;;;;;;;;GAQG;AACH;IACE,yBAIC;IAHC,iBAAsD;IACtD,uBAA0D;IAC1D,aAA4C;IAG9C;;;;;OAKG;IACH,uBAFa,MAAM,CASlB;IAED;;;;;;OAMG;IACH,wBAJW,MAAM,OAqBhB;IAED;;;;OAIG;IACH,mBAFa,MAAM,CAIlB;IAED;;;;OAIG;IACH,kBAFa,OAAO,CAAC,OAAO,CAAC,CAS5B;IAED;;;;;OAKG;IACH,gBAHa,OAAO,KAAQ,CAe3B;IAED;;;;;;;;;;OAUG;IACH,mCAJG;QAAyB,OAAO,EAAxB,OAAO;QACU,MAAM,EAAvB,OAAO;KACf,GAAU,OAAO,KAAQ,CA2C3B;IAED;;;;;;;OAOG;IACH,8BAFa,OAAO,KAAQ,CAa3B;IAED;;;;OAIG;IACH,kBAFa,OAAO,CAAC,MAAM,CAAC,CAS3B;IAED;;;;;OAKG;IACH,4BAHW,MAAM,GACJ,OAAO,CAAC,IAAI,CAAC,CAKzB;IAED;;;;OAIG;IACH,eAFa,OAAO,CAAC,MAAM,EAAE,CAAC,CAoB7B;IAED;;;;;;;OAOG;IACH,yBAJG;QAAwB,MAAM,EAAtB,MAAM;QACU,IAAI,EAApB,MAAM;KACd,GAAU,OAAO,CAAC,MAAM,CAAC,CA+B3B;IAED;;;;OAIG;IACH,oBAFa,OAAO,KAAQ,CAe3B;IAED;;;;;;;OAOG;IACH,0BAHW,MAAM,GACJ,OAAO,CAAC,MAAM,CAAC,CA6B3B;IAED;;;;OAIG;IACH,oBAFa,OAAO,KAAQ,CA0B3B;IAED;;;;;OAKG;IACH,yBAFa,eAAe,CAS3B;CACF;AAiBD,qDAAqD;AAfrD;;;;;;GAMG;AACH,mDAJW,MAAM,kBAEJ,eAAe,CAO3B;AAWa,sDAAiD;AACjD,mDAAiD;AAC/C,qEAKb;AACc,+FAKd"}
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Main Test Analysis CLI handler
|
|
3
|
+
*/
|
|
4
|
+
export function testAnalysisCommand(subcommand: any, options?: any[]): Promise<void>;
|
|
5
|
+
/**
|
|
6
|
+
* Waiver Pattern Learning Engine
|
|
7
|
+
* Analyzes waiver history to find systematic patterns in budget overruns
|
|
8
|
+
*/
|
|
9
|
+
export class WaiverPatternLearner {
|
|
10
|
+
constructor(projectRoot?: string);
|
|
11
|
+
projectRoot: string;
|
|
12
|
+
/**
|
|
13
|
+
* Analyze waiver patterns from historical data
|
|
14
|
+
*/
|
|
15
|
+
analyzePatterns(): {
|
|
16
|
+
status: string;
|
|
17
|
+
patterns: {
|
|
18
|
+
total_waivers: number;
|
|
19
|
+
budget_overruns: {
|
|
20
|
+
average_overrun_files: number;
|
|
21
|
+
average_overrun_loc: number;
|
|
22
|
+
common_patterns: any[];
|
|
23
|
+
total_budget_waivers?: undefined;
|
|
24
|
+
} | {
|
|
25
|
+
total_budget_waivers: any;
|
|
26
|
+
average_overrun_files: number;
|
|
27
|
+
average_overrun_loc: number;
|
|
28
|
+
common_patterns: {
|
|
29
|
+
reason: string;
|
|
30
|
+
frequency: number;
|
|
31
|
+
avg_overrun_files: number;
|
|
32
|
+
avg_overrun_loc: number;
|
|
33
|
+
}[];
|
|
34
|
+
};
|
|
35
|
+
common_reasons: {
|
|
36
|
+
reason: string;
|
|
37
|
+
count: any;
|
|
38
|
+
frequency: number;
|
|
39
|
+
}[];
|
|
40
|
+
risk_factors: {
|
|
41
|
+
factor: string;
|
|
42
|
+
description: string;
|
|
43
|
+
risk_level: string;
|
|
44
|
+
}[];
|
|
45
|
+
generated_at: string;
|
|
46
|
+
};
|
|
47
|
+
message?: undefined;
|
|
48
|
+
} | {
|
|
49
|
+
status: string;
|
|
50
|
+
message: any;
|
|
51
|
+
patterns: {};
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* Load all waiver files from .caws/waivers/
|
|
55
|
+
*/
|
|
56
|
+
loadWaivers(): any[];
|
|
57
|
+
/**
|
|
58
|
+
* Load historical working specs (mock implementation)
|
|
59
|
+
*/
|
|
60
|
+
loadHistoricalSpecs(): any[];
|
|
61
|
+
/**
|
|
62
|
+
* Analyze budget overrun patterns
|
|
63
|
+
*/
|
|
64
|
+
analyzeBudgetOverruns(waivers: any, specs: any): {
|
|
65
|
+
average_overrun_files: number;
|
|
66
|
+
average_overrun_loc: number;
|
|
67
|
+
common_patterns: any[];
|
|
68
|
+
total_budget_waivers?: undefined;
|
|
69
|
+
} | {
|
|
70
|
+
total_budget_waivers: any;
|
|
71
|
+
average_overrun_files: number;
|
|
72
|
+
average_overrun_loc: number;
|
|
73
|
+
common_patterns: {
|
|
74
|
+
reason: string;
|
|
75
|
+
frequency: number;
|
|
76
|
+
avg_overrun_files: number;
|
|
77
|
+
avg_overrun_loc: number;
|
|
78
|
+
}[];
|
|
79
|
+
};
|
|
80
|
+
/**
|
|
81
|
+
* Analyze most common waiver reasons
|
|
82
|
+
*/
|
|
83
|
+
analyzeCommonReasons(waivers: any): {
|
|
84
|
+
reason: string;
|
|
85
|
+
count: any;
|
|
86
|
+
frequency: number;
|
|
87
|
+
}[];
|
|
88
|
+
/**
|
|
89
|
+
* Identify risk factors from waiver patterns
|
|
90
|
+
*/
|
|
91
|
+
identifyRiskFactors(waivers: any, specs: any): {
|
|
92
|
+
factor: string;
|
|
93
|
+
description: string;
|
|
94
|
+
risk_level: string;
|
|
95
|
+
}[];
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Project Similarity Matcher
|
|
99
|
+
* Finds historical projects similar to current work
|
|
100
|
+
*/
|
|
101
|
+
export class ProjectSimilarityMatcher {
|
|
102
|
+
constructor(projectRoot?: string);
|
|
103
|
+
projectRoot: string;
|
|
104
|
+
/**
|
|
105
|
+
* Find projects similar to the current spec
|
|
106
|
+
*/
|
|
107
|
+
findSimilarProjects(currentSpec: any): {
|
|
108
|
+
project: string;
|
|
109
|
+
similarity_score: number;
|
|
110
|
+
budget_accuracy: number;
|
|
111
|
+
waiver_count: number;
|
|
112
|
+
details: {
|
|
113
|
+
id: string;
|
|
114
|
+
title: string;
|
|
115
|
+
risk_tier: number;
|
|
116
|
+
mode: string;
|
|
117
|
+
tech_stack: string;
|
|
118
|
+
feature_type: string;
|
|
119
|
+
actual_budget: {
|
|
120
|
+
files: number;
|
|
121
|
+
loc: number;
|
|
122
|
+
};
|
|
123
|
+
allocated_budget: {
|
|
124
|
+
files: number;
|
|
125
|
+
loc: number;
|
|
126
|
+
};
|
|
127
|
+
waivers: string[];
|
|
128
|
+
};
|
|
129
|
+
}[];
|
|
130
|
+
/**
|
|
131
|
+
* Calculate similarity score between two specs/projects
|
|
132
|
+
*/
|
|
133
|
+
calculateSimilarity(spec1: any, spec2: any): number;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Budget Predictor using statistical analysis
|
|
137
|
+
*/
|
|
138
|
+
export class BudgetPredictor {
|
|
139
|
+
constructor(projectRoot?: string);
|
|
140
|
+
projectRoot: string;
|
|
141
|
+
patternLearner: WaiverPatternLearner;
|
|
142
|
+
similarityMatcher: ProjectSimilarityMatcher;
|
|
143
|
+
/**
|
|
144
|
+
* Assess budget for a working spec
|
|
145
|
+
*/
|
|
146
|
+
assessBudget(spec: any): {
|
|
147
|
+
status: string;
|
|
148
|
+
assessment: {
|
|
149
|
+
similar_projects_analyzed: number;
|
|
150
|
+
recommended_budget: {
|
|
151
|
+
files: number;
|
|
152
|
+
loc: number;
|
|
153
|
+
};
|
|
154
|
+
baseline_budget: {
|
|
155
|
+
files: number;
|
|
156
|
+
loc: number;
|
|
157
|
+
};
|
|
158
|
+
buffer_applied: {
|
|
159
|
+
files_percent: number;
|
|
160
|
+
loc_percent: number;
|
|
161
|
+
};
|
|
162
|
+
rationale: string[];
|
|
163
|
+
risk_factors: any;
|
|
164
|
+
confidence: number;
|
|
165
|
+
};
|
|
166
|
+
message?: undefined;
|
|
167
|
+
recommendation?: undefined;
|
|
168
|
+
} | {
|
|
169
|
+
status: string;
|
|
170
|
+
message: any;
|
|
171
|
+
recommendation: {
|
|
172
|
+
use_default_tier: boolean;
|
|
173
|
+
confidence: number;
|
|
174
|
+
};
|
|
175
|
+
assessment?: undefined;
|
|
176
|
+
};
|
|
177
|
+
/**
|
|
178
|
+
* Generate human-readable rationale for the recommendation
|
|
179
|
+
*/
|
|
180
|
+
generateRationale(spec: any, similarProjects: any, patterns: any): string[];
|
|
181
|
+
}
|
|
182
|
+
//# sourceMappingURL=test-analysis.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-analysis.d.ts","sourceRoot":"","sources":["../src/test-analysis.js"],"names":[],"mappings":"AAiZA;;GAEG;AACH,qFAsBC;AAhaD;;;GAGG;AACH;IACE,kCAEC;IADC,oBAA8B;IAGhC;;OAEG;IACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAgCC;IAED;;OAEG;IACH,qBAsBC;IAED;;OAEG;IACH,6BAIC;IAED;;OAEG;IACH;;;;;;;;;;;;;;;MA6CC;IAED;;OAEG;IACH;;;;QAaC;IAED;;OAEG;IACH;;;;QAeC;CACF;AAED;;;GAGG;AACH;IACE,kCAEC;IADC,oBAA8B;IAGhC;;OAEG;IACH;;;;;;;;;;;;;;;;;;;;;;QAkEC;IAED;;OAEG;IACH,oDA6BC;CACF;AAED;;GAEG;AACH;IACE,kCAIC;IAHC,oBAA8B;IAC9B,qCAA2D;IAC3D,4CAAkE;IAGpE;;OAEG;IACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA8DC;IAED;;OAEG;IACH,4EAsBC;CACF"}
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Standard tool execution result
|
|
4
|
+
*/
|
|
5
|
+
export type ToolExecutionResult = {
|
|
6
|
+
/**
|
|
7
|
+
* - Whether execution succeeded
|
|
8
|
+
*/
|
|
9
|
+
success: boolean;
|
|
10
|
+
/**
|
|
11
|
+
* - Execution duration in milliseconds
|
|
12
|
+
*/
|
|
13
|
+
duration: number;
|
|
14
|
+
/**
|
|
15
|
+
* - Tool-specific output data
|
|
16
|
+
*/
|
|
17
|
+
output: any;
|
|
18
|
+
/**
|
|
19
|
+
* - Error messages if execution failed
|
|
20
|
+
*/
|
|
21
|
+
errors: Array<string>;
|
|
22
|
+
/**
|
|
23
|
+
* - Additional execution metadata
|
|
24
|
+
*/
|
|
25
|
+
metadata: any;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Tool metadata structure
|
|
29
|
+
*/
|
|
30
|
+
export type ToolMetadata = {
|
|
31
|
+
/**
|
|
32
|
+
* - Unique tool identifier
|
|
33
|
+
*/
|
|
34
|
+
id: string;
|
|
35
|
+
/**
|
|
36
|
+
* - Human-readable tool name
|
|
37
|
+
*/
|
|
38
|
+
name: string;
|
|
39
|
+
/**
|
|
40
|
+
* - Tool version (semver)
|
|
41
|
+
*/
|
|
42
|
+
version: string;
|
|
43
|
+
/**
|
|
44
|
+
* - Tool description
|
|
45
|
+
*/
|
|
46
|
+
description: string;
|
|
47
|
+
/**
|
|
48
|
+
* - Tool capabilities (e.g., ['validation', 'security'])
|
|
49
|
+
*/
|
|
50
|
+
capabilities: Array<string>;
|
|
51
|
+
/**
|
|
52
|
+
* - Tool author
|
|
53
|
+
*/
|
|
54
|
+
author: string;
|
|
55
|
+
/**
|
|
56
|
+
* - Tool license
|
|
57
|
+
*/
|
|
58
|
+
license: string;
|
|
59
|
+
/**
|
|
60
|
+
* - Required Node.js dependencies
|
|
61
|
+
*/
|
|
62
|
+
dependencies: Array<string>;
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* Tool execution context
|
|
66
|
+
*/
|
|
67
|
+
export type ToolExecutionContext = {
|
|
68
|
+
/**
|
|
69
|
+
* - Current working directory
|
|
70
|
+
*/
|
|
71
|
+
workingDirectory: string;
|
|
72
|
+
/**
|
|
73
|
+
* - Environment variables
|
|
74
|
+
*/
|
|
75
|
+
environment: any;
|
|
76
|
+
/**
|
|
77
|
+
* - CAWS configuration
|
|
78
|
+
*/
|
|
79
|
+
config: any;
|
|
80
|
+
/**
|
|
81
|
+
* - Current working specification
|
|
82
|
+
*/
|
|
83
|
+
workingSpec: any;
|
|
84
|
+
/**
|
|
85
|
+
* - Execution timeout in milliseconds
|
|
86
|
+
*/
|
|
87
|
+
timeout: number;
|
|
88
|
+
};
|
|
89
|
+
/**
|
|
90
|
+
* @fileoverview CAWS Tool Interface - Base classes and contracts for tool implementation
|
|
91
|
+
* Defines the standard interface that all CAWS tools must implement
|
|
92
|
+
* @author @darianrosebrook
|
|
93
|
+
*/
|
|
94
|
+
/**
|
|
95
|
+
* Standard tool execution result
|
|
96
|
+
* @typedef {Object} ToolExecutionResult
|
|
97
|
+
* @property {boolean} success - Whether execution succeeded
|
|
98
|
+
* @property {number} duration - Execution duration in milliseconds
|
|
99
|
+
* @property {Object} output - Tool-specific output data
|
|
100
|
+
* @property {Array<string>} errors - Error messages if execution failed
|
|
101
|
+
* @property {Object} metadata - Additional execution metadata
|
|
102
|
+
*/
|
|
103
|
+
/**
|
|
104
|
+
* Tool metadata structure
|
|
105
|
+
* @typedef {Object} ToolMetadata
|
|
106
|
+
* @property {string} id - Unique tool identifier
|
|
107
|
+
* @property {string} name - Human-readable tool name
|
|
108
|
+
* @property {string} version - Tool version (semver)
|
|
109
|
+
* @property {string} description - Tool description
|
|
110
|
+
* @property {Array<string>} capabilities - Tool capabilities (e.g., ['validation', 'security'])
|
|
111
|
+
* @property {string} author - Tool author
|
|
112
|
+
* @property {string} license - Tool license
|
|
113
|
+
* @property {Array<string>} dependencies - Required Node.js dependencies
|
|
114
|
+
*/
|
|
115
|
+
/**
|
|
116
|
+
* Tool execution context
|
|
117
|
+
* @typedef {Object} ToolExecutionContext
|
|
118
|
+
* @property {string} workingDirectory - Current working directory
|
|
119
|
+
* @property {Object} environment - Environment variables
|
|
120
|
+
* @property {Object} config - CAWS configuration
|
|
121
|
+
* @property {Object} workingSpec - Current working specification
|
|
122
|
+
* @property {number} timeout - Execution timeout in milliseconds
|
|
123
|
+
*/
|
|
124
|
+
/**
|
|
125
|
+
* Base Tool class - All CAWS tools should extend this class
|
|
126
|
+
*/
|
|
127
|
+
export class BaseTool {
|
|
128
|
+
metadata: ToolMetadata;
|
|
129
|
+
/**
|
|
130
|
+
* Execute the tool with given parameters
|
|
131
|
+
* @param {Object} parameters - Tool-specific execution parameters
|
|
132
|
+
* @param {ToolExecutionContext} context - Execution context
|
|
133
|
+
* @returns {Promise<ToolExecutionResult>} Execution result
|
|
134
|
+
*/
|
|
135
|
+
execute(parameters?: any, context?: ToolExecutionContext): Promise<ToolExecutionResult>;
|
|
136
|
+
/**
|
|
137
|
+
* Get tool metadata
|
|
138
|
+
* @returns {ToolMetadata} Tool metadata
|
|
139
|
+
*/
|
|
140
|
+
getMetadata(): ToolMetadata;
|
|
141
|
+
/**
|
|
142
|
+
* Validate tool parameters
|
|
143
|
+
* @param {Object} _parameters - Parameters to validate
|
|
144
|
+
* @throws {Error} If parameters are invalid
|
|
145
|
+
*/
|
|
146
|
+
validateParameters(_parameters: any): boolean;
|
|
147
|
+
/**
|
|
148
|
+
* Execute tool implementation (must be overridden by subclasses)
|
|
149
|
+
* @param {Object} _parameters - Tool parameters
|
|
150
|
+
* @param {ToolExecutionContext} _context - Execution context
|
|
151
|
+
* @returns {Promise<Object>} Tool-specific result
|
|
152
|
+
*/
|
|
153
|
+
executeImpl(_parameters: any, _context: ToolExecutionContext): Promise<any>;
|
|
154
|
+
/**
|
|
155
|
+
* Normalize execution result to standard format
|
|
156
|
+
* @private
|
|
157
|
+
* @param {Object} result - Raw tool result
|
|
158
|
+
* @param {number} duration - Execution duration
|
|
159
|
+
* @returns {ToolExecutionResult} Normalized result
|
|
160
|
+
*/
|
|
161
|
+
private normalizeResult;
|
|
162
|
+
/**
|
|
163
|
+
* Create error result
|
|
164
|
+
* @private
|
|
165
|
+
* @param {Error} error - Execution error
|
|
166
|
+
* @param {number} duration - Execution duration
|
|
167
|
+
* @returns {ToolExecutionResult} Error result
|
|
168
|
+
*/
|
|
169
|
+
private createErrorResult;
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Validation Tool base class - For tools that perform validation checks
|
|
173
|
+
*/
|
|
174
|
+
export class ValidationTool extends BaseTool {
|
|
175
|
+
capabilities: string[];
|
|
176
|
+
/**
|
|
177
|
+
* Execute validation
|
|
178
|
+
* @param {Object} parameters - Validation parameters
|
|
179
|
+
* @param {ToolExecutionContext} context - Execution context
|
|
180
|
+
* @returns {Promise<ToolExecutionResult>} Validation result
|
|
181
|
+
*/
|
|
182
|
+
executeImpl(parameters: any, context: ToolExecutionContext): Promise<ToolExecutionResult>;
|
|
183
|
+
/**
|
|
184
|
+
* Perform validation (must be implemented by subclasses)
|
|
185
|
+
* @param {Object} parameters - Validation parameters
|
|
186
|
+
* @param {ToolExecutionContext} context - Execution context
|
|
187
|
+
* @returns {Promise<Object>} Validation result
|
|
188
|
+
*/
|
|
189
|
+
validate(_parameters: any, _context: any): Promise<any>;
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Quality Gate Tool base class - For tools that enforce quality standards
|
|
193
|
+
*/
|
|
194
|
+
export class QualityGateTool extends ValidationTool {
|
|
195
|
+
/**
|
|
196
|
+
* Get quality gate thresholds for current tier
|
|
197
|
+
* @param {number} tier - Risk tier (1-3)
|
|
198
|
+
* @returns {Object} Threshold configuration
|
|
199
|
+
*/
|
|
200
|
+
getTierThresholds(tier: number): any;
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Security Tool base class - For tools that perform security checks
|
|
204
|
+
*/
|
|
205
|
+
export class SecurityTool extends ValidationTool {
|
|
206
|
+
/**
|
|
207
|
+
* Check for security violations
|
|
208
|
+
* @param {Object} target - Target to check (file, code, etc.)
|
|
209
|
+
* @returns {Promise<Array<Object>>} Array of security violations
|
|
210
|
+
*/
|
|
211
|
+
checkSecurityViolations(target: any): Promise<Array<any>>;
|
|
212
|
+
}
|
|
213
|
+
export namespace ToolUtils {
|
|
214
|
+
/**
|
|
215
|
+
* Create standardized success result
|
|
216
|
+
* @param {Object} output - Tool output
|
|
217
|
+
* @param {Object} metadata - Additional metadata
|
|
218
|
+
* @returns {ToolExecutionResult} Success result
|
|
219
|
+
*/
|
|
220
|
+
function createSuccessResult(output?: any, metadata?: any): ToolExecutionResult;
|
|
221
|
+
/**
|
|
222
|
+
* Create standardized error result
|
|
223
|
+
* @param {string} message - Error message
|
|
224
|
+
* @param {string} errorType - Error type
|
|
225
|
+
* @returns {ToolExecutionResult} Error result
|
|
226
|
+
*/
|
|
227
|
+
function createErrorResult(message: string, errorType?: string): ToolExecutionResult;
|
|
228
|
+
/**
|
|
229
|
+
* Validate required parameters
|
|
230
|
+
* @param {Object} _params - Parameters object
|
|
231
|
+
* @param {Array<string>} _required - Required parameter names
|
|
232
|
+
* @throws {Error} If required parameters are missing
|
|
233
|
+
*/
|
|
234
|
+
function validateRequired(_params: any, _required: Array<string>): void;
|
|
235
|
+
}
|
|
236
|
+
//# sourceMappingURL=tool-interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-interface.d.ts","sourceRoot":"","sources":["../src/tool-interface.js"],"names":[],"mappings":";;;;;;;;aAWc,OAAO;;;;cACP,MAAM;;;;;;;;YAEN,KAAK,CAAC,MAAM,CAAC;;;;;;;;;;;;;QAOb,MAAM;;;;UACN,MAAM;;;;aACN,MAAM;;;;iBACN,MAAM;;;;kBACN,KAAK,CAAC,MAAM,CAAC;;;;YACb,MAAM;;;;aACN,MAAM;;;;kBACN,KAAK,CAAC,MAAM,CAAC;;;;;;;;;sBAMb,MAAM;;;;;;;;;;;;;;;;aAIN,MAAM;;AApCpB;;;;GAIG;AAEH;;;;;;;;GAQG;AAEH;;;;;;;;;;;GAWG;AAEH;;;;;;;;GAQG;AAEH;;GAEG;AACH;IAEI,uBAAkC;IAGpC;;;;;OAKG;IACH,oCAHW,oBAAoB,GAClB,OAAO,CAAC,mBAAmB,CAAC,CAmBxC;IAED;;;OAGG;IACH,eAFa,YAAY,CAIxB;IAED;;;;OAIG;IACH,8CAGC;IAED;;;;;OAKG;IACH,wCAHW,oBAAoB,GAClB,OAAO,KAAQ,CAI3B;IAED;;;;;;OAMG;IACH,wBAQC;IAED;;;;;;OAMG;IACH,0BAWC;CACF;AAED;;GAEG;AACH;IAGI,uBAAkC;IAGpC;;;;;OAKG;IACH,sCAHW,oBAAoB,GAClB,OAAO,CAAC,mBAAmB,CAAC,CAcxC;IAED;;;;;OAKG;IACH,2CAFa,OAAO,KAAQ,CAI3B;CACF;AAED;;GAEG;AACH;IAME;;;;OAIG;IACH,wBAHW,MAAM,OA6BhB;CACF;AAED;;GAEG;AACH;IAME;;;;OAIG;IACH,sCAFa,OAAO,CAAC,KAAK,KAAQ,CAAC,CAmBlC;CACF;;IAMC;;;;;OAKG;IACH,4DAFa,mBAAmB,CAU/B;IAED;;;;;OAKG;IACH,oCAJW,MAAM,cACN,MAAM,GACJ,mBAAmB,CAU/B;IAED;;;;;OAKG;IACH,mDAHW,KAAK,CAAC,MAAM,CAAC,QAQvB"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
export = ToolLoader;
|
|
3
|
+
/**
|
|
4
|
+
* Tool Loader - Discovers, validates, and loads CAWS tools dynamically
|
|
5
|
+
* @extends EventEmitter
|
|
6
|
+
*/
|
|
7
|
+
declare class ToolLoader extends EventEmitter<[never]> {
|
|
8
|
+
constructor(options?: {});
|
|
9
|
+
options: {
|
|
10
|
+
toolsDir: any;
|
|
11
|
+
cacheEnabled: boolean;
|
|
12
|
+
timeout: any;
|
|
13
|
+
maxTools: any;
|
|
14
|
+
};
|
|
15
|
+
loadedTools: Map<any, any>;
|
|
16
|
+
discoveredTools: Set<any>;
|
|
17
|
+
loadingState: string;
|
|
18
|
+
/**
|
|
19
|
+
* Discover available tools in the tools directory
|
|
20
|
+
* @returns {Promise<Array<string>>} Array of tool file paths
|
|
21
|
+
*/
|
|
22
|
+
discoverTools(): Promise<Array<string>>;
|
|
23
|
+
/**
|
|
24
|
+
* Load a specific tool module
|
|
25
|
+
* @param {string} toolPath - Path to tool file
|
|
26
|
+
* @returns {Promise<Object>} Loaded tool module
|
|
27
|
+
*/
|
|
28
|
+
loadTool(toolPath: string): Promise<any>;
|
|
29
|
+
/**
|
|
30
|
+
* Load all discovered tools
|
|
31
|
+
* @returns {Promise<Map<string, Object>>} Map of loaded tools
|
|
32
|
+
*/
|
|
33
|
+
loadAllTools(): Promise<Map<string, any>>;
|
|
34
|
+
/**
|
|
35
|
+
* Get a loaded tool by ID
|
|
36
|
+
* @param {string} toolId - Tool identifier
|
|
37
|
+
* @returns {Object|null} Tool object or null if not found
|
|
38
|
+
*/
|
|
39
|
+
getTool(toolId: string): any | null;
|
|
40
|
+
/**
|
|
41
|
+
* Get all loaded tools
|
|
42
|
+
* @returns {Map<string, Object>} Map of loaded tools
|
|
43
|
+
*/
|
|
44
|
+
getAllTools(): Map<string, any>;
|
|
45
|
+
/**
|
|
46
|
+
* Unload a tool (remove from cache)
|
|
47
|
+
* @param {string} toolId - Tool identifier
|
|
48
|
+
* @returns {boolean} True if tool was unloaded
|
|
49
|
+
*/
|
|
50
|
+
unloadTool(toolId: string): boolean;
|
|
51
|
+
/**
|
|
52
|
+
* Validate tool file before loading
|
|
53
|
+
* @private
|
|
54
|
+
* @param {string} toolPath - Path to tool file
|
|
55
|
+
*/
|
|
56
|
+
private validateToolFile;
|
|
57
|
+
/**
|
|
58
|
+
* Load module with timeout protection
|
|
59
|
+
* @private
|
|
60
|
+
* @param {string} toolPath - Path to tool file
|
|
61
|
+
*/
|
|
62
|
+
private loadModuleWithTimeout;
|
|
63
|
+
/**
|
|
64
|
+
* Validate tool interface compliance
|
|
65
|
+
* @private
|
|
66
|
+
* @param {Object} toolModule - Loaded tool module
|
|
67
|
+
* @param {string} toolId - Tool identifier
|
|
68
|
+
*/
|
|
69
|
+
private validateToolInterface;
|
|
70
|
+
/**
|
|
71
|
+
* Get loader statistics
|
|
72
|
+
* @returns {Object} Statistics object
|
|
73
|
+
*/
|
|
74
|
+
getStats(): any;
|
|
75
|
+
}
|
|
76
|
+
import { EventEmitter } from "events";
|
|
77
|
+
//# sourceMappingURL=tool-loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-loader.d.ts","sourceRoot":"","sources":["../src/tool-loader.js"],"names":[],"mappings":";;AAcA;;;GAGG;AACH;IACE,0BAaC;IAXC;;;;;MAMC;IAED,2BAA4B;IAC5B,0BAAgC;IAChC,qBAA0B;IAG5B;;;OAGG;IACH,iBAFa,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAkDlC;IAED;;;;OAIG;IACH,mBAHW,MAAM,GACJ,OAAO,KAAQ,CAmC3B;IAED;;;OAGG;IACH,gBAFa,OAAO,CAAC,GAAG,CAAC,MAAM,MAAS,CAAC,CAuBxC;IAED;;;;OAIG;IACH,gBAHW,MAAM,GACJ,MAAO,IAAI,CAIvB;IAED;;;OAGG;IACH,eAFa,GAAG,CAAC,MAAM,MAAS,CAI/B;IAED;;;;OAIG;IACH,mBAHW,MAAM,GACJ,OAAO,CAQnB;IAED;;;;OAIG;IACH,yBAgCC;IAED;;;;OAIG;IACH,8BAkBC;IAED;;;;;OAKG;IACH,8BAyBC;IAED;;;OAGG;IACH,gBAQC;CACF"}
|