baseguard 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (244) hide show
  1. package/.eslintrc.json +25 -0
  2. package/.prettierrc +8 -0
  3. package/README.md +94 -0
  4. package/bin/base.js +494 -0
  5. package/dist/ai/fix-manager.d.ts +67 -0
  6. package/dist/ai/fix-manager.d.ts.map +1 -0
  7. package/dist/ai/fix-manager.js +326 -0
  8. package/dist/ai/fix-manager.js.map +1 -0
  9. package/dist/ai/gemini-analyzer.d.ts +116 -0
  10. package/dist/ai/gemini-analyzer.d.ts.map +1 -0
  11. package/dist/ai/gemini-analyzer.js +572 -0
  12. package/dist/ai/gemini-analyzer.js.map +1 -0
  13. package/dist/ai/index.d.ts +4 -0
  14. package/dist/ai/index.d.ts.map +1 -0
  15. package/dist/ai/index.js +5 -0
  16. package/dist/ai/index.js.map +1 -0
  17. package/dist/ai/jules-implementer.d.ts +115 -0
  18. package/dist/ai/jules-implementer.d.ts.map +1 -0
  19. package/dist/ai/jules-implementer.js +387 -0
  20. package/dist/ai/jules-implementer.js.map +1 -0
  21. package/dist/commands/automation.d.ts +5 -0
  22. package/dist/commands/automation.d.ts.map +1 -0
  23. package/dist/commands/automation.js +305 -0
  24. package/dist/commands/automation.js.map +1 -0
  25. package/dist/commands/check.d.ts +9 -0
  26. package/dist/commands/check.d.ts.map +1 -0
  27. package/dist/commands/check.js +113 -0
  28. package/dist/commands/check.js.map +1 -0
  29. package/dist/commands/config.d.ts +11 -0
  30. package/dist/commands/config.d.ts.map +1 -0
  31. package/dist/commands/config.js +324 -0
  32. package/dist/commands/config.js.map +1 -0
  33. package/dist/commands/fix.d.ts +9 -0
  34. package/dist/commands/fix.d.ts.map +1 -0
  35. package/dist/commands/fix.js +207 -0
  36. package/dist/commands/fix.js.map +1 -0
  37. package/dist/commands/index.d.ts +6 -0
  38. package/dist/commands/index.d.ts.map +1 -0
  39. package/dist/commands/index.js +7 -0
  40. package/dist/commands/index.js.map +1 -0
  41. package/dist/commands/init.d.ts +9 -0
  42. package/dist/commands/init.d.ts.map +1 -0
  43. package/dist/commands/init.js +125 -0
  44. package/dist/commands/init.js.map +1 -0
  45. package/dist/core/api-key-manager.d.ts +83 -0
  46. package/dist/core/api-key-manager.d.ts.map +1 -0
  47. package/dist/core/api-key-manager.js +244 -0
  48. package/dist/core/api-key-manager.js.map +1 -0
  49. package/dist/core/baseguard.d.ts +46 -0
  50. package/dist/core/baseguard.d.ts.map +1 -0
  51. package/dist/core/baseguard.js +132 -0
  52. package/dist/core/baseguard.js.map +1 -0
  53. package/dist/core/baseline-checker.d.ts +63 -0
  54. package/dist/core/baseline-checker.d.ts.map +1 -0
  55. package/dist/core/baseline-checker.js +502 -0
  56. package/dist/core/baseline-checker.js.map +1 -0
  57. package/dist/core/cache-manager.d.ts +88 -0
  58. package/dist/core/cache-manager.d.ts.map +1 -0
  59. package/dist/core/cache-manager.js +213 -0
  60. package/dist/core/cache-manager.js.map +1 -0
  61. package/dist/core/configuration.d.ts +140 -0
  62. package/dist/core/configuration.d.ts.map +1 -0
  63. package/dist/core/configuration.js +474 -0
  64. package/dist/core/configuration.js.map +1 -0
  65. package/dist/core/directory-filter.d.ts +90 -0
  66. package/dist/core/directory-filter.d.ts.map +1 -0
  67. package/dist/core/directory-filter.js +319 -0
  68. package/dist/core/directory-filter.js.map +1 -0
  69. package/dist/core/error-handler.d.ts +110 -0
  70. package/dist/core/error-handler.d.ts.map +1 -0
  71. package/dist/core/error-handler.js +392 -0
  72. package/dist/core/error-handler.js.map +1 -0
  73. package/dist/core/file-processor.d.ts +80 -0
  74. package/dist/core/file-processor.d.ts.map +1 -0
  75. package/dist/core/file-processor.js +259 -0
  76. package/dist/core/file-processor.js.map +1 -0
  77. package/dist/core/gitignore-manager.d.ts +44 -0
  78. package/dist/core/gitignore-manager.d.ts.map +1 -0
  79. package/dist/core/gitignore-manager.js +147 -0
  80. package/dist/core/gitignore-manager.js.map +1 -0
  81. package/dist/core/index.d.ts +13 -0
  82. package/dist/core/index.d.ts.map +1 -0
  83. package/dist/core/index.js +13 -0
  84. package/dist/core/index.js.map +1 -0
  85. package/dist/core/lazy-loader.d.ts +68 -0
  86. package/dist/core/lazy-loader.d.ts.map +1 -0
  87. package/dist/core/lazy-loader.js +260 -0
  88. package/dist/core/lazy-loader.js.map +1 -0
  89. package/dist/core/memory-manager.d.ts +1 -0
  90. package/dist/core/memory-manager.d.ts.map +1 -0
  91. package/dist/core/memory-manager.js +2 -0
  92. package/dist/core/memory-manager.js.map +1 -0
  93. package/dist/core/startup-optimizer.d.ts +45 -0
  94. package/dist/core/startup-optimizer.d.ts.map +1 -0
  95. package/dist/core/startup-optimizer.js +140 -0
  96. package/dist/core/startup-optimizer.js.map +1 -0
  97. package/dist/git/automation-engine.d.ts +58 -0
  98. package/dist/git/automation-engine.d.ts.map +1 -0
  99. package/dist/git/automation-engine.js +318 -0
  100. package/dist/git/automation-engine.js.map +1 -0
  101. package/dist/git/github-manager.d.ts +71 -0
  102. package/dist/git/github-manager.d.ts.map +1 -0
  103. package/dist/git/github-manager.js +226 -0
  104. package/dist/git/github-manager.js.map +1 -0
  105. package/dist/git/hook-manager.d.ts +43 -0
  106. package/dist/git/hook-manager.d.ts.map +1 -0
  107. package/dist/git/hook-manager.js +191 -0
  108. package/dist/git/hook-manager.js.map +1 -0
  109. package/dist/git/index.d.ts +4 -0
  110. package/dist/git/index.d.ts.map +1 -0
  111. package/dist/git/index.js +5 -0
  112. package/dist/git/index.js.map +1 -0
  113. package/dist/index.d.ts +8 -0
  114. package/dist/index.d.ts.map +1 -0
  115. package/dist/index.js +9 -0
  116. package/dist/index.js.map +1 -0
  117. package/dist/parsers/feature-validator.d.ts +60 -0
  118. package/dist/parsers/feature-validator.d.ts.map +1 -0
  119. package/dist/parsers/feature-validator.js +483 -0
  120. package/dist/parsers/feature-validator.js.map +1 -0
  121. package/dist/parsers/index.d.ts +8 -0
  122. package/dist/parsers/index.d.ts.map +1 -0
  123. package/dist/parsers/index.js +9 -0
  124. package/dist/parsers/index.js.map +1 -0
  125. package/dist/parsers/parser-manager.d.ts +103 -0
  126. package/dist/parsers/parser-manager.d.ts.map +1 -0
  127. package/dist/parsers/parser-manager.js +321 -0
  128. package/dist/parsers/parser-manager.js.map +1 -0
  129. package/dist/parsers/parser.d.ts +23 -0
  130. package/dist/parsers/parser.d.ts.map +1 -0
  131. package/dist/parsers/parser.js +6 -0
  132. package/dist/parsers/parser.js.map +1 -0
  133. package/dist/parsers/react-parser.d.ts +22 -0
  134. package/dist/parsers/react-parser.d.ts.map +1 -0
  135. package/dist/parsers/react-parser.js +307 -0
  136. package/dist/parsers/react-parser.js.map +1 -0
  137. package/dist/parsers/svelte-parser.d.ts +33 -0
  138. package/dist/parsers/svelte-parser.d.ts.map +1 -0
  139. package/dist/parsers/svelte-parser.js +408 -0
  140. package/dist/parsers/svelte-parser.js.map +1 -0
  141. package/dist/parsers/vanilla-parser.d.ts +31 -0
  142. package/dist/parsers/vanilla-parser.d.ts.map +1 -0
  143. package/dist/parsers/vanilla-parser.js +590 -0
  144. package/dist/parsers/vanilla-parser.js.map +1 -0
  145. package/dist/parsers/vue-parser.d.ts +9 -0
  146. package/dist/parsers/vue-parser.d.ts.map +1 -0
  147. package/dist/parsers/vue-parser.js +16 -0
  148. package/dist/parsers/vue-parser.js.map +1 -0
  149. package/dist/terminal-header.d.ts +12 -0
  150. package/dist/terminal-header.js +45 -0
  151. package/dist/types/index.d.ts +83 -0
  152. package/dist/types/index.d.ts.map +1 -0
  153. package/dist/types/index.js +5 -0
  154. package/dist/types/index.js.map +1 -0
  155. package/dist/ui/components.d.ts +133 -0
  156. package/dist/ui/components.d.ts.map +1 -0
  157. package/dist/ui/components.js +482 -0
  158. package/dist/ui/components.js.map +1 -0
  159. package/dist/ui/help.d.ts +11 -0
  160. package/dist/ui/help.d.ts.map +1 -0
  161. package/dist/ui/help.js +161 -0
  162. package/dist/ui/help.js.map +1 -0
  163. package/dist/ui/index.d.ts +5 -0
  164. package/dist/ui/index.d.ts.map +1 -0
  165. package/dist/ui/index.js +5 -0
  166. package/dist/ui/index.js.map +1 -0
  167. package/dist/ui/prompts.d.ts +63 -0
  168. package/dist/ui/prompts.d.ts.map +1 -0
  169. package/dist/ui/prompts.js +611 -0
  170. package/dist/ui/prompts.js.map +1 -0
  171. package/dist/ui/terminal-header.d.ts +13 -0
  172. package/dist/ui/terminal-header.d.ts.map +1 -0
  173. package/dist/ui/terminal-header.js +46 -0
  174. package/dist/ui/terminal-header.js.map +1 -0
  175. package/package.json +80 -0
  176. package/src/ai/__tests__/gemini-analyzer.test.ts +181 -0
  177. package/src/ai/fix-manager.ts +362 -0
  178. package/src/ai/gemini-analyzer.ts +671 -0
  179. package/src/ai/index.ts +4 -0
  180. package/src/ai/jules-implementer.ts +459 -0
  181. package/src/commands/automation.ts +344 -0
  182. package/src/commands/check.ts +299 -0
  183. package/src/commands/config.ts +365 -0
  184. package/src/commands/fix.ts +234 -0
  185. package/src/commands/index.ts +6 -0
  186. package/src/commands/init.ts +142 -0
  187. package/src/commands/status.ts +0 -0
  188. package/src/core/api-key-manager.ts +298 -0
  189. package/src/core/baseguard.ts +742 -0
  190. package/src/core/baseline-checker.ts +563 -0
  191. package/src/core/cache-manager.ts +270 -0
  192. package/src/core/configuration-recovery.ts +676 -0
  193. package/src/core/configuration.ts +559 -0
  194. package/src/core/debug-logger.ts +590 -0
  195. package/src/core/directory-filter.ts +421 -0
  196. package/src/core/error-handler.ts +517 -0
  197. package/src/core/file-processor.ts +331 -0
  198. package/src/core/gitignore-manager.ts +169 -0
  199. package/src/core/graceful-degradation-manager.ts +596 -0
  200. package/src/core/index.ts +13 -0
  201. package/src/core/lazy-loader.ts +307 -0
  202. package/src/core/logger.ts +0 -0
  203. package/src/core/memory-manager.ts +294 -0
  204. package/src/core/startup-optimizer.ts +173 -0
  205. package/src/core/system-error-handler.ts +746 -0
  206. package/src/git/automation-engine.ts +361 -0
  207. package/src/git/github-manager.ts +260 -0
  208. package/src/git/hook-manager.ts +210 -0
  209. package/src/git/index.ts +4 -0
  210. package/src/index.ts +8 -0
  211. package/src/parsers/feature-validator.ts +559 -0
  212. package/src/parsers/index.ts +8 -0
  213. package/src/parsers/parser-manager.ts +419 -0
  214. package/src/parsers/parser.ts +26 -0
  215. package/src/parsers/react-parser-optimized.ts +161 -0
  216. package/src/parsers/react-parser.ts +359 -0
  217. package/src/parsers/svelte-parser.ts +506 -0
  218. package/src/parsers/vanilla-parser.ts +682 -0
  219. package/src/parsers/vue-parser.ts +472 -0
  220. package/src/types/index.ts +92 -0
  221. package/src/ui/components.ts +567 -0
  222. package/src/ui/help.ts +193 -0
  223. package/src/ui/index.ts +4 -0
  224. package/src/ui/prompts.ts +688 -0
  225. package/src/ui/terminal-header.ts +59 -0
  226. package/test-config-commands.js +56 -0
  227. package/test-header-simple.js +33 -0
  228. package/test-terminal-header.js +12 -0
  229. package/test-ui.js +29 -0
  230. package/tests/e2e/baseguard.e2e.test.ts +516 -0
  231. package/tests/e2e/cross-platform.e2e.test.ts +420 -0
  232. package/tests/e2e/git-integration.e2e.test.ts +487 -0
  233. package/tests/fixtures/react-project/package.json +14 -0
  234. package/tests/fixtures/react-project/src/App.css +76 -0
  235. package/tests/fixtures/react-project/src/App.tsx +77 -0
  236. package/tests/fixtures/svelte-project/package.json +11 -0
  237. package/tests/fixtures/svelte-project/src/App.svelte +369 -0
  238. package/tests/fixtures/vanilla-project/index.html +76 -0
  239. package/tests/fixtures/vanilla-project/script.js +331 -0
  240. package/tests/fixtures/vanilla-project/styles.css +359 -0
  241. package/tests/fixtures/vue-project/package.json +12 -0
  242. package/tests/fixtures/vue-project/src/App.vue +216 -0
  243. package/tsconfig.json +36 -0
  244. package/vitest.config.ts +10 -0
