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,305 @@
1
+ import chalk from 'chalk';
2
+ import inquirer from 'inquirer';
3
+ import { UIComponents } from '../ui/index.js';
4
+ import { ConfigurationManager } from '../core/configuration.js';
5
+ import { ErrorHandler } from '../core/error-handler.js';
6
+ import { GitHookManager } from '../git/hook-manager.js';
7
+ import { AutomationEngine } from '../git/automation-engine.js';
8
+ /**
9
+ * Manage git automation and hooks
10
+ */
11
+ export async function automation(action, options) {
12
+ try {
13
+ switch (action) {
14
+ case 'enable':
15
+ await enableAutomation(options);
16
+ break;
17
+ case 'disable':
18
+ await disableAutomation();
19
+ break;
20
+ case 'status':
21
+ await showAutomationStatus();
22
+ break;
23
+ case 'configure':
24
+ await configureAutomation();
25
+ break;
26
+ case 'run':
27
+ await runAutomation(options);
28
+ break;
29
+ default:
30
+ await showAutomationHelp();
31
+ }
32
+ }
33
+ catch (error) {
34
+ const apiError = ErrorHandler.handleAPIError(error);
35
+ ErrorHandler.displayError(apiError);
36
+ // Provide specific help for automation command issues
37
+ console.log('\nšŸ’” Automation troubleshooting:');
38
+ if (action === 'enable') {
39
+ UIComponents.showList([
40
+ 'Ensure you\'re in a git repository (run "git init" if needed)',
41
+ 'Check that you have a package.json file',
42
+ 'Verify write permissions for .husky directory',
43
+ 'Make sure Husky is installed (npm install husky)'
44
+ ]);
45
+ }
46
+ else if (action === 'run') {
47
+ UIComponents.showList([
48
+ 'This command is typically called by git hooks automatically',
49
+ 'Check that BaseGuard configuration exists (.baseguardrc.json)',
50
+ 'Verify git hooks are properly installed',
51
+ 'Run "base automation status" to check setup'
52
+ ]);
53
+ }
54
+ else if (action === 'disable') {
55
+ UIComponents.showList([
56
+ 'Check file permissions for .husky directory',
57
+ 'Verify git repository is properly initialized',
58
+ 'Run "base automation status" to check current state'
59
+ ]);
60
+ }
61
+ else {
62
+ UIComponents.showList([
63
+ 'Run "base automation status" to check current setup',
64
+ 'Use "base automation --help" to see available commands',
65
+ 'Ensure you\'re in a git repository with BaseGuard configured'
66
+ ]);
67
+ }
68
+ process.exit(1);
69
+ }
70
+ }
71
+ /**
72
+ * Enable automation with optional configuration
73
+ */
74
+ async function enableAutomation(options) {
75
+ console.log(chalk.cyan('šŸ¤– Enabling BaseGuard automation...'));
76
+ const config = await ConfigurationManager.load();
77
+ const hookManager = new GitHookManager();
78
+ // Configure automation settings
79
+ let trigger = config.automation.trigger;
80
+ let autoFix = config.automation.autoFix;
81
+ let autoAnalyze = config.automation.autoAnalyze;
82
+ // Use provided options or prompt for configuration
83
+ if (options?.trigger) {
84
+ if (options.trigger === 'pre-commit' || options.trigger === 'pre-push') {
85
+ trigger = options.trigger;
86
+ }
87
+ else {
88
+ throw new Error('Invalid trigger. Must be "pre-commit" or "pre-push"');
89
+ }
90
+ }
91
+ else if (!config.automation.enabled) {
92
+ // First time setup - prompt for configuration
93
+ const answers = await inquirer.prompt([
94
+ {
95
+ type: 'list',
96
+ name: 'trigger',
97
+ message: 'When should BaseGuard check for violations?',
98
+ choices: [
99
+ { name: 'Before each commit (pre-commit)', value: 'pre-commit' },
100
+ { name: 'Before each push (pre-push)', value: 'pre-push' }
101
+ ],
102
+ default: trigger
103
+ },
104
+ {
105
+ type: 'confirm',
106
+ name: 'autoAnalyze',
107
+ message: 'Enable automatic AI analysis of violations?',
108
+ default: autoAnalyze,
109
+ when: () => !!config.apiKeys.gemini
110
+ },
111
+ {
112
+ type: 'confirm',
113
+ name: 'autoFix',
114
+ message: 'Enable automatic AI fixing of violations?',
115
+ default: autoFix,
116
+ when: () => !!config.apiKeys.jules && !!config.apiKeys.gemini
117
+ }
118
+ ]);
119
+ trigger = answers.trigger;
120
+ autoAnalyze = answers.autoAnalyze ?? autoAnalyze;
121
+ autoFix = answers.autoFix ?? autoFix;
122
+ }
123
+ if (options?.autoFix !== undefined) {
124
+ autoFix = options.autoFix;
125
+ }
126
+ if (options?.autoAnalyze !== undefined) {
127
+ autoAnalyze = options.autoAnalyze;
128
+ }
129
+ // Update configuration
130
+ config.automation.enabled = true;
131
+ config.automation.trigger = trigger;
132
+ config.automation.autoAnalyze = autoAnalyze;
133
+ config.automation.autoFix = autoFix;
134
+ await ConfigurationManager.save(config);
135
+ // Install git hooks
136
+ await hookManager.installHooks(trigger);
137
+ UIComponents.showSuccessBox(`Automation enabled with ${trigger} trigger`);
138
+ // Show configuration summary
139
+ console.log(chalk.cyan('\nšŸ“‹ Automation Configuration:'));
140
+ console.log(` Trigger: ${chalk.white(trigger)}`);
141
+ console.log(` Auto-analyze: ${autoAnalyze ? chalk.green('enabled') : chalk.red('disabled')}`);
142
+ console.log(` Auto-fix: ${autoFix ? chalk.green('enabled') : chalk.red('disabled')}`);
143
+ console.log(` Block commits: ${config.automation.blockCommit ? chalk.green('enabled') : chalk.red('disabled')}`);
144
+ if (!config.apiKeys.gemini) {
145
+ console.log(chalk.yellow('\nāš ļø Gemini API key not configured. Run "base config" to set up AI features.'));
146
+ }
147
+ if (!config.apiKeys.jules) {
148
+ console.log(chalk.yellow('āš ļø Jules API key not configured. Run "base config" to set up AI fixing.'));
149
+ }
150
+ }
151
+ /**
152
+ * Disable automation
153
+ */
154
+ async function disableAutomation() {
155
+ console.log(chalk.cyan('šŸ¤– Disabling BaseGuard automation...'));
156
+ const config = await ConfigurationManager.load();
157
+ const hookManager = new GitHookManager();
158
+ // Update configuration
159
+ config.automation.enabled = false;
160
+ await ConfigurationManager.save(config);
161
+ // Uninstall git hooks
162
+ await hookManager.uninstallHooks();
163
+ UIComponents.showSuccessBox('Automation disabled');
164
+ }
165
+ /**
166
+ * Show automation status
167
+ */
168
+ async function showAutomationStatus() {
169
+ const config = await ConfigurationManager.load();
170
+ const hookManager = new GitHookManager();
171
+ console.log(chalk.cyan('šŸ¤– BaseGuard Automation Status\n'));
172
+ // Configuration status
173
+ console.log(chalk.white('Configuration:'));
174
+ console.log(` Enabled: ${config.automation.enabled ? chalk.green('āœ“') : chalk.red('āœ—')}`);
175
+ console.log(` Trigger: ${chalk.white(config.automation.trigger)}`);
176
+ console.log(` Auto-analyze: ${config.automation.autoAnalyze ? chalk.green('āœ“') : chalk.red('āœ—')}`);
177
+ console.log(` Auto-fix: ${config.automation.autoFix ? chalk.green('āœ“') : chalk.red('āœ—')}`);
178
+ console.log(` Block commits: ${config.automation.blockCommit ? chalk.green('āœ“') : chalk.red('āœ—')}`);
179
+ // Git hooks status
180
+ const hooksInstalled = await hookManager.areHooksInstalled();
181
+ const installedHooks = await hookManager.getInstalledHooks();
182
+ console.log(chalk.white('\nGit Hooks:'));
183
+ console.log(` Installed: ${hooksInstalled ? chalk.green('āœ“') : chalk.red('āœ—')}`);
184
+ if (installedHooks.length > 0) {
185
+ console.log(` Active hooks: ${chalk.white(installedHooks.join(', '))}`);
186
+ }
187
+ // API keys status
188
+ console.log(chalk.white('\nAPI Keys:'));
189
+ console.log(` Gemini: ${config.apiKeys.gemini ? chalk.green('āœ“ configured') : chalk.red('āœ— not configured')}`);
190
+ console.log(` Jules: ${config.apiKeys.jules ? chalk.green('āœ“ configured') : chalk.red('āœ— not configured')}`);
191
+ // Recommendations
192
+ if (config.automation.enabled && !hooksInstalled) {
193
+ console.log(chalk.yellow('\nāš ļø Automation is enabled but git hooks are not installed. Run "base automation enable" to fix this.'));
194
+ }
195
+ if (config.automation.autoAnalyze && !config.apiKeys.gemini) {
196
+ console.log(chalk.yellow('āš ļø Auto-analyze is enabled but Gemini API key is not configured.'));
197
+ }
198
+ if (config.automation.autoFix && (!config.apiKeys.jules || !config.apiKeys.gemini)) {
199
+ console.log(chalk.yellow('āš ļø Auto-fix is enabled but API keys are not configured.'));
200
+ }
201
+ }
202
+ /**
203
+ * Configure automation settings
204
+ */
205
+ async function configureAutomation() {
206
+ console.log(chalk.cyan('šŸ¤– Configuring BaseGuard automation...\n'));
207
+ const config = await ConfigurationManager.load();
208
+ const hookManager = new GitHookManager();
209
+ const answers = await inquirer.prompt([
210
+ {
211
+ type: 'confirm',
212
+ name: 'enabled',
213
+ message: 'Enable automation?',
214
+ default: config.automation.enabled
215
+ },
216
+ {
217
+ type: 'list',
218
+ name: 'trigger',
219
+ message: 'When should BaseGuard check for violations?',
220
+ choices: [
221
+ { name: 'Before each commit (pre-commit)', value: 'pre-commit' },
222
+ { name: 'Before each push (pre-push)', value: 'pre-push' }
223
+ ],
224
+ default: config.automation.trigger,
225
+ when: (answers) => answers.enabled
226
+ },
227
+ {
228
+ type: 'confirm',
229
+ name: 'autoAnalyze',
230
+ message: 'Enable automatic AI analysis of violations?',
231
+ default: config.automation.autoAnalyze,
232
+ when: (answers) => answers.enabled && !!config.apiKeys.gemini
233
+ },
234
+ {
235
+ type: 'confirm',
236
+ name: 'autoFix',
237
+ message: 'Enable automatic AI fixing of violations?',
238
+ default: config.automation.autoFix,
239
+ when: (answers) => answers.enabled && !!config.apiKeys.jules && !!config.apiKeys.gemini
240
+ },
241
+ {
242
+ type: 'confirm',
243
+ name: 'blockCommit',
244
+ message: 'Block commits when violations are found?',
245
+ default: config.automation.blockCommit,
246
+ when: (answers) => answers.enabled
247
+ }
248
+ ]);
249
+ // Update configuration
250
+ const oldTrigger = config.automation.trigger;
251
+ config.automation.enabled = answers.enabled ?? config.automation.enabled;
252
+ config.automation.trigger = answers.trigger ?? config.automation.trigger;
253
+ config.automation.autoAnalyze = answers.autoAnalyze ?? config.automation.autoAnalyze;
254
+ config.automation.autoFix = answers.autoFix ?? config.automation.autoFix;
255
+ config.automation.blockCommit = answers.blockCommit ?? config.automation.blockCommit;
256
+ await ConfigurationManager.save(config);
257
+ // Update git hooks if needed
258
+ if (config.automation.enabled) {
259
+ if (oldTrigger !== config.automation.trigger) {
260
+ await hookManager.updateHookConfiguration(oldTrigger, config.automation.trigger);
261
+ }
262
+ else {
263
+ await hookManager.installHooks(config.automation.trigger);
264
+ }
265
+ }
266
+ else {
267
+ await hookManager.uninstallHooks();
268
+ }
269
+ UIComponents.showSuccessBox('Automation configuration updated');
270
+ // Show updated status
271
+ await showAutomationStatus();
272
+ }
273
+ /**
274
+ * Run automation manually (used by git hooks)
275
+ */
276
+ async function runAutomation(options = {}) {
277
+ const trigger = options.trigger || 'pre-commit';
278
+ const automationOptions = {
279
+ trigger,
280
+ strict: options.strict
281
+ };
282
+ const engine = new AutomationEngine();
283
+ await engine.run(automationOptions);
284
+ }
285
+ /**
286
+ * Show automation help
287
+ */
288
+ async function showAutomationHelp() {
289
+ console.log(chalk.cyan('šŸ¤– BaseGuard Automation Commands\n'));
290
+ console.log(chalk.white('Usage:'));
291
+ console.log(' base automation <command> [options]\n');
292
+ console.log(chalk.white('Commands:'));
293
+ console.log(' enable Enable automation with git hooks');
294
+ console.log(' disable Disable automation and remove git hooks');
295
+ console.log(' status Show current automation status');
296
+ console.log(' configure Interactive configuration of automation settings');
297
+ console.log(' run Run automation manually (used by git hooks)\n');
298
+ console.log(chalk.white('Examples:'));
299
+ console.log(' base automation enable');
300
+ console.log(' base automation enable --trigger pre-push');
301
+ console.log(' base automation disable');
302
+ console.log(' base automation status');
303
+ console.log(' base automation configure');
304
+ }
305
+ //# sourceMappingURL=automation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"automation.js","sourceRoot":"","sources":["../../src/commands/automation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Check for compatibility violations
3
+ */
4
+ export declare function check(options: {
5
+ strict?: boolean;
6
+ files?: string;
7
+ format?: 'table' | 'json' | 'junit';
8
+ }): Promise<void>;
9
+ //# sourceMappingURL=check.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"AAQA;;GAEG;AACH,wBAAsB,KAAK,CAAC,OAAO,EAAE;IACnC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;CACrC,GAAG,OAAO,CAAC,IAAI,CAAC,CAmHhB"}
@@ -0,0 +1,113 @@
1
+ import { UIComponents } from '../ui/index.js';
2
+ import { BaseGuard } from '../core/baseguard.js';
3
+ import { ConfigurationManager } from '../core/configuration.js';
4
+ import { ErrorHandler } from '../core/error-handler.js';
5
+ import { glob } from 'glob';
6
+ import chalk from 'chalk';
7
+ /**
8
+ * Check for compatibility violations
9
+ */
10
+ export async function check(options) {
11
+ try {
12
+ UIComponents.showHeader();
13
+ // Load configuration
14
+ const config = await ConfigurationManager.load();
15
+ // Initialize BaseGuard
16
+ const baseGuard = new BaseGuard(config);
17
+ const spinner = UIComponents.createSpinner('Scanning files for compatibility issues...');
18
+ spinner.start();
19
+ // Get files to check
20
+ const filePattern = options.files || '**/*.{js,jsx,ts,tsx,vue,svelte,css,html}';
21
+ const files = await glob(filePattern, {
22
+ ignore: [
23
+ 'node_modules/**',
24
+ 'dist/**',
25
+ 'build/**',
26
+ '.git/**',
27
+ '**/*.min.js',
28
+ '**/*.min.css'
29
+ ]
30
+ });
31
+ if (files.length === 0) {
32
+ spinner.fail('No files found to check');
33
+ UIComponents.showWarningBox('No files matched the pattern. Try adjusting the --files option.');
34
+ return;
35
+ }
36
+ spinner.text = `Analyzing ${files.length} files...`;
37
+ // Scan for violations
38
+ const violations = await baseGuard.checkViolations(files);
39
+ spinner.stop();
40
+ // Display results based on format
41
+ switch (options.format) {
42
+ case 'json':
43
+ console.log(JSON.stringify(violations, null, 2));
44
+ break;
45
+ case 'junit':
46
+ UIComponents.showJUnitReport(violations);
47
+ break;
48
+ default:
49
+ UIComponents.showViolations(violations);
50
+ break;
51
+ }
52
+ // Show summary
53
+ if (violations.length === 0) {
54
+ UIComponents.showSuccessBox('šŸŽ‰ No compatibility violations found!');
55
+ }
56
+ else {
57
+ const summary = {
58
+ total: violations.length,
59
+ byBrowser: violations.reduce((acc, v) => {
60
+ acc[v.browser] = (acc[v.browser] || 0) + 1;
61
+ return acc;
62
+ }, {}),
63
+ byFile: violations.reduce((acc, v) => {
64
+ acc[v.file] = (acc[v.file] || 0) + 1;
65
+ return acc;
66
+ }, {})
67
+ };
68
+ console.log(chalk.yellow('\nšŸ“Š Summary:'));
69
+ console.log(` Total violations: ${summary.total}`);
70
+ console.log(` Files affected: ${Object.keys(summary.byFile).length}`);
71
+ console.log(` Browsers affected: ${Object.keys(summary.byBrowser).join(', ')}`);
72
+ UIComponents.showInfoBox('Run "base fix" to automatically fix these issues with AI assistance.');
73
+ }
74
+ // Exit with error code if violations found and strict mode
75
+ if (options.strict && violations.length > 0) {
76
+ process.exit(1);
77
+ }
78
+ }
79
+ catch (error) {
80
+ const apiError = ErrorHandler.handleAPIError(error);
81
+ ErrorHandler.displayError(apiError);
82
+ // Provide specific help for check command issues
83
+ console.log('\nšŸ’” Troubleshooting:');
84
+ if (apiError.type === 'configuration') {
85
+ UIComponents.showList([
86
+ 'Run "base init" to set up BaseGuard configuration',
87
+ 'Check that .baseguardrc.json exists and is valid',
88
+ 'Run "base config validate" to check configuration'
89
+ ]);
90
+ }
91
+ else if (options.files) {
92
+ UIComponents.showList([
93
+ `No files found matching pattern: ${options.files}`,
94
+ 'Try a different file pattern (e.g., "src/**/*.ts")',
95
+ 'Check that files exist in the specified locations'
96
+ ]);
97
+ }
98
+ else {
99
+ UIComponents.showList([
100
+ 'Check that you\'re in a project directory',
101
+ 'Verify file permissions for reading project files',
102
+ 'Try running with a specific file pattern: --files "src/**/*.js"'
103
+ ]);
104
+ }
105
+ // Show fallback suggestions
106
+ if (ErrorHandler.shouldUseFallbackMode(apiError)) {
107
+ console.log('\nšŸ”„ Fallback options:');
108
+ UIComponents.showList(ErrorHandler.getFallbackSuggestions(apiError.type));
109
+ }
110
+ process.exit(1);
111
+ }
112
+ }
113
+ //# sourceMappingURL=check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Manage BaseGuard configuration
3
+ */
4
+ export declare function config(action: string, options?: {
5
+ add?: string;
6
+ remove?: string;
7
+ preset?: string;
8
+ file?: string;
9
+ format?: string;
10
+ }): Promise<void>;
11
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,wBAAsB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;IACrD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2EhB"}