@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.
Files changed (106) hide show
  1. package/dist/budget-derivation.d.ts +74 -0
  2. package/dist/budget-derivation.d.ts.map +1 -0
  3. package/dist/cicd-optimizer.d.ts +142 -0
  4. package/dist/cicd-optimizer.d.ts.map +1 -0
  5. package/dist/commands/archive.d.ts +50 -0
  6. package/dist/commands/archive.d.ts.map +1 -0
  7. package/dist/commands/burnup.d.ts +6 -0
  8. package/dist/commands/burnup.d.ts.map +1 -0
  9. package/dist/commands/diagnose.d.ts +52 -0
  10. package/dist/commands/diagnose.d.ts.map +1 -0
  11. package/dist/commands/evaluate.d.ts +8 -0
  12. package/dist/commands/evaluate.d.ts.map +1 -0
  13. package/dist/commands/init.d.ts +5 -0
  14. package/dist/commands/init.d.ts.map +1 -0
  15. package/dist/commands/iterate.d.ts +8 -0
  16. package/dist/commands/iterate.d.ts.map +1 -0
  17. package/dist/commands/mode.d.ts +24 -0
  18. package/dist/commands/mode.d.ts.map +1 -0
  19. package/dist/commands/plan.d.ts +49 -0
  20. package/dist/commands/plan.d.ts.map +1 -0
  21. package/dist/commands/provenance.d.ts +32 -0
  22. package/dist/commands/provenance.d.ts.map +1 -0
  23. package/dist/commands/quality-gates.d.ts +52 -0
  24. package/dist/commands/quality-gates.d.ts.map +1 -0
  25. package/dist/commands/quality-gates.js +4 -2
  26. package/dist/commands/quality-monitor.d.ts +17 -0
  27. package/dist/commands/quality-monitor.d.ts.map +1 -0
  28. package/dist/commands/specs.d.ts +71 -0
  29. package/dist/commands/specs.d.ts.map +1 -0
  30. package/dist/commands/status.d.ts +44 -0
  31. package/dist/commands/status.d.ts.map +1 -0
  32. package/dist/commands/templates.d.ts +74 -0
  33. package/dist/commands/templates.d.ts.map +1 -0
  34. package/dist/commands/tool.d.ts +13 -0
  35. package/dist/commands/tool.d.ts.map +1 -0
  36. package/dist/commands/troubleshoot.d.ts +8 -0
  37. package/dist/commands/troubleshoot.d.ts.map +1 -0
  38. package/dist/commands/tutorial.d.ts +55 -0
  39. package/dist/commands/tutorial.d.ts.map +1 -0
  40. package/dist/commands/validate.d.ts +15 -0
  41. package/dist/commands/validate.d.ts.map +1 -0
  42. package/dist/commands/waivers.d.ts +8 -0
  43. package/dist/commands/waivers.d.ts.map +1 -0
  44. package/dist/commands/workflow.d.ts +85 -0
  45. package/dist/commands/workflow.d.ts.map +1 -0
  46. package/dist/config/index.d.ts +29 -0
  47. package/dist/config/index.d.ts.map +1 -0
  48. package/dist/config/modes.d.ts +225 -0
  49. package/dist/config/modes.d.ts.map +1 -0
  50. package/dist/constants/spec-types.d.ts +41 -0
  51. package/dist/constants/spec-types.d.ts.map +1 -0
  52. package/dist/error-handler.d.ts +164 -0
  53. package/dist/error-handler.d.ts.map +1 -0
  54. package/dist/generators/jest-config.d.ts +32 -0
  55. package/dist/generators/jest-config.d.ts.map +1 -0
  56. package/dist/generators/working-spec.d.ts +13 -0
  57. package/dist/generators/working-spec.d.ts.map +1 -0
  58. package/dist/index-new.d.ts +5 -0
  59. package/dist/index-new.d.ts.map +1 -0
  60. package/dist/index-new.js +317 -0
  61. package/dist/index.d.ts +5 -0
  62. package/dist/index.d.ts.map +1 -0
  63. package/dist/index.js.backup +4711 -0
  64. package/dist/minimal-cli.d.ts +3 -0
  65. package/dist/minimal-cli.d.ts.map +1 -0
  66. package/dist/policy/PolicyManager.d.ts +104 -0
  67. package/dist/policy/PolicyManager.d.ts.map +1 -0
  68. package/dist/scaffold/cursor-hooks.d.ts +7 -0
  69. package/dist/scaffold/cursor-hooks.d.ts.map +1 -0
  70. package/dist/scaffold/git-hooks.d.ts +20 -0
  71. package/dist/scaffold/git-hooks.d.ts.map +1 -0
  72. package/dist/scaffold/git-hooks.js +65 -7
  73. package/dist/scaffold/index.d.ts +20 -0
  74. package/dist/scaffold/index.d.ts.map +1 -0
  75. package/dist/scaffold/index.js +179 -41
  76. package/dist/spec/SpecFileManager.d.ts +146 -0
  77. package/dist/spec/SpecFileManager.d.ts.map +1 -0
  78. package/dist/test-analysis.d.ts +182 -0
  79. package/dist/test-analysis.d.ts.map +1 -0
  80. package/dist/tool-interface.d.ts +236 -0
  81. package/dist/tool-interface.d.ts.map +1 -0
  82. package/dist/tool-loader.d.ts +77 -0
  83. package/dist/tool-loader.d.ts.map +1 -0
  84. package/dist/tool-validator.d.ts +72 -0
  85. package/dist/tool-validator.d.ts.map +1 -0
  86. package/dist/utils/detection.d.ts +7 -0
  87. package/dist/utils/detection.d.ts.map +1 -0
  88. package/dist/utils/finalization.d.ts +17 -0
  89. package/dist/utils/finalization.d.ts.map +1 -0
  90. package/dist/utils/project-analysis.d.ts +14 -0
  91. package/dist/utils/project-analysis.d.ts.map +1 -0
  92. package/dist/utils/project-analysis.js +103 -0
  93. package/dist/utils/quality-gates.d.ts +49 -0
  94. package/dist/utils/quality-gates.d.ts.map +1 -0
  95. package/dist/utils/spec-resolver.d.ts +88 -0
  96. package/dist/utils/spec-resolver.d.ts.map +1 -0
  97. package/dist/utils/typescript-detector.d.ts +63 -0
  98. package/dist/utils/typescript-detector.d.ts.map +1 -0
  99. package/dist/validation/spec-validation.d.ts +43 -0
  100. package/dist/validation/spec-validation.d.ts.map +1 -0
  101. package/dist/waivers-manager.d.ts +167 -0
  102. package/dist/waivers-manager.d.ts.map +1 -0
  103. package/package.json +1 -1
  104. package/templates/COMMIT_CONVENTIONS.md +86 -0
  105. package/templates/apps/tools/caws/prompt-lint.js.backup +274 -0
  106. 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"}