baseguard 1.0.0 → 1.0.2

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 (156) hide show
  1. package/.baseguardrc.example.json +64 -0
  2. package/.eslintrc.json +1 -1
  3. package/CHANGELOG.md +196 -0
  4. package/DEPLOYMENT.md +625 -0
  5. package/DEPLOYMENT_CHECKLIST.md +239 -0
  6. package/DEPLOYMENT_SUMMARY_v1.0.2.md +202 -0
  7. package/QUICK_START.md +134 -0
  8. package/README.md +447 -52
  9. package/RELEASE_NOTES_v1.0.2.md +434 -0
  10. package/bin/base.js +155 -36
  11. package/dist/ai/agentkit-orchestrator.d.ts +116 -0
  12. package/dist/ai/agentkit-orchestrator.d.ts.map +1 -0
  13. package/dist/ai/agentkit-orchestrator.js +417 -0
  14. package/dist/ai/agentkit-orchestrator.js.map +1 -0
  15. package/dist/ai/gemini-code-fixer.d.ts +85 -0
  16. package/dist/ai/gemini-code-fixer.d.ts.map +1 -0
  17. package/dist/ai/gemini-code-fixer.js +452 -0
  18. package/dist/ai/gemini-code-fixer.js.map +1 -0
  19. package/dist/ai/jules-implementer.d.ts +5 -4
  20. package/dist/ai/jules-implementer.d.ts.map +1 -1
  21. package/dist/ai/jules-implementer.js +6 -5
  22. package/dist/ai/jules-implementer.js.map +1 -1
  23. package/dist/ai/unified-code-fixer.d.ts +69 -0
  24. package/dist/ai/unified-code-fixer.d.ts.map +1 -0
  25. package/dist/ai/unified-code-fixer.js +289 -0
  26. package/dist/ai/unified-code-fixer.js.map +1 -0
  27. package/dist/commands/check.d.ts +3 -1
  28. package/dist/commands/check.d.ts.map +1 -1
  29. package/dist/commands/check.js +166 -34
  30. package/dist/commands/check.js.map +1 -1
  31. package/dist/commands/config.d.ts +4 -0
  32. package/dist/commands/config.d.ts.map +1 -1
  33. package/dist/commands/config.js +183 -0
  34. package/dist/commands/config.js.map +1 -1
  35. package/dist/commands/fix.d.ts.map +1 -1
  36. package/dist/commands/fix.js +89 -91
  37. package/dist/commands/fix.js.map +1 -1
  38. package/dist/commands/index.d.ts +1 -0
  39. package/dist/commands/index.d.ts.map +1 -1
  40. package/dist/commands/index.js +1 -0
  41. package/dist/commands/index.js.map +1 -1
  42. package/dist/commands/init.d.ts.map +1 -1
  43. package/dist/commands/init.js +16 -2
  44. package/dist/commands/init.js.map +1 -1
  45. package/dist/commands/status.d.ts +14 -0
  46. package/dist/commands/status.d.ts.map +1 -0
  47. package/dist/commands/status.js +254 -0
  48. package/dist/commands/status.js.map +1 -0
  49. package/dist/core/baseguard.d.ts +47 -5
  50. package/dist/core/baseguard.d.ts.map +1 -1
  51. package/dist/core/baseguard.js +506 -52
  52. package/dist/core/baseguard.js.map +1 -1
  53. package/dist/core/cache-manager.d.ts.map +1 -1
  54. package/dist/core/cache-manager.js +3 -1
  55. package/dist/core/cache-manager.js.map +1 -1
  56. package/dist/core/configuration-recovery.d.ts +116 -0
  57. package/dist/core/configuration-recovery.d.ts.map +1 -0
  58. package/dist/core/configuration-recovery.js +552 -0
  59. package/dist/core/configuration-recovery.js.map +1 -0
  60. package/dist/core/configuration.d.ts +4 -0
  61. package/dist/core/configuration.d.ts.map +1 -1
  62. package/dist/core/configuration.js +35 -0
  63. package/dist/core/configuration.js.map +1 -1
  64. package/dist/core/debug-logger.d.ts +181 -0
  65. package/dist/core/debug-logger.d.ts.map +1 -0
  66. package/dist/core/debug-logger.js +479 -0
  67. package/dist/core/debug-logger.js.map +1 -0
  68. package/dist/core/file-processor.d.ts.map +1 -1
  69. package/dist/core/file-processor.js +8 -2
  70. package/dist/core/file-processor.js.map +1 -1
  71. package/dist/core/graceful-degradation-manager.d.ts +123 -0
  72. package/dist/core/graceful-degradation-manager.d.ts.map +1 -0
  73. package/dist/core/graceful-degradation-manager.js +512 -0
  74. package/dist/core/graceful-degradation-manager.js.map +1 -0
  75. package/dist/core/index.d.ts +4 -0
  76. package/dist/core/index.d.ts.map +1 -1
  77. package/dist/core/index.js +4 -0
  78. package/dist/core/index.js.map +1 -1
  79. package/dist/core/logger.d.ts +1 -0
  80. package/dist/core/logger.d.ts.map +1 -0
  81. package/dist/core/logger.js +2 -0
  82. package/dist/core/logger.js.map +1 -0
  83. package/dist/core/memory-manager.d.ts +84 -0
  84. package/dist/core/memory-manager.d.ts.map +1 -1
  85. package/dist/core/memory-manager.js +236 -1
  86. package/dist/core/memory-manager.js.map +1 -1
  87. package/dist/core/startup-optimizer.d.ts +12 -0
  88. package/dist/core/startup-optimizer.d.ts.map +1 -1
  89. package/dist/core/startup-optimizer.js +60 -0
  90. package/dist/core/startup-optimizer.js.map +1 -1
  91. package/dist/core/system-error-handler.d.ts +65 -0
  92. package/dist/core/system-error-handler.d.ts.map +1 -0
  93. package/dist/core/system-error-handler.js +646 -0
  94. package/dist/core/system-error-handler.js.map +1 -0
  95. package/dist/git/github-manager.d.ts +5 -16
  96. package/dist/git/github-manager.d.ts.map +1 -1
  97. package/dist/git/github-manager.js +6 -61
  98. package/dist/git/github-manager.js.map +1 -1
  99. package/dist/parsers/react-parser-optimized.d.ts +16 -0
  100. package/dist/parsers/react-parser-optimized.d.ts.map +1 -0
  101. package/dist/parsers/react-parser-optimized.js +147 -0
  102. package/dist/parsers/react-parser-optimized.js.map +1 -0
  103. package/dist/parsers/react-parser.d.ts.map +1 -1
  104. package/dist/parsers/react-parser.js +17 -15
  105. package/dist/parsers/react-parser.js.map +1 -1
  106. package/dist/parsers/svelte-parser.d.ts.map +1 -1
  107. package/dist/parsers/svelte-parser.js +7 -3
  108. package/dist/parsers/svelte-parser.js.map +1 -1
  109. package/dist/parsers/vanilla-parser.d.ts.map +1 -1
  110. package/dist/parsers/vanilla-parser.js +7 -3
  111. package/dist/parsers/vanilla-parser.js.map +1 -1
  112. package/dist/parsers/vue-parser.d.ts +18 -0
  113. package/dist/parsers/vue-parser.d.ts.map +1 -1
  114. package/dist/parsers/vue-parser.js +387 -1
  115. package/dist/parsers/vue-parser.js.map +1 -1
  116. package/dist/types/index.d.ts +4 -0
  117. package/dist/types/index.d.ts.map +1 -1
  118. package/dist/ui/help.js +1 -1
  119. package/dist/ui/help.js.map +1 -1
  120. package/dist/ui/prompts.d.ts +7 -4
  121. package/dist/ui/prompts.d.ts.map +1 -1
  122. package/dist/ui/prompts.js +48 -55
  123. package/dist/ui/prompts.js.map +1 -1
  124. package/package.json +30 -5
  125. package/src/ai/__tests__/gemini-analyzer.test.ts +2 -2
  126. package/src/ai/agentkit-orchestrator.ts +534 -0
  127. package/src/ai/gemini-code-fixer.ts +540 -0
  128. package/src/ai/jules-implementer.ts +6 -5
  129. package/src/ai/unified-code-fixer.ts +347 -0
  130. package/src/commands/config.ts +218 -0
  131. package/src/commands/fix.ts +98 -94
  132. package/src/commands/index.ts +2 -1
  133. package/src/commands/init.ts +16 -2
  134. package/src/commands/status.ts +307 -0
  135. package/src/core/baseguard.ts +36 -22
  136. package/src/core/cache-manager.ts +4 -2
  137. package/src/core/configuration-recovery.ts +3 -6
  138. package/src/core/configuration.ts +37 -0
  139. package/src/core/debug-logger.ts +2 -2
  140. package/src/core/file-processor.ts +10 -3
  141. package/src/core/index.ts +5 -1
  142. package/src/core/memory-manager.ts +4 -3
  143. package/src/core/startup-optimizer.ts +70 -0
  144. package/src/core/system-error-handler.ts +9 -5
  145. package/src/git/github-manager.ts +11 -79
  146. package/src/parsers/react-parser.ts +2 -2
  147. package/src/parsers/svelte-parser.ts +13 -9
  148. package/src/parsers/vanilla-parser.ts +18 -14
  149. package/src/parsers/vue-parser.ts +20 -14
  150. package/src/types/index.ts +4 -0
  151. package/src/ui/help.ts +1 -1
  152. package/src/ui/prompts.ts +54 -61
  153. package/test-build.js +41 -0
  154. package/tests/e2e/git-integration.e2e.test.ts +1 -1
  155. package/tsconfig.json +0 -1
  156. package/vitest.config.ts +4 -2
