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,611 @@
1
+ import inquirer from 'inquirer';
2
+ import open from 'open';
3
+ import { Colors, UIComponents } from './components.js';
4
+ import { ApiKeyManager } from '../core/api-key-manager.js';
5
+ /**
6
+ * Interactive prompts for user input
7
+ */
8
+ export class Prompts {
9
+ /**
10
+ * Prompt for initial BaseGuard setup
11
+ */
12
+ static async setupWizard() {
13
+ UIComponents.showHeader();
14
+ UIComponents.showSectionHeader('Welcome to BaseGuard Setup');
15
+ console.log(Colors.muted('Let\'s configure BaseGuard for your project.\n'));
16
+ const answers = await inquirer.prompt([
17
+ {
18
+ type: 'list',
19
+ name: 'targetPreset',
20
+ message: 'Which browser compatibility target would you like to use?',
21
+ choices: [
22
+ {
23
+ name: 'Baseline Widely (30+ months of support) - Recommended',
24
+ value: 'baseline-widely'
25
+ },
26
+ {
27
+ name: 'Baseline Newly (Recently available features)',
28
+ value: 'baseline-newly'
29
+ },
30
+ {
31
+ name: 'Last 2 years (Modern browsers)',
32
+ value: 'last-2-years'
33
+ },
34
+ {
35
+ name: 'Custom configuration',
36
+ value: 'custom'
37
+ }
38
+ ],
39
+ default: 'baseline-widely'
40
+ },
41
+ {
42
+ type: 'confirm',
43
+ name: 'installHooks',
44
+ message: 'Would you like to install git hooks for automatic checking?',
45
+ default: true
46
+ },
47
+ {
48
+ type: 'list',
49
+ name: 'hookTrigger',
50
+ message: 'When should BaseGuard check your code?',
51
+ choices: [
52
+ {
53
+ name: 'Before each commit (pre-commit) - Recommended',
54
+ value: 'pre-commit'
55
+ },
56
+ {
57
+ name: 'Before each push (pre-push)',
58
+ value: 'pre-push'
59
+ }
60
+ ],
61
+ default: 'pre-commit',
62
+ when: (answers) => answers.installHooks
63
+ },
64
+ {
65
+ type: 'confirm',
66
+ name: 'setupApiKeys',
67
+ message: 'Would you like to set up AI analysis and fixing now?',
68
+ default: true
69
+ }
70
+ ]);
71
+ let targets = [];
72
+ if (answers.targetPreset === 'custom') {
73
+ targets = await this.promptCustomTargets();
74
+ }
75
+ else {
76
+ targets = this.getPresetTargets(answers.targetPreset);
77
+ }
78
+ return {
79
+ targets,
80
+ installHooks: answers.installHooks,
81
+ hookTrigger: answers.hookTrigger || 'pre-commit',
82
+ setupApiKeys: answers.setupApiKeys
83
+ };
84
+ }
85
+ /**
86
+ * Prompt for custom browser targets
87
+ */
88
+ static async promptCustomTargets() {
89
+ const targets = [];
90
+ let addMore = true;
91
+ while (addMore) {
92
+ const target = await inquirer.prompt([
93
+ {
94
+ type: 'list',
95
+ name: 'browser',
96
+ message: 'Select a browser:',
97
+ choices: [
98
+ 'chrome',
99
+ 'firefox',
100
+ 'safari',
101
+ 'edge',
102
+ 'opera',
103
+ 'samsung_android',
104
+ 'webview_android'
105
+ ]
106
+ },
107
+ {
108
+ type: 'input',
109
+ name: 'version',
110
+ message: 'Minimum version (or "baseline" for baseline support):',
111
+ default: 'baseline',
112
+ validate: (input) => {
113
+ if (input === 'baseline' || input === 'baseline-newly')
114
+ return true;
115
+ if (/^\d+(\.\d+)*$/.test(input))
116
+ return true;
117
+ return 'Please enter a valid version number or "baseline"';
118
+ }
119
+ }
120
+ ]);
121
+ targets.push({
122
+ browser: target.browser,
123
+ minVersion: target.version
124
+ });
125
+ const continuePrompt = await inquirer.prompt([
126
+ {
127
+ type: 'confirm',
128
+ name: 'addAnother',
129
+ message: 'Add another browser target?',
130
+ default: false
131
+ }
132
+ ]);
133
+ addMore = continuePrompt.addAnother;
134
+ }
135
+ return targets;
136
+ }
137
+ /**
138
+ * Get preset browser targets
139
+ */
140
+ static getPresetTargets(preset) {
141
+ switch (preset) {
142
+ case 'baseline-widely':
143
+ return [
144
+ { browser: 'chrome', minVersion: 'baseline' },
145
+ { browser: 'firefox', minVersion: 'baseline' },
146
+ { browser: 'safari', minVersion: 'baseline' },
147
+ { browser: 'edge', minVersion: 'baseline' }
148
+ ];
149
+ case 'baseline-newly':
150
+ return [
151
+ { browser: 'chrome', minVersion: 'baseline-newly' },
152
+ { browser: 'firefox', minVersion: 'baseline-newly' },
153
+ { browser: 'safari', minVersion: 'baseline-newly' },
154
+ { browser: 'edge', minVersion: 'baseline-newly' }
155
+ ];
156
+ case 'last-2-years':
157
+ return [
158
+ { browser: 'chrome', minVersion: '109' },
159
+ { browser: 'firefox', minVersion: '109' },
160
+ { browser: 'safari', minVersion: '16' },
161
+ { browser: 'edge', minVersion: '109' }
162
+ ];
163
+ default:
164
+ return [];
165
+ }
166
+ }
167
+ /**
168
+ * Guided API key setup with browser integration
169
+ */
170
+ static async setupApiKeys() {
171
+ UIComponents.showSectionHeader('API Key Setup');
172
+ console.log(Colors.muted('BaseGuard uses AI services for analysis and fixing:'));
173
+ console.log(Colors.muted('• Jules API for autonomous code fixing'));
174
+ console.log(Colors.muted('• Gemini API for compatibility analysis\n'));
175
+ const setupChoice = await inquirer.prompt([
176
+ {
177
+ type: 'list',
178
+ name: 'choice',
179
+ message: 'How would you like to proceed?',
180
+ choices: [
181
+ {
182
+ name: 'Set up both APIs now (Recommended)',
183
+ value: 'both'
184
+ },
185
+ {
186
+ name: 'Set up Jules API only (for fixing)',
187
+ value: 'jules'
188
+ },
189
+ {
190
+ name: 'Set up Gemini API only (for analysis)',
191
+ value: 'gemini'
192
+ },
193
+ {
194
+ name: 'Skip for now (baseline checking only)',
195
+ value: 'skip'
196
+ }
197
+ ],
198
+ default: 'both'
199
+ }
200
+ ]);
201
+ if (setupChoice.choice === 'skip') {
202
+ UIComponents.showWarningBox('Skipping API setup. You can configure APIs later with: base config api-keys');
203
+ return {};
204
+ }
205
+ const result = {};
206
+ if (setupChoice.choice === 'both' || setupChoice.choice === 'jules') {
207
+ result.julesApiKey = await this.setupJulesApiKey();
208
+ }
209
+ if (setupChoice.choice === 'both' || setupChoice.choice === 'gemini') {
210
+ result.geminiApiKey = await this.setupGeminiApiKey();
211
+ }
212
+ return result;
213
+ }
214
+ /**
215
+ * Set up Jules API key with browser integration
216
+ */
217
+ static async setupJulesApiKey() {
218
+ console.log(Colors.info('\n🔧 Setting up Jules API for autonomous code fixing'));
219
+ const openBrowser = await inquirer.prompt([
220
+ {
221
+ type: 'confirm',
222
+ name: 'open',
223
+ message: 'Open jules.google.com to get your API key?',
224
+ default: true
225
+ }
226
+ ]);
227
+ if (openBrowser.open) {
228
+ const spinner = UIComponents.createSpinner('Opening Jules website...');
229
+ spinner.start();
230
+ try {
231
+ await open('https://jules.google.com');
232
+ spinner.succeed('Opened jules.google.com');
233
+ }
234
+ catch (error) {
235
+ spinner.fail('Failed to open browser. Please visit https://jules.google.com manually');
236
+ }
237
+ }
238
+ console.log(Colors.muted('\nSteps to get your Jules API key:'));
239
+ UIComponents.showList([
240
+ 'Sign in to jules.google.com',
241
+ 'Navigate to API settings or developer console',
242
+ 'Generate a new API key',
243
+ 'Copy the key and paste it below'
244
+ ]);
245
+ let attempts = 0;
246
+ const maxAttempts = 3;
247
+ while (attempts < maxAttempts) {
248
+ const keyPrompt = await inquirer.prompt([
249
+ {
250
+ type: 'password',
251
+ name: 'apiKey',
252
+ message: 'Enter your Jules API key:',
253
+ mask: '*',
254
+ validate: (input) => {
255
+ const validation = ApiKeyManager.validateJulesApiKey(input);
256
+ return validation.valid || validation.error;
257
+ }
258
+ }
259
+ ]);
260
+ // Test the API key
261
+ const spinner = UIComponents.createSpinner('Testing Jules API key...');
262
+ spinner.start();
263
+ const testResult = await ApiKeyManager.testJulesApiKey(keyPrompt.apiKey);
264
+ if (testResult.success) {
265
+ spinner.succeed('Jules API key validated successfully');
266
+ // Guide through GitHub app installation
267
+ await this.setupJulesGitHubIntegration();
268
+ return keyPrompt.apiKey;
269
+ }
270
+ else {
271
+ spinner.fail(`Failed to validate Jules API key: ${testResult.error}`);
272
+ attempts++;
273
+ if (attempts < maxAttempts) {
274
+ const retry = await inquirer.prompt([
275
+ {
276
+ type: 'confirm',
277
+ name: 'retry',
278
+ message: `Would you like to try again? (${maxAttempts - attempts} attempts remaining)`,
279
+ default: true
280
+ }
281
+ ]);
282
+ if (!retry.retry) {
283
+ break;
284
+ }
285
+ }
286
+ }
287
+ }
288
+ UIComponents.showWarningBox('Jules API key setup incomplete. You can configure it later with: base config api-keys');
289
+ return undefined;
290
+ }
291
+ /**
292
+ * Guide user through Jules GitHub app installation
293
+ */
294
+ static async setupJulesGitHubIntegration() {
295
+ console.log(Colors.info('\n🔗 Setting up Jules GitHub integration'));
296
+ const setupGitHub = await inquirer.prompt([
297
+ {
298
+ type: 'confirm',
299
+ name: 'setup',
300
+ message: 'Jules needs access to your GitHub repository for code fixing. Set up now?',
301
+ default: true
302
+ }
303
+ ]);
304
+ if (!setupGitHub.setup) {
305
+ UIComponents.showWarningBox('GitHub integration skipped. Jules will have limited functionality without repository access.');
306
+ return;
307
+ }
308
+ const openGitHub = await inquirer.prompt([
309
+ {
310
+ type: 'confirm',
311
+ name: 'open',
312
+ message: 'Open GitHub to install the Jules app?',
313
+ default: true
314
+ }
315
+ ]);
316
+ if (openGitHub.open) {
317
+ const spinner = UIComponents.createSpinner('Opening GitHub Apps...');
318
+ spinner.start();
319
+ try {
320
+ await open('https://github.com/apps/jules-ai');
321
+ spinner.succeed('Opened Jules GitHub App page');
322
+ }
323
+ catch (error) {
324
+ spinner.fail('Failed to open browser. Please visit https://github.com/apps/jules-ai manually');
325
+ }
326
+ }
327
+ console.log(Colors.muted('\nSteps to install Jules GitHub app:'));
328
+ UIComponents.showList([
329
+ 'Click "Install" on the Jules GitHub app page',
330
+ 'Select the repositories you want Jules to access',
331
+ 'Complete the installation process',
332
+ 'Return here when done'
333
+ ]);
334
+ await inquirer.prompt([
335
+ {
336
+ type: 'confirm',
337
+ name: 'completed',
338
+ message: 'Have you completed the GitHub app installation?',
339
+ default: false
340
+ }
341
+ ]);
342
+ UIComponents.showSuccessBox('Jules GitHub integration setup complete!');
343
+ }
344
+ /**
345
+ * Set up Gemini API key with browser integration
346
+ */
347
+ static async setupGeminiApiKey() {
348
+ console.log(Colors.info('\n🧠 Setting up Gemini API for compatibility analysis'));
349
+ const openBrowser = await inquirer.prompt([
350
+ {
351
+ type: 'confirm',
352
+ name: 'open',
353
+ message: 'Open aistudio.google.com to get your API key?',
354
+ default: true
355
+ }
356
+ ]);
357
+ if (openBrowser.open) {
358
+ const spinner = UIComponents.createSpinner('Opening AI Studio...');
359
+ spinner.start();
360
+ try {
361
+ await open('https://aistudio.google.com/app/apikey');
362
+ spinner.succeed('Opened AI Studio');
363
+ }
364
+ catch (error) {
365
+ spinner.fail('Failed to open browser. Please visit https://aistudio.google.com/app/apikey manually');
366
+ }
367
+ }
368
+ console.log(Colors.muted('\nSteps to get your Gemini API key:'));
369
+ UIComponents.showList([
370
+ 'Sign in to aistudio.google.com',
371
+ 'Click "Get API key" or "Create API key"',
372
+ 'Copy the generated key',
373
+ 'Paste it below'
374
+ ]);
375
+ let attempts = 0;
376
+ const maxAttempts = 3;
377
+ while (attempts < maxAttempts) {
378
+ const keyPrompt = await inquirer.prompt([
379
+ {
380
+ type: 'password',
381
+ name: 'apiKey',
382
+ message: 'Enter your Gemini API key:',
383
+ mask: '*',
384
+ validate: (input) => {
385
+ const validation = ApiKeyManager.validateGeminiApiKey(input);
386
+ return validation.valid || validation.error;
387
+ }
388
+ }
389
+ ]);
390
+ // Test the API key
391
+ const spinner = UIComponents.createSpinner('Testing Gemini API key...');
392
+ spinner.start();
393
+ const testResult = await ApiKeyManager.testGeminiApiKey(keyPrompt.apiKey);
394
+ if (testResult.success) {
395
+ spinner.succeed('Gemini API key validated successfully');
396
+ return keyPrompt.apiKey;
397
+ }
398
+ else {
399
+ spinner.fail(`Failed to validate Gemini API key: ${testResult.error}`);
400
+ attempts++;
401
+ if (attempts < maxAttempts) {
402
+ const retry = await inquirer.prompt([
403
+ {
404
+ type: 'confirm',
405
+ name: 'retry',
406
+ message: `Would you like to try again? (${maxAttempts - attempts} attempts remaining)`,
407
+ default: true
408
+ }
409
+ ]);
410
+ if (!retry.retry) {
411
+ break;
412
+ }
413
+ }
414
+ }
415
+ }
416
+ UIComponents.showWarningBox('Gemini API key setup incomplete. You can configure it later with: base config api-keys');
417
+ return undefined;
418
+ }
419
+ /**
420
+ * Prompt for fix approval with preview
421
+ */
422
+ static async confirmFix(fixPreview, fileName) {
423
+ console.log(Colors.highlight(`\n📝 Proposed fix for ${fileName}:`));
424
+ console.log(Colors.muted('─'.repeat(50)));
425
+ console.log(fixPreview);
426
+ console.log(Colors.muted('─'.repeat(50)));
427
+ const answer = await inquirer.prompt([
428
+ {
429
+ type: 'list',
430
+ name: 'action',
431
+ message: 'What would you like to do?',
432
+ choices: [
433
+ {
434
+ name: '✅ Apply this fix',
435
+ value: 'apply'
436
+ },
437
+ {
438
+ name: '❌ Skip this fix',
439
+ value: 'skip'
440
+ },
441
+ {
442
+ name: '👀 Show more details',
443
+ value: 'details'
444
+ }
445
+ ],
446
+ default: 'apply'
447
+ }
448
+ ]);
449
+ if (answer.action === 'details') {
450
+ // Show more details and ask again
451
+ console.log(Colors.info('\nFix details:'));
452
+ UIComponents.showList([
453
+ 'This fix adds progressive enhancement',
454
+ 'Original functionality is preserved',
455
+ 'Fallbacks are added for older browsers',
456
+ 'Code follows best practices'
457
+ ]);
458
+ return this.confirmFix(fixPreview, fileName);
459
+ }
460
+ return answer.action === 'apply';
461
+ }
462
+ /**
463
+ * Show progress for batch operations
464
+ */
465
+ static async showBatchProgress(items, operation, operationName) {
466
+ console.log(Colors.primary(`\n${operationName}...`));
467
+ for (let i = 0; i < items.length; i++) {
468
+ UIComponents.showProgress(i, items.length, `Processing ${i + 1}/${items.length}`);
469
+ await operation(items[i], i);
470
+ }
471
+ UIComponents.showProgress(items.length, items.length, 'Complete');
472
+ }
473
+ /**
474
+ * Handle graceful error display with next steps
475
+ */
476
+ static async handleError(error, context) {
477
+ UIComponents.showErrorBox(`${context}: ${error.message}`);
478
+ console.log(Colors.muted('\nPossible solutions:'));
479
+ if (error.message.includes('API key')) {
480
+ UIComponents.showList([
481
+ 'Check your API key configuration: base config show',
482
+ 'Reconfigure API keys: base config api-keys',
483
+ 'Verify API key permissions and quotas'
484
+ ]);
485
+ }
486
+ else if (error.message.includes('network') || error.message.includes('fetch')) {
487
+ UIComponents.showList([
488
+ 'Check your internet connection',
489
+ 'Verify firewall settings',
490
+ 'Try again in a few moments'
491
+ ]);
492
+ }
493
+ else if (error.message.includes('file') || error.message.includes('permission')) {
494
+ UIComponents.showList([
495
+ 'Check file permissions',
496
+ 'Ensure the file exists and is readable',
497
+ 'Try running with appropriate permissions'
498
+ ]);
499
+ }
500
+ else {
501
+ UIComponents.showList([
502
+ 'Check the BaseGuard documentation',
503
+ 'Report this issue on GitHub',
504
+ 'Try running with --verbose for more details'
505
+ ]);
506
+ }
507
+ const continuePrompt = await inquirer.prompt([
508
+ {
509
+ type: 'confirm',
510
+ name: 'continue',
511
+ message: 'Would you like to continue anyway?',
512
+ default: false
513
+ }
514
+ ]);
515
+ if (!continuePrompt.continue) {
516
+ process.exit(1);
517
+ }
518
+ }
519
+ /**
520
+ * Prompt for configuration updates
521
+ */
522
+ static async promptConfigUpdate(currentConfig) {
523
+ UIComponents.showSectionHeader('Update Configuration');
524
+ const choices = [
525
+ {
526
+ name: 'Browser targets',
527
+ value: 'targets'
528
+ },
529
+ {
530
+ name: 'API keys',
531
+ value: 'apiKeys'
532
+ },
533
+ {
534
+ name: 'Git automation settings',
535
+ value: 'automation'
536
+ },
537
+ {
538
+ name: 'View current configuration',
539
+ value: 'view'
540
+ }
541
+ ];
542
+ const answer = await inquirer.prompt([
543
+ {
544
+ type: 'list',
545
+ name: 'section',
546
+ message: 'What would you like to update?',
547
+ choices
548
+ }
549
+ ]);
550
+ switch (answer.section) {
551
+ case 'targets':
552
+ return { targets: await this.promptCustomTargets() };
553
+ case 'apiKeys':
554
+ return { apiKeys: await this.setupApiKeys() };
555
+ case 'automation':
556
+ return { automation: await this.promptAutomationSettings() };
557
+ case 'view':
558
+ console.log(Colors.info('\nCurrent configuration:'));
559
+ console.log(JSON.stringify(currentConfig, null, 2));
560
+ return {};
561
+ default:
562
+ return {};
563
+ }
564
+ }
565
+ /**
566
+ * Prompt for automation settings
567
+ */
568
+ static async promptAutomationSettings() {
569
+ return await inquirer.prompt([
570
+ {
571
+ type: 'confirm',
572
+ name: 'enabled',
573
+ message: 'Enable git automation?',
574
+ default: true
575
+ },
576
+ {
577
+ type: 'list',
578
+ name: 'trigger',
579
+ message: 'When should BaseGuard run?',
580
+ choices: [
581
+ { name: 'Before each commit (pre-commit)', value: 'pre-commit' },
582
+ { name: 'Before each push (pre-push)', value: 'pre-push' }
583
+ ],
584
+ default: 'pre-commit',
585
+ when: (answers) => answers.enabled
586
+ },
587
+ {
588
+ type: 'confirm',
589
+ name: 'autoAnalyze',
590
+ message: 'Automatically analyze violations with AI?',
591
+ default: true,
592
+ when: (answers) => answers.enabled
593
+ },
594
+ {
595
+ type: 'confirm',
596
+ name: 'autoFix',
597
+ message: 'Automatically fix violations when possible?',
598
+ default: false,
599
+ when: (answers) => answers.enabled
600
+ },
601
+ {
602
+ type: 'confirm',
603
+ name: 'blockCommit',
604
+ message: 'Block commits when violations are found?',
605
+ default: true,
606
+ when: (answers) => answers.enabled
607
+ }
608
+ ]);
609
+ }
610
+ }
611
+ //# sourceMappingURL=prompts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/ui/prompts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Display beautiful Baseguard terminal header with ASCII art and tagline
3
+ */
4
+ export declare function showTerminalHeader(): void;
5
+ /**
6
+ * Display compact header for command output
7
+ */
8
+ export declare function showCompactHeader(): void;
9
+ /**
10
+ * Simple fallback header without external dependencies
11
+ */
12
+ export declare function showSimpleHeader(): void;
13
+ //# sourceMappingURL=terminal-header.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal-header.d.ts","sourceRoot":"","sources":["../../src/ui/terminal-header.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAqBzC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAKxC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAiBvC"}