@@ -0,0 +1,324 @@
1
+ import { UIComponents, Prompts } from '../ui/index.js';
2
+ import { ConfigurationManager, ApiKeyManager, GitignoreManager } from '../core/index.js';
3
+ import { ErrorHandler } from '../core/error-handler.js';
4
+ /**
5
+ * Manage BaseGuard configuration
6
+ */
7
+ export async function config(action, options) {
8
+ try {
9
+ switch (action) {
10
+ case 'show':
11
+ await showConfiguration();
12
+ break;
13
+ case 'list':
14
+ await listConfiguration(options?.format);
15
+ break;
16
+ case 'set-keys':
17
+ await setupApiKeys();
18
+ break;
19
+ case 'targets':
20
+ await updateTargets(options);
21
+ break;
22
+ case 'automation':
23
+ await updateAutomation();
24
+ break;
25
+ case 'update':
26
+ await updateConfiguration();
27
+ break;
28
+ case 'validate':
29
+ await validateConfiguration();
30
+ break;
31
+ case 'security':
32
+ await checkSecurity();
33
+ break;
34
+ case 'backup':
35
+ await backupConfiguration();
36
+ break;
37
+ case 'restore':
38
+ await restoreConfiguration(options?.file);
39
+ break;
40
+ default:
41
+ UIComponents.showErrorBox(`Unknown config action: ${action}`);
42
+ showConfigHelp();
43
+ process.exit(1);
44
+ }
45
+ }
46
+ catch (error) {
47
+ const apiError = ErrorHandler.handleAPIError(error);
48
+ ErrorHandler.displayError(apiError);
49
+ // Provide specific help for config command issues
50
+ console.log('\n💡 Configuration help:');
51
+ if (action === 'set-keys') {
52
+ UIComponents.showList([
53
+ 'Get Gemini API key from https://aistudio.google.com',
54
+ 'Get Jules API key from https://jules.google.com',
55
+ 'Ensure API keys are valid and have proper permissions',
56
+ 'Check your internet connection for key validation'
57
+ ]);
58
+ }
59
+ else if (action === 'targets') {
60
+ UIComponents.showList([
61
+ 'Use format "browser version" (e.g., "chrome 100")',
62
+ 'Available browsers: chrome, safari, firefox, edge',
63
+ 'Use "baseline" for Baseline-only support',
64
+ 'Check available presets with "base config targets --help"'
65
+ ]);
66
+ }
67
+ else if (action === 'validate') {
68
+ UIComponents.showList([
69
+ 'Check .baseguardrc.json file exists',
70
+ 'Verify JSON syntax is correct',
71
+ 'Run "base init" to recreate configuration if needed'
72
+ ]);
73
+ }
74
+ else {
75
+ UIComponents.showList([
76
+ 'Run "base config show" to see current configuration',
77
+ 'Use "base config --help" to see available commands',
78
+ 'Check file permissions in the current directory'
79
+ ]);
80
+ }
81
+ process.exit(1);
82
+ }
83
+ }
84
+ async function showConfiguration() {
85
+ const display = await ConfigurationManager.getConfigurationDisplay();
86
+ UIComponents.showConfiguration(display.config);
87
+ // Show security status
88
+ if (!display.security.configIgnored) {
89
+ UIComponents.showWarningBox('Configuration file is not in .gitignore - API keys may be exposed!');
90
+ if (display.security.recommendations.length > 0) {
91
+ console.log('\nSecurity recommendations:');
92
+ UIComponents.showList(display.security.recommendations);
93
+ }
94
+ }
95
+ // Show validation errors if any
96
+ if (!display.validation.valid) {
97
+ UIComponents.showErrorBox('Configuration validation failed');
98
+ UIComponents.showList(display.validation.errors);
99
+ }
100
+ }
101
+ async function listConfiguration(format) {
102
+ const display = await ConfigurationManager.getConfigurationDisplay();
103
+ if (format === 'json') {
104
+ // Output as JSON for programmatic use
105
+ const output = {
106
+ configuration: display.config,
107
+ security: display.security,
108
+ validation: display.validation,
109
+ status: {
110
+ configured: display.config.apiKeys.jules !== null || display.config.apiKeys.gemini !== null,
111
+ automationEnabled: display.config.automation.enabled,
112
+ targetCount: display.config.targets.length
113
+ }
114
+ };
115
+ console.log(JSON.stringify(output, null, 2));
116
+ return;
117
+ }
118
+ // Default table format
119
+ UIComponents.showSectionHeader('BaseGuard Configuration Summary');
120
+ // Configuration overview
121
+ console.log('📋 Configuration:');
122
+ console.log(` Version: ${display.config.version}`);
123
+ console.log(` Targets: ${display.config.targets.length} browser(s)`);
124
+ console.log(` API Keys: ${display.config.apiKeys.jules ? '✓' : '✗'} Jules, ${display.config.apiKeys.gemini ? '✓' : '✗'} Gemini`);
125
+ console.log(` Automation: ${display.config.automation.enabled ? '✓ enabled' : '✗ disabled'}`);
126
+ // Browser targets
127
+ console.log('\n🎯 Browser Targets:');
128
+ display.config.targets.forEach(target => {
129
+ console.log(` • ${target.browser} ${target.minVersion}`);
130
+ });
131
+ // Automation settings
132
+ console.log('\n🤖 Automation Settings:');
133
+ console.log(` Enabled: ${display.config.automation.enabled ? '✓' : '✗'}`);
134
+ console.log(` Trigger: ${display.config.automation.trigger}`);
135
+ console.log(` Auto-analyze: ${display.config.automation.autoAnalyze ? '✓' : '✗'}`);
136
+ console.log(` Auto-fix: ${display.config.automation.autoFix ? '✓' : '✗'}`);
137
+ console.log(` Block commits: ${display.config.automation.blockCommit ? '✓' : '✗'}`);
138
+ // Security status
139
+ console.log('\n🔒 Security Status:');
140
+ console.log(` .gitignore exists: ${display.security.gitignoreExists ? '✓' : '✗'}`);
141
+ console.log(` Config file ignored: ${display.security.configIgnored ? '✓' : '✗'}`);
142
+ // Validation status
143
+ console.log('\n✅ Validation Status:');
144
+ console.log(` Configuration valid: ${display.validation.valid ? '✓' : '✗'}`);
145
+ // Show warnings/errors
146
+ if (!display.security.configIgnored) {
147
+ UIComponents.showWarningBox('Configuration file is not in .gitignore - API keys may be exposed!');
148
+ }
149
+ if (!display.validation.valid) {
150
+ UIComponents.showErrorBox('Configuration validation failed');
151
+ UIComponents.showList(display.validation.errors);
152
+ }
153
+ if (display.security.recommendations.length > 0) {
154
+ console.log('\n💡 Recommendations:');
155
+ UIComponents.showList(display.security.recommendations);
156
+ }
157
+ }
158
+ async function setupApiKeys() {
159
+ const apiKeys = await Prompts.setupApiKeys();
160
+ if (apiKeys.julesApiKey || apiKeys.geminiApiKey) {
161
+ await ApiKeyManager.storeApiKeys({
162
+ jules: apiKeys.julesApiKey,
163
+ gemini: apiKeys.geminiApiKey
164
+ });
165
+ UIComponents.showSuccessBox('API keys updated successfully');
166
+ // Show security reminder
167
+ const security = await GitignoreManager.isConfigSecure();
168
+ if (!security.configIgnored) {
169
+ UIComponents.showWarningBox('Remember to add .baseguardrc.json to .gitignore to protect your API keys');
170
+ }
171
+ }
172
+ else {
173
+ UIComponents.showInfoBox('No API keys were configured');
174
+ }
175
+ }
176
+ async function updateTargets(options) {
177
+ if (options?.add) {
178
+ // Add a specific browser target
179
+ const target = ConfigurationManager.parseBrowserTarget(options.add);
180
+ if (!target) {
181
+ UIComponents.showErrorBox(`Invalid browser target format: ${options.add}`);
182
+ UIComponents.showInfoBox('Format: "browser version" (e.g., "chrome 100", "safari baseline")');
183
+ return;
184
+ }
185
+ await ConfigurationManager.addBrowserTarget(target);
186
+ UIComponents.showSuccessBox(`Added browser target: ${target.browser} ${target.minVersion}`);
187
+ return;
188
+ }
189
+ if (options?.remove) {
190
+ // Remove a specific browser target
191
+ await ConfigurationManager.removeBrowserTarget(options.remove);
192
+ UIComponents.showSuccessBox(`Removed browser target: ${options.remove}`);
193
+ return;
194
+ }
195
+ if (options?.preset) {
196
+ // Set preset targets
197
+ const presetName = options.preset;
198
+ const availablePresets = ConfigurationManager.getAvailablePresets();
199
+ if (!availablePresets.includes(presetName)) {
200
+ UIComponents.showErrorBox(`Invalid preset: ${options.preset}`);
201
+ UIComponents.showInfoBox(`Available presets: ${availablePresets.join(', ')}`);
202
+ return;
203
+ }
204
+ await ConfigurationManager.updateWithPreset(presetName);
205
+ UIComponents.showSuccessBox(`Updated to ${presetName} preset`);
206
+ UIComponents.showInfoBox(ConfigurationManager.getPresetDescription(presetName));
207
+ return;
208
+ }
209
+ // Interactive target configuration
210
+ const targets = await Prompts.promptCustomTargets();
211
+ await ConfigurationManager.updateWithCustomTargets(targets);
212
+ UIComponents.showSuccessBox('Browser targets updated successfully');
213
+ }
214
+ async function updateAutomation() {
215
+ const automation = await Prompts.promptAutomationSettings();
216
+ const config = await ConfigurationManager.load();
217
+ config.automation = { ...config.automation, ...automation };
218
+ await ConfigurationManager.save(config);
219
+ UIComponents.showSuccessBox('Automation settings updated successfully');
220
+ }
221
+ async function updateConfiguration() {
222
+ const currentConfig = await ConfigurationManager.load();
223
+ const updates = await Prompts.promptConfigUpdate(currentConfig);
224
+ if (Object.keys(updates).length === 0) {
225
+ UIComponents.showInfoBox('No changes made');
226
+ return;
227
+ }
228
+ let config = currentConfig;
229
+ // Apply updates
230
+ for (const [key, value] of Object.entries(updates)) {
231
+ switch (key) {
232
+ case 'targets':
233
+ await ConfigurationManager.updateWithCustomTargets(value);
234
+ config = await ConfigurationManager.load(); // Reload after update
235
+ break;
236
+ case 'apiKeys':
237
+ const apiKeys = value;
238
+ if (apiKeys.julesApiKey)
239
+ config.apiKeys.jules = apiKeys.julesApiKey;
240
+ if (apiKeys.geminiApiKey)
241
+ config.apiKeys.gemini = apiKeys.geminiApiKey;
242
+ break;
243
+ case 'automation':
244
+ config.automation = { ...config.automation, ...value };
245
+ break;
246
+ }
247
+ }
248
+ await ConfigurationManager.save(config);
249
+ UIComponents.showSuccessBox('Configuration updated successfully');
250
+ }
251
+ async function validateConfiguration() {
252
+ const display = await ConfigurationManager.getConfigurationDisplay();
253
+ if (display.validation.valid) {
254
+ UIComponents.showSuccessBox('Configuration is valid');
255
+ }
256
+ else {
257
+ UIComponents.showErrorBox('Configuration validation failed');
258
+ UIComponents.showList(display.validation.errors);
259
+ process.exit(1);
260
+ }
261
+ }
262
+ async function checkSecurity() {
263
+ const security = await GitignoreManager.isConfigSecure();
264
+ UIComponents.showSectionHeader('Security Status');
265
+ console.log(`✓ .gitignore exists: ${security.gitignoreExists ? 'Yes' : 'No'}`);
266
+ console.log(`✓ Config file ignored: ${security.configIgnored ? 'Yes' : 'No'}`);
267
+ if (security.recommendations.length > 0) {
268
+ console.log('\nRecommendations:');
269
+ UIComponents.showList(security.recommendations);
270
+ }
271
+ else {
272
+ UIComponents.showSuccessBox('Configuration is secure');
273
+ }
274
+ }
275
+ async function backupConfiguration() {
276
+ try {
277
+ const backupFile = await ConfigurationManager.backupConfiguration();
278
+ UIComponents.showSuccessBox(`Configuration backed up to: ${backupFile}`);
279
+ }
280
+ catch (error) {
281
+ UIComponents.showErrorBox(`Backup failed: ${error instanceof Error ? error.message : 'Unknown error'}`);
282
+ process.exit(1);
283
+ }
284
+ }
285
+ async function restoreConfiguration(backupFile) {
286
+ if (!backupFile) {
287
+ UIComponents.showErrorBox('Backup file path is required');
288
+ console.log('Usage: base config restore --file <backup-file>');
289
+ process.exit(1);
290
+ }
291
+ try {
292
+ await ConfigurationManager.restoreConfiguration(backupFile);
293
+ UIComponents.showSuccessBox('Configuration restored successfully');
294
+ }
295
+ catch (error) {
296
+ UIComponents.showErrorBox(`Restore failed: ${error instanceof Error ? error.message : 'Unknown error'}`);
297
+ process.exit(1);
298
+ }
299
+ }
300
+ function showConfigHelp() {
301
+ UIComponents.showSectionHeader('Configuration Commands');
302
+ UIComponents.showList([
303
+ 'base config show - Display current configuration',
304
+ 'base config list - List configuration summary',
305
+ 'base config list --format json - List configuration as JSON',
306
+ 'base config set-keys - Set up API keys for AI services',
307
+ 'base config targets - Configure browser targets',
308
+ 'base config targets --add "chrome 100" - Add browser target',
309
+ 'base config targets --remove chrome - Remove browser target',
310
+ 'base config targets --preset baseline-widely - Set preset targets',
311
+ 'base config automation - Configure git automation',
312
+ 'base config update - Interactive configuration update',
313
+ 'base config validate - Validate configuration file',
314
+ 'base config security - Check configuration security',
315
+ 'base config backup - Create configuration backup',
316
+ 'base config restore --file <backup> - Restore from backup',
317
+ '',
318
+ 'Shorthand commands:',
319
+ 'base add "chrome 100" - Add browser target',
320
+ 'base remove chrome - Remove browser target',
321
+ 'base list - List configuration summary'
322
+ ]);
323
+ }
324
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Fix violations with AI analysis and implementation
3
+ */
4
+ export declare function fix(options: {
5
+ auto?: boolean;
6
+ analyzeOnly?: boolean;
7
+ files?: string;
8
+ }): Promise<void>;
9
+ //# sourceMappingURL=fix.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fix.d.ts","sourceRoot":"","sources":["../../src/commands/fix.ts"],"names":[],"mappings":"AASA;;GAEG;AACH,wBAAsB,GAAG,CAAC,OAAO,EAAE;IACjC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,IAAI,CAAC,CAyNhB"}
@@ -0,0 +1,207 @@
1
+ import chalk from 'chalk';
2
+ import { UIComponents } from '../ui/index.js';
3
+ import { BaseGuard } from '../core/index.js';
4
+ import { ConfigurationManager } from '../core/configuration.js';
5
+ import { ErrorHandler } from '../core/error-handler.js';
6
+ import { JulesImplementer } from '../ai/jules-implementer.js';
7
+ import { GeminiAnalyzer } from '../ai/gemini-analyzer.js';
8
+ import { glob } from 'glob';
9
+ /**
10
+ * Fix violations with AI analysis and implementation
11
+ */
12
+ export async function fix(options) {
13
+ try {
14
+ console.log(chalk.cyan('🔧 BaseGuard AI Fix\n'));
15
+ // Load configuration
16
+ const config = await ConfigurationManager.load();
17
+ // Check API keys
18
+ if (!config.apiKeys.jules) {
19
+ UIComponents.showErrorBox('Jules API key not configured. Run "base init" to set up API keys.');
20
+ process.exit(1);
21
+ }
22
+ if (!config.apiKeys.gemini) {
23
+ UIComponents.showErrorBox('Gemini API key not configured. Run "base init" to set up API keys.');
24
+ process.exit(1);
25
+ }
26
+ // Initialize services
27
+ const baseGuard = new BaseGuard(config);
28
+ const julesImplementer = new JulesImplementer(config.apiKeys.jules);
29
+ const geminiAnalyzer = new GeminiAnalyzer(config.apiKeys.gemini);
30
+ // Check GitHub integration
31
+ const isGitHubSetup = await julesImplementer.isGitHubIntegrationSetup();
32
+ if (!isGitHubSetup) {
33
+ console.log(chalk.yellow('⚠️ Jules GitHub integration not set up'));
34
+ const { default: inquirer } = await import('inquirer');
35
+ const { setupNow } = await inquirer.prompt([
36
+ {
37
+ type: 'confirm',
38
+ name: 'setupNow',
39
+ message: 'Would you like to set up Jules GitHub integration now?',
40
+ default: true
41
+ }
42
+ ]);
43
+ if (setupNow) {
44
+ await julesImplementer.setupGitHubIntegration();
45
+ }
46
+ else {
47
+ console.log(chalk.yellow('GitHub integration required for Jules fixing. Exiting.'));
48
+ process.exit(0);
49
+ }
50
+ }
51
+ // Step 1: Check for violations
52
+ console.log(chalk.cyan('🔍 Scanning for compatibility violations...'));
53
+ // Get files to fix
54
+ const filePattern = options.files || '**/*.{js,jsx,ts,tsx,vue,svelte,css,html}';
55
+ const files = await glob(filePattern, {
56
+ ignore: [
57
+ 'node_modules/**',
58
+ 'dist/**',
59
+ 'build/**',
60
+ '.git/**',
61
+ '**/*.min.js',
62
+ '**/*.min.css'
63
+ ]
64
+ });
65
+ const violations = await baseGuard.checkViolations(files);
66
+ if (violations.length === 0) {
67
+ UIComponents.showSuccessBox('No compatibility violations found!');
68
+ return;
69
+ }
70
+ console.log(chalk.yellow(`\n⚠️ Found ${violations.length} compatibility violations\n`));
71
+ UIComponents.showViolations(violations);
72
+ // Step 2: Analyze violations with Gemini
73
+ console.log(chalk.cyan('\n🧠 Analyzing violations with AI...'));
74
+ const analyses = await geminiAnalyzer.analyzeViolations(violations);
75
+ // If analyze-only mode, show analysis and exit
76
+ if (options.analyzeOnly) {
77
+ console.log(chalk.cyan('\n📋 Analysis Results:\n'));
78
+ analyses.forEach((analysis, index) => {
79
+ console.log(chalk.yellow(`${index + 1}. ${analysis.violation.feature} in ${analysis.violation.file}`));
80
+ console.log(` Impact: ${analysis.userImpact}`);
81
+ console.log(` Strategy: ${analysis.fixStrategy}`);
82
+ console.log(` Confidence: ${Math.round(analysis.confidence * 100)}%\n`);
83
+ });
84
+ return;
85
+ }
86
+ // Step 3: Generate and apply fixes with Jules
87
+ console.log(chalk.cyan('\n🤖 Generating fixes with Jules AI...'));
88
+ const results = await julesImplementer.generateAndApplyFixes(violations, analyses);
89
+ // Show results
90
+ console.log(chalk.cyan('\n📊 Fix Results:\n'));
91
+ if (results.applied.length > 0) {
92
+ console.log(chalk.green(`✅ Applied ${results.applied.length} fixes:`));
93
+ results.applied.forEach(fix => {
94
+ console.log(chalk.green(` • ${fix.filePath} - ${fix.violation.feature}`));
95
+ });
96
+ console.log();
97
+ }
98
+ if (results.skipped.length > 0) {
99
+ console.log(chalk.yellow(`⏭️ Skipped ${results.skipped.length} fixes:`));
100
+ results.skipped.forEach(fix => {
101
+ console.log(chalk.yellow(` • ${fix.filePath} - ${fix.violation.feature}`));
102
+ });
103
+ console.log();
104
+ }
105
+ if (results.failed.length > 0) {
106
+ console.log(chalk.red(`❌ Failed ${results.failed.length} fixes:`));
107
+ results.failed.forEach(({ fix, error }) => {
108
+ console.log(chalk.red(` • ${fix.filePath} - ${fix.violation.feature}: ${error}`));
109
+ });
110
+ console.log();
111
+ }
112
+ // Show rollback option if fixes were applied
113
+ if (results.applied.length > 0) {
114
+ const { default: inquirer } = await import('inquirer');
115
+ const { showRollback } = await inquirer.prompt([
116
+ {
117
+ type: 'confirm',
118
+ name: 'showRollback',
119
+ message: 'Would you like to see rollback options?',
120
+ default: false
121
+ }
122
+ ]);
123
+ if (showRollback) {
124
+ const { rollbackAction } = await inquirer.prompt([
125
+ {
126
+ type: 'list',
127
+ name: 'rollbackAction',
128
+ message: 'Rollback options:',
129
+ choices: [
130
+ { name: 'Keep all fixes', value: 'keep' },
131
+ { name: 'Rollback all fixes', value: 'rollback_all' },
132
+ { name: 'Rollback specific fixes', value: 'rollback_specific' }
133
+ ]
134
+ }
135
+ ]);
136
+ if (rollbackAction === 'rollback_all') {
137
+ await julesImplementer.rollbackAllFixes();
138
+ UIComponents.showSuccessBox('All fixes have been rolled back');
139
+ }
140
+ else if (rollbackAction === 'rollback_specific') {
141
+ const appliedFiles = julesImplementer.getAppliedFixes();
142
+ const { filesToRollback } = await inquirer.prompt([
143
+ {
144
+ type: 'checkbox',
145
+ name: 'filesToRollback',
146
+ message: 'Select fixes to rollback:',
147
+ choices: appliedFiles.map(file => ({ name: file, value: file }))
148
+ }
149
+ ]);
150
+ for (const file of filesToRollback) {
151
+ await julesImplementer.rollbackFix(file);
152
+ }
153
+ if (filesToRollback.length > 0) {
154
+ UIComponents.showSuccessBox(`Rolled back ${filesToRollback.length} fixes`);
155
+ }
156
+ }
157
+ }
158
+ }
159
+ UIComponents.showSuccessBox('Fix process completed!');
160
+ }
161
+ catch (error) {
162
+ const apiError = ErrorHandler.handleAPIError(error);
163
+ ErrorHandler.displayError(apiError);
164
+ // Provide specific help for fix command issues
165
+ console.log('\n💡 Troubleshooting:');
166
+ if (apiError.type === 'authentication') {
167
+ UIComponents.showList([
168
+ 'Check your API keys with "base config show"',
169
+ 'Update API keys with "base config set-keys"',
170
+ 'Verify API keys are valid and not expired',
171
+ 'Ensure you have proper permissions for Jules and Gemini'
172
+ ]);
173
+ }
174
+ else if (apiError.type === 'configuration') {
175
+ UIComponents.showList([
176
+ 'Run "base init" to set up BaseGuard configuration',
177
+ 'Configure API keys with "base config set-keys"',
178
+ 'Check GitHub integration for Jules fixing'
179
+ ]);
180
+ }
181
+ else if (apiError.type === 'network') {
182
+ UIComponents.showList([
183
+ 'Check your internet connection',
184
+ 'Verify firewall allows access to AI services',
185
+ 'Try again when network connection is stable'
186
+ ]);
187
+ }
188
+ else {
189
+ UIComponents.showList([
190
+ 'Try running "base check" for basic violation detection',
191
+ 'Verify your API keys are configured correctly',
192
+ 'Check the documentation for troubleshooting steps'
193
+ ]);
194
+ }
195
+ // Show fallback suggestions
196
+ if (ErrorHandler.shouldUseFallbackMode(apiError)) {
197
+ console.log('\n🔄 Alternative options:');
198
+ UIComponents.showList([
199
+ 'Run "base check" for offline compatibility checking',
200
+ 'Review violations manually using browser compatibility tables',
201
+ 'Try AI features again when services are available'
202
+ ]);
203
+ }
204
+ process.exit(1);
205
+ }
206
+ }
207
+ //# sourceMappingURL=fix.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fix.js","sourceRoot":"","sources":["../../src/commands/fix.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export * from './init.js';
2
+ export * from './check.js';
3
+ export * from './fix.js';
4
+ export * from './config.js';
5
+ export * from './automation.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AACA,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,7 @@
1
+ // CLI command exports
2
+ export * from './init.js';
3
+ export * from './check.js';
4
+ export * from './fix.js';
5
+ export * from './config.js';
6
+ export * from './automation.js';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA,sBAAsB;AACtB,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Initialize BaseGuard in a project
3
+ */
4
+ export declare function init(options: {
5
+ preset?: string;
6
+ skipHooks?: boolean;
7
+ skipApiKeys?: boolean;
8
+ }): Promise<void>;
9
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,wBAAsB,IAAI,CAAC,OAAO,EAAE;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,GAAG,OAAO,CAAC,IAAI,CAAC,CAkIhB"}