@@ -3,6 +3,11 @@ import { BaselineChecker } from './baseline-checker.js';
3
3
  import { FileProcessor } from './file-processor.js';
4
4
  import { DirectoryFilter } from './directory-filter.js';
5
5
  import { CacheManager } from './cache-manager.js';
6
+ import { SystemErrorHandler } from './system-error-handler.js';
7
+ import { GracefulDegradationManager } from './graceful-degradation-manager.js';
8
+ import { ConfigurationRecovery } from './configuration-recovery.js';
9
+ import { logger } from './debug-logger.js';
10
+ import chalk from 'chalk';
6
11
  /**
7
12
  * Main BaseGuard class that orchestrates compatibility checking and fixing
8
13
  */
@@ -13,62 +18,211 @@ export class BaseGuard {
13
18
  fileProcessor;
14
19
  directoryFilter;
15
20
  cacheManager;
21
+ categoryLogger;
22
+ initialized = false;
16
23
  constructor(config) {
17
24
  this.config = config;
18
- this.cacheManager = new CacheManager({
19
- maxCacheSize: 2000,
20
- cacheValidityMs: 10 * 60 * 1000 // 10 minutes
21
- });
22
- this.parserManager = new ParserManager();
23
- this.baselineChecker = new BaselineChecker();
24
- this.fileProcessor = new FileProcessor({
25
- maxWorkers: 8,
26
- cacheManager: this.cacheManager
27
- });
28
- this.directoryFilter = new DirectoryFilter({
29
- maxDepth: 8,
30
- maxFiles: 5000
25
+ this.categoryLogger = logger.createCategoryLogger('baseguard');
26
+ // Initialize with error handling (async initialization)
27
+ this.initializeComponents().catch(error => {
28
+ this.categoryLogger.error('Failed to initialize BaseGuard', { error });
31
29
  });
32
30
  }
33
31
  /**
34
- * Check files for compatibility violations with performance optimizations
32
+ * Initialize BaseGuard components with error recovery
33
+ */
34
+ async initializeComponents() {
35
+ try {
36
+ this.categoryLogger.info('Initializing BaseGuard components');
37
+ // Initialize graceful degradation manager
38
+ await GracefulDegradationManager.initialize();
39
+ // Initialize components with error handling
40
+ this.cacheManager = await SystemErrorHandler.handleGracefully(async () => {
41
+ return new CacheManager({
42
+ maxCacheSize: parseInt(process.env.BASEGUARD_CACHE_SIZE || '2000'),
43
+ cacheValidityMs: 10 * 60 * 1000 // 10 minutes
44
+ });
45
+ }, new CacheManager({ maxCacheSize: 1000, cacheValidityMs: 5 * 60 * 1000 }), { operation: 'cache_manager_init' });
46
+ this.parserManager = await SystemErrorHandler.handleGracefully(async () => {
47
+ return new ParserManager();
48
+ }, new ParserManager(), { operation: 'parser_manager_init' });
49
+ this.baselineChecker = await SystemErrorHandler.handleGracefully(async () => {
50
+ return new BaselineChecker();
51
+ }, new BaselineChecker(), { operation: 'baseline_checker_init' });
52
+ const maxWorkers = parseInt(process.env.BASEGUARD_MAX_WORKERS || '8');
53
+ const maxFiles = parseInt(process.env.BASEGUARD_MAX_FILES || '5000');
54
+ this.fileProcessor = await SystemErrorHandler.handleGracefully(async () => {
55
+ return new FileProcessor({
56
+ maxWorkers,
57
+ cacheManager: this.cacheManager
58
+ });
59
+ }, new FileProcessor({ maxWorkers: 2, cacheManager: this.cacheManager }), { operation: 'file_processor_init' });
60
+ this.directoryFilter = await SystemErrorHandler.handleGracefully(async () => {
61
+ return new DirectoryFilter({
62
+ maxDepth: 8,
63
+ maxFiles
64
+ });
65
+ }, new DirectoryFilter({ maxDepth: 4, maxFiles: 1000 }), { operation: 'directory_filter_init' });
66
+ this.initialized = true;
67
+ this.categoryLogger.info('BaseGuard components initialized successfully');
68
+ }
69
+ catch (error) {
70
+ this.categoryLogger.error('Failed to initialize BaseGuard components', { error });
71
+ throw new Error(`BaseGuard initialization failed: ${error instanceof Error ? error.message : 'Unknown error'}`);
72
+ }
73
+ }
74
+ /**
75
+ * Ensure BaseGuard is properly initialized
76
+ */
77
+ async ensureInitialized() {
78
+ if (!this.initialized) {
79
+ await this.initializeComponents();
80
+ }
81
+ }
82
+ /**
83
+ * Check files for compatibility violations with enhanced error recovery
35
84
  */
36
85
  async checkViolations(patterns = []) {
37
- const violations = [];
38
- // Find files using smart filtering and caching
39
- const allFiles = patterns.length > 0
40
- ? await this.directoryFilter.findFilesWithGlob(patterns)
41
- : await this.directoryFilter.findFiles(['src', 'app', 'pages', 'components'], {
42
- includeHidden: false
86
+ await this.ensureInitialized();
87
+ const sessionId = logger.startSession('check-violations');
88
+ this.categoryLogger.startPerformance('check-violations');
89
+ try {
90
+ const violations = [];
91
+ // Find files using smart filtering and caching with error recovery
92
+ const allFiles = await SystemErrorHandler.withRetry(async () => {
93
+ return patterns.length > 0
94
+ ? await this.directoryFilter.findFilesWithGlob(patterns)
95
+ : await this.directoryFilter.findFiles(['src', 'app', 'pages', 'components'], {
96
+ includeHidden: false
97
+ });
98
+ }, { operation: 'find_files', details: { patterns } }, 3 // max retries
99
+ );
100
+ if (allFiles.length === 0) {
101
+ this.categoryLogger.warn('No supported files found to check', { patterns });
102
+ return violations;
103
+ }
104
+ this.categoryLogger.info(`Processing ${allFiles.length} files for violations`);
105
+ // Process files concurrently with caching and error recovery
106
+ const allFeatures = await SystemErrorHandler.handleGracefully(() => this.fileProcessor.processFiles(allFiles), [], // fallback to empty array
107
+ { operation: 'process_files', details: { fileCount: allFiles.length } }, {
108
+ logError: true,
109
+ showWarning: true,
110
+ attemptRecovery: true
111
+ });
112
+ this.categoryLogger.info(`Extracted ${allFeatures.length} features from ${allFiles.length} files`);
113
+ // Check each feature for compatibility violations with error recovery
114
+ let processedFeatures = 0;
115
+ let failedFeatures = 0;
116
+ for (const feature of allFeatures) {
117
+ try {
118
+ const compatibilityResult = await SystemErrorHandler.handleGracefully(() => this.baselineChecker.checkCompatibility(feature, this.config.targets), { violations: [], featureData: null }, // fallback result
119
+ {
120
+ operation: 'check_compatibility',
121
+ file: feature.file,
122
+ details: { feature: feature.feature }
123
+ });
124
+ // Add violations with file context
125
+ for (const violation of compatibilityResult.violations) {
126
+ violations.push({
127
+ ...violation,
128
+ file: feature.file || 'unknown',
129
+ line: feature.line,
130
+ column: feature.column,
131
+ context: feature.context
132
+ });
133
+ }
134
+ processedFeatures++;
135
+ }
136
+ catch (error) {
137
+ failedFeatures++;
138
+ this.categoryLogger.warn('Failed to check feature compatibility', {
139
+ feature: feature.feature,
140
+ file: feature.file,
141
+ error: error instanceof Error ? error.message : 'Unknown error'
142
+ });
143
+ // Continue processing other features
144
+ continue;
145
+ }
146
+ }
147
+ const duration = this.categoryLogger.endPerformance('check-violations', {
148
+ totalFiles: allFiles.length,
149
+ processedFeatures,
150
+ failedFeatures,
151
+ violationsFound: violations.length
152
+ });
153
+ this.categoryLogger.info('Violation check completed', {
154
+ duration,
155
+ totalFiles: allFiles.length,
156
+ processedFeatures,
157
+ failedFeatures,
158
+ violationsFound: violations.length
43
159
  });
44
- if (allFiles.length === 0) {
45
- console.warn('No supported files found to check');
46
160
  return violations;
47
161
  }
48
- console.log(`Processing ${allFiles.length} files...`);
49
- // Process files concurrently with caching
50
- const allFeatures = await this.fileProcessor.processFiles(allFiles);
51
- // Check each feature for compatibility violations
52
- for (const feature of allFeatures) {
53
- try {
54
- const compatibilityResult = await this.baselineChecker.checkCompatibility(feature, this.config.targets);
55
- // Add violations with file context
56
- for (const violation of compatibilityResult.violations) {
57
- violations.push({
58
- ...violation,
59
- file: feature.file || 'unknown',
60
- line: feature.line,
61
- column: feature.column,
62
- context: feature.context
63
- });
162
+ catch (error) {
163
+ this.categoryLogger.error('Violation check failed', { error });
164
+ // Try graceful degradation
165
+ const mode = GracefulDegradationManager.getCurrentMode();
166
+ if (mode?.capabilities.baselineChecking) {
167
+ this.categoryLogger.info('Attempting graceful degradation for violation checking');
168
+ try {
169
+ // Simplified violation checking with minimal features
170
+ const basicViolations = await this.performBasicViolationCheck(patterns);
171
+ this.categoryLogger.info('Graceful degradation successful', { violationsFound: basicViolations.length });
172
+ return basicViolations;
173
+ }
174
+ catch (degradationError) {
175
+ this.categoryLogger.error('Graceful degradation also failed', { error: degradationError });
64
176
  }
65
177
  }
66
- catch (error) {
67
- console.warn(`Warning: Could not check compatibility for feature ${feature.feature}: ${error instanceof Error ? error.message : 'Unknown error'}`);
178
+ throw error;
179
+ }
180
+ finally {
181
+ await logger.endSession();
182
+ }
183
+ }
184
+ /**
185
+ * Perform basic violation checking as fallback
186
+ */
187
+ async performBasicViolationCheck(patterns) {
188
+ const violations = [];
189
+ try {
190
+ // Use minimal file processing
191
+ const basicFiles = patterns.length > 0 ? patterns : ['src/**/*.{js,ts,jsx,tsx,css,vue,svelte}'];
192
+ // Simple file enumeration without complex processing
193
+ const { glob } = await import('glob');
194
+ const files = await glob(basicFiles.join(','), { ignore: ['node_modules/**', 'dist/**', 'build/**'] });
195
+ this.categoryLogger.info(`Basic violation check on ${files.length} files`);
196
+ // Process a limited number of files to avoid overwhelming the system
197
+ const limitedFiles = files.slice(0, 100);
198
+ for (const file of limitedFiles) {
199
+ try {
200
+ // Basic feature extraction without complex parsing
201
+ const basicFeatures = await this.extractBasicFeatures(file);
202
+ for (const feature of basicFeatures) {
203
+ const result = await this.baselineChecker.checkCompatibility(feature, this.config.targets);
204
+ violations.push(...result.violations);
205
+ }
206
+ }
207
+ catch (error) {
208
+ // Skip individual file errors in basic mode
209
+ this.categoryLogger.debug('Skipped file in basic mode', { file, error: error instanceof Error ? error.message : 'Unknown error' });
210
+ }
68
211
  }
69
212
  }
213
+ catch (error) {
214
+ this.categoryLogger.error('Basic violation check failed', { error });
215
+ }
70
216
  return violations;
71
217
  }
218
+ /**
219
+ * Extract basic features without complex parsing
220
+ */
221
+ async extractBasicFeatures(file) {
222
+ // This is a simplified feature extraction for fallback mode
223
+ // In a real implementation, this would do basic text pattern matching
224
+ return [];
225
+ }
72
226
  /**
73
227
  * Get processing statistics
74
228
  */
@@ -101,32 +255,332 @@ export class BaseGuard {
101
255
  this.cacheManager.clearAll();
102
256
  }
103
257
  /**
104
- * Cleanup resources
258
+ * Cleanup resources with error handling
105
259
  */
106
260
  async cleanup() {
107
- await this.fileProcessor.cleanup();
108
- this.cacheManager.clearAll();
261
+ this.categoryLogger.info('Starting BaseGuard cleanup');
262
+ try {
263
+ // Cleanup file processor
264
+ await SystemErrorHandler.handleGracefully(async () => {
265
+ await this.fileProcessor.cleanup();
266
+ return undefined;
267
+ }, undefined, { operation: 'file_processor_cleanup' }, { logError: false, showWarning: false });
268
+ // Clear caches
269
+ await SystemErrorHandler.handleGracefully(async () => {
270
+ this.cacheManager.clearAll();
271
+ return undefined;
272
+ }, undefined, { operation: 'cache_cleanup' }, { logError: false, showWarning: false });
273
+ // Cleanup graceful degradation manager
274
+ await SystemErrorHandler.handleGracefully(async () => {
275
+ await GracefulDegradationManager.cleanupCache();
276
+ return undefined;
277
+ }, undefined, { operation: 'degradation_cleanup' }, { logError: false, showWarning: false });
278
+ // Cleanup old logs
279
+ await SystemErrorHandler.handleGracefully(async () => {
280
+ await logger.cleanupOldLogs();
281
+ return undefined;
282
+ }, undefined, { operation: 'log_cleanup' }, { logError: false, showWarning: false });
283
+ this.categoryLogger.info('BaseGuard cleanup completed');
284
+ }
285
+ catch (error) {
286
+ this.categoryLogger.warn('Some cleanup operations failed', { error: error instanceof Error ? error.message : 'Unknown error' });
287
+ }
288
+ }
289
+ /**
290
+ * Create auto-backup of configuration
291
+ */
292
+ async createConfigBackup() {
293
+ try {
294
+ return await ConfigurationRecovery.createAutoBackup();
295
+ }
296
+ catch (error) {
297
+ this.categoryLogger.error('Failed to create config backup', { error });
298
+ return null;
299
+ }
300
+ }
301
+ /**
302
+ * Show system status and health
303
+ */
304
+ async showSystemStatus() {
305
+ console.log(chalk.cyan('🔍 BaseGuard System Status\n'));
306
+ const health = await this.getHealthStatus();
307
+ // Overall status
308
+ const statusIcon = health.overall === 'healthy' ? '✅' : health.overall === 'degraded' ? '⚠️' : '❌';
309
+ const statusColor = health.overall === 'healthy' ? chalk.green : health.overall === 'degraded' ? chalk.yellow : chalk.red;
310
+ console.log(statusColor(`${statusIcon} Overall Status: ${health.overall.toUpperCase()}`));
311
+ console.log(chalk.dim(`Degradation Mode: ${health.degradationMode}\n`));
312
+ // Component status
313
+ console.log(chalk.cyan('📊 Component Status:'));
314
+ for (const [component, status] of Object.entries(health.components)) {
315
+ const componentIcon = status.status === 'healthy' ? '✅' : status.status === 'degraded' ? '⚠️' : '❌';
316
+ console.log(` ${componentIcon} ${component}: ${status.status}`);
317
+ if (status.details && status.status !== 'healthy') {
318
+ if (status.details.errors?.length > 0) {
319
+ console.log(chalk.dim(` Errors: ${status.details.errors.slice(0, 2).join(', ')}`));
320
+ }
321
+ if (status.details.error) {
322
+ console.log(chalk.dim(` Error: ${status.details.error}`));
323
+ }
324
+ }
325
+ }
326
+ // Recommendations
327
+ if (health.recommendations.length > 0) {
328
+ console.log(chalk.cyan('\n💡 Recommendations:'));
329
+ health.recommendations.forEach(rec => {
330
+ console.log(chalk.cyan(` • ${rec}`));
331
+ });
332
+ }
333
+ // Show degradation status
334
+ GracefulDegradationManager.showStatus();
109
335
  }
110
336
  /**
111
- * Analyze violations using AI
337
+ * Analyze violations using AI with graceful degradation
112
338
  */
113
339
  async analyzeViolations(violations) {
114
- // Implementation will be added in task 4
115
- throw new Error('Not implemented yet');
340
+ await this.ensureInitialized();
341
+ const sessionId = logger.startSession('analyze-violations');
342
+ this.categoryLogger.startPerformance('analyze-violations');
343
+ try {
344
+ const analyses = [];
345
+ const mode = GracefulDegradationManager.getCurrentMode();
346
+ if (!mode?.capabilities.aiAnalysis) {
347
+ this.categoryLogger.info('AI analysis disabled in current mode, using fallback analysis');
348
+ // Create fallback analyses for all violations
349
+ for (const violation of violations) {
350
+ const fallbackAnalysis = GracefulDegradationManager.createFallbackAnalysis(violation, 'AI analysis unavailable in current mode');
351
+ analyses.push(fallbackAnalysis);
352
+ }
353
+ return analyses;
354
+ }
355
+ // Try to use cached analyses first
356
+ for (const violation of violations) {
357
+ const cached = await GracefulDegradationManager.loadCachedAnalysis(violation);
358
+ if (cached) {
359
+ analyses.push(cached);
360
+ }
361
+ else {
362
+ // Will need AI analysis
363
+ const fallbackAnalysis = GracefulDegradationManager.createFallbackAnalysis(violation, 'AI analysis not yet implemented');
364
+ analyses.push(fallbackAnalysis);
365
+ }
366
+ }
367
+ const duration = this.categoryLogger.endPerformance('analyze-violations', {
368
+ violationCount: violations.length,
369
+ analysesCreated: analyses.length
370
+ });
371
+ this.categoryLogger.info('Violation analysis completed', {
372
+ duration,
373
+ violationCount: violations.length,
374
+ analysesCreated: analyses.length
375
+ });
376
+ return analyses;
377
+ }
378
+ catch (error) {
379
+ this.categoryLogger.error('Violation analysis failed', { error });
380
+ // Fallback to basic analysis
381
+ const fallbackAnalyses = violations.map(violation => GracefulDegradationManager.createFallbackAnalysis(violation, 'Analysis failed, using fallback'));
382
+ return fallbackAnalyses;
383
+ }
384
+ finally {
385
+ await logger.endSession();
386
+ }
116
387
  }
117
388
  /**
118
- * Generate fixes for violations
389
+ * Generate fixes for violations with graceful degradation
119
390
  */
120
391
  async generateFixes(violations, analyses) {
121
- // Implementation will be added in task 5
122
- throw new Error('Not implemented yet');
392
+ await this.ensureInitialized();
393
+ const sessionId = logger.startSession('generate-fixes');
394
+ this.categoryLogger.startPerformance('generate-fixes');
395
+ try {
396
+ const fixes = [];
397
+ const mode = GracefulDegradationManager.getCurrentMode();
398
+ if (!mode?.capabilities.autoFix) {
399
+ this.categoryLogger.info('Auto-fix disabled in current mode, creating manual fix suggestions');
400
+ // Create manual fix suggestions
401
+ for (let i = 0; i < violations.length; i++) {
402
+ const violation = violations[i];
403
+ const analysis = analyses[i];
404
+ if (violation && analysis) {
405
+ const manualFix = GracefulDegradationManager.createBasicFixSuggestion(violation, analysis);
406
+ fixes.push(manualFix);
407
+ }
408
+ }
409
+ return fixes;
410
+ }
411
+ // Auto-fix would be implemented here when available
412
+ this.categoryLogger.info('Auto-fix not yet implemented, creating manual suggestions');
413
+ for (let i = 0; i < violations.length; i++) {
414
+ const violation = violations[i];
415
+ const analysis = analyses[i];
416
+ if (violation && analysis) {
417
+ const manualFix = GracefulDegradationManager.createBasicFixSuggestion(violation, analysis);
418
+ fixes.push(manualFix);
419
+ }
420
+ }
421
+ const duration = this.categoryLogger.endPerformance('generate-fixes', {
422
+ violationCount: violations.length,
423
+ fixesGenerated: fixes.length
424
+ });
425
+ this.categoryLogger.info('Fix generation completed', {
426
+ duration,
427
+ violationCount: violations.length,
428
+ fixesGenerated: fixes.length
429
+ });
430
+ return fixes;
431
+ }
432
+ catch (error) {
433
+ this.categoryLogger.error('Fix generation failed', { error });
434
+ throw error;
435
+ }
436
+ finally {
437
+ await logger.endSession();
438
+ }
123
439
  }
124
440
  /**
125
- * Apply fixes to files
441
+ * Apply fixes to files with error recovery
126
442
  */
127
443
  async applyFixes(fixes) {
128
- // Implementation will be added in task 5
129
- throw new Error('Not implemented yet');
444
+ await this.ensureInitialized();
445
+ const sessionId = logger.startSession('apply-fixes');
446
+ this.categoryLogger.startPerformance('apply-fixes');
447
+ try {
448
+ this.categoryLogger.info(`Applying ${fixes.length} fixes`);
449
+ let appliedCount = 0;
450
+ let failedCount = 0;
451
+ for (const fix of fixes) {
452
+ try {
453
+ await SystemErrorHandler.withRetry(async () => {
454
+ // Fix application would be implemented here
455
+ this.categoryLogger.debug('Fix application not yet implemented', {
456
+ file: fix.filePath,
457
+ feature: fix.violation.feature
458
+ });
459
+ // For now, just log the fix that would be applied
460
+ console.log(chalk.cyan(`Would apply fix for ${fix.violation.feature} in ${fix.filePath}`));
461
+ }, {
462
+ operation: 'apply_fix',
463
+ file: fix.filePath,
464
+ details: { feature: fix.violation.feature }
465
+ }, 2 // max retries
466
+ );
467
+ appliedCount++;
468
+ }
469
+ catch (error) {
470
+ failedCount++;
471
+ this.categoryLogger.error('Failed to apply fix', {
472
+ file: fix.filePath,
473
+ feature: fix.violation.feature,
474
+ error: error instanceof Error ? error.message : 'Unknown error'
475
+ });
476
+ }
477
+ }
478
+ const duration = this.categoryLogger.endPerformance('apply-fixes', {
479
+ totalFixes: fixes.length,
480
+ appliedCount,
481
+ failedCount
482
+ });
483
+ this.categoryLogger.info('Fix application completed', {
484
+ duration,
485
+ totalFixes: fixes.length,
486
+ appliedCount,
487
+ failedCount
488
+ });
489
+ if (failedCount > 0) {
490
+ console.log(chalk.yellow(`⚠️ ${failedCount} fixes failed to apply. Check logs for details.`));
491
+ }
492
+ }
493
+ catch (error) {
494
+ this.categoryLogger.error('Fix application process failed', { error });
495
+ throw error;
496
+ }
497
+ finally {
498
+ await logger.endSession();
499
+ }
500
+ }
501
+ /**
502
+ * Recover from configuration corruption
503
+ */
504
+ async recoverConfiguration() {
505
+ this.categoryLogger.info('Attempting configuration recovery');
506
+ const recoveryResult = await ConfigurationRecovery.recoverConfiguration({
507
+ createBackup: true,
508
+ validateConfig: true,
509
+ migrateVersion: true,
510
+ repairCorruption: true,
511
+ useDefaults: true
512
+ });
513
+ if (recoveryResult.success && recoveryResult.config) {
514
+ this.config = recoveryResult.config;
515
+ this.categoryLogger.info('Configuration recovered successfully');
516
+ if (recoveryResult.warnings.length > 0) {
517
+ this.categoryLogger.warn('Configuration recovery warnings', { warnings: recoveryResult.warnings });
518
+ }
519
+ return this.config;
520
+ }
521
+ else {
522
+ const error = new Error(`Configuration recovery failed: ${recoveryResult.errors.join(', ')}`);
523
+ this.categoryLogger.error('Configuration recovery failed', { errors: recoveryResult.errors });
524
+ throw error;
525
+ }
526
+ }
527
+ /**
528
+ * Get system health status
529
+ */
530
+ async getHealthStatus() {
531
+ const health = {
532
+ overall: 'healthy',
533
+ components: {},
534
+ degradationMode: 'unknown',
535
+ recommendations: []
536
+ };
537
+ try {
538
+ // Check configuration health
539
+ const configIntegrity = await ConfigurationRecovery.validateIntegrity();
540
+ health.components.configuration = {
541
+ status: configIntegrity.valid ? 'healthy' : 'degraded',
542
+ details: { errors: configIntegrity.errors, suggestions: configIntegrity.suggestions }
543
+ };
544
+ // Check degradation mode
545
+ const mode = GracefulDegradationManager.getCurrentMode();
546
+ health.degradationMode = mode?.name || 'unknown';
547
+ if (mode?.name !== 'Full Functionality') {
548
+ health.overall = 'degraded';
549
+ health.recommendations.push(`Currently in ${mode?.name} mode`);
550
+ health.recommendations.push(...(mode?.limitations || []));
551
+ }
552
+ // Check service status
553
+ const serviceStatus = GracefulDegradationManager.getServiceStatus();
554
+ for (const [service, status] of serviceStatus) {
555
+ health.components[service] = {
556
+ status: status.available ? 'healthy' : 'degraded',
557
+ details: { lastCheck: status.lastCheck, error: status.error }
558
+ };
559
+ if (!status.available) {
560
+ health.overall = 'degraded';
561
+ health.recommendations.push(`${service} service is unavailable`);
562
+ }
563
+ }
564
+ // Check error summary
565
+ const errorSummary = logger.getErrorSummary();
566
+ health.components.errors = {
567
+ status: errorSummary.totalErrors > 10 ? 'critical' : errorSummary.totalErrors > 0 ? 'degraded' : 'healthy',
568
+ details: errorSummary
569
+ };
570
+ if (errorSummary.totalErrors > 10) {
571
+ health.overall = 'critical';
572
+ health.recommendations.push('High error count detected - check logs');
573
+ }
574
+ }
575
+ catch (error) {
576
+ health.overall = 'critical';
577
+ health.components.healthCheck = {
578
+ status: 'failed',
579
+ details: { error: error instanceof Error ? error.message : 'Unknown error' }
580
+ };
581
+ health.recommendations.push('Health check failed - system may be unstable');
582
+ }
583
+ return health;
130
584
  }
131
585
  }
132
586
  //# sourceMappingURL=baseguard.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"baseguard.js","sourceRoot":"","sources":["../../src/core/baseguard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"baseguard.js","sourceRoot":"","sources":["../../src/core/baseguard.ts"],"names":[],"mappings":"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"}