baseguard 1.0.1 → 1.0.3
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.
- package/.baseguardrc.example.json +64 -0
- package/.eslintrc.json +1 -1
- package/CHANGELOG.md +196 -0
- package/DEPLOYMENT.md +625 -0
- package/DEPLOYMENT_CHECKLIST.md +239 -0
- package/DEPLOYMENT_SUMMARY_v1.0.2.md +202 -0
- package/QUICK_START.md +134 -0
- package/README.md +447 -52
- package/RELEASE_NOTES_v1.0.2.md +434 -0
- package/bin/base.js +81 -61
- package/dist/ai/agentkit-orchestrator.d.ts +116 -0
- package/dist/ai/agentkit-orchestrator.d.ts.map +1 -0
- package/dist/ai/agentkit-orchestrator.js +417 -0
- package/dist/ai/agentkit-orchestrator.js.map +1 -0
- package/dist/ai/gemini-code-fixer.d.ts +85 -0
- package/dist/ai/gemini-code-fixer.d.ts.map +1 -0
- package/dist/ai/gemini-code-fixer.js +452 -0
- package/dist/ai/gemini-code-fixer.js.map +1 -0
- package/dist/ai/jules-implementer.d.ts +5 -4
- package/dist/ai/jules-implementer.d.ts.map +1 -1
- package/dist/ai/jules-implementer.js +6 -5
- package/dist/ai/jules-implementer.js.map +1 -1
- package/dist/ai/unified-code-fixer.d.ts +69 -0
- package/dist/ai/unified-code-fixer.d.ts.map +1 -0
- package/dist/ai/unified-code-fixer.js +289 -0
- package/dist/ai/unified-code-fixer.js.map +1 -0
- package/dist/commands/check.d.ts +3 -1
- package/dist/commands/check.d.ts.map +1 -1
- package/dist/commands/check.js +166 -34
- package/dist/commands/check.js.map +1 -1
- package/dist/commands/config.d.ts +4 -0
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +183 -0
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/fix.d.ts.map +1 -1
- package/dist/commands/fix.js +89 -91
- package/dist/commands/fix.js.map +1 -1
- package/dist/commands/index.d.ts +1 -0
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +1 -0
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +16 -2
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/status.d.ts +14 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +254 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/core/baseguard.d.ts +47 -5
- package/dist/core/baseguard.d.ts.map +1 -1
- package/dist/core/baseguard.js +506 -52
- package/dist/core/baseguard.js.map +1 -1
- package/dist/core/cache-manager.d.ts.map +1 -1
- package/dist/core/cache-manager.js +3 -1
- package/dist/core/cache-manager.js.map +1 -1
- package/dist/core/configuration-recovery.d.ts +116 -0
- package/dist/core/configuration-recovery.d.ts.map +1 -0
- package/dist/core/configuration-recovery.js +552 -0
- package/dist/core/configuration-recovery.js.map +1 -0
- package/dist/core/configuration.d.ts +4 -0
- package/dist/core/configuration.d.ts.map +1 -1
- package/dist/core/configuration.js +35 -0
- package/dist/core/configuration.js.map +1 -1
- package/dist/core/debug-logger.d.ts +181 -0
- package/dist/core/debug-logger.d.ts.map +1 -0
- package/dist/core/debug-logger.js +479 -0
- package/dist/core/debug-logger.js.map +1 -0
- package/dist/core/file-processor.d.ts.map +1 -1
- package/dist/core/file-processor.js +8 -2
- package/dist/core/file-processor.js.map +1 -1
- package/dist/core/graceful-degradation-manager.d.ts +123 -0
- package/dist/core/graceful-degradation-manager.d.ts.map +1 -0
- package/dist/core/graceful-degradation-manager.js +512 -0
- package/dist/core/graceful-degradation-manager.js.map +1 -0
- package/dist/core/index.d.ts +4 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +4 -0
- package/dist/core/index.js.map +1 -1
- package/dist/core/logger.d.ts +1 -0
- package/dist/core/logger.d.ts.map +1 -0
- package/dist/core/logger.js +2 -0
- package/dist/core/logger.js.map +1 -0
- package/dist/core/memory-manager.d.ts +84 -0
- package/dist/core/memory-manager.d.ts.map +1 -1
- package/dist/core/memory-manager.js +236 -1
- package/dist/core/memory-manager.js.map +1 -1
- package/dist/core/startup-optimizer.d.ts +14 -0
- package/dist/core/startup-optimizer.d.ts.map +1 -1
- package/dist/core/startup-optimizer.js +74 -3
- package/dist/core/startup-optimizer.js.map +1 -1
- package/dist/core/system-error-handler.d.ts +65 -0
- package/dist/core/system-error-handler.d.ts.map +1 -0
- package/dist/core/system-error-handler.js +653 -0
- package/dist/core/system-error-handler.js.map +1 -0
- package/dist/git/github-manager.d.ts +5 -16
- package/dist/git/github-manager.d.ts.map +1 -1
- package/dist/git/github-manager.js +6 -61
- package/dist/git/github-manager.js.map +1 -1
- package/dist/parsers/react-parser-optimized.d.ts +16 -0
- package/dist/parsers/react-parser-optimized.d.ts.map +1 -0
- package/dist/parsers/react-parser-optimized.js +147 -0
- package/dist/parsers/react-parser-optimized.js.map +1 -0
- package/dist/parsers/react-parser.d.ts.map +1 -1
- package/dist/parsers/react-parser.js +17 -15
- package/dist/parsers/react-parser.js.map +1 -1
- package/dist/parsers/svelte-parser.d.ts.map +1 -1
- package/dist/parsers/svelte-parser.js +7 -3
- package/dist/parsers/svelte-parser.js.map +1 -1
- package/dist/parsers/vanilla-parser.d.ts.map +1 -1
- package/dist/parsers/vanilla-parser.js +7 -3
- package/dist/parsers/vanilla-parser.js.map +1 -1
- package/dist/parsers/vue-parser.d.ts +18 -0
- package/dist/parsers/vue-parser.d.ts.map +1 -1
- package/dist/parsers/vue-parser.js +387 -1
- package/dist/parsers/vue-parser.js.map +1 -1
- package/dist/types/index.d.ts +4 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/ui/help.js +1 -1
- package/dist/ui/help.js.map +1 -1
- package/dist/ui/prompts.d.ts +7 -4
- package/dist/ui/prompts.d.ts.map +1 -1
- package/dist/ui/prompts.js +48 -55
- package/dist/ui/prompts.js.map +1 -1
- package/package.json +31 -6
- package/src/ai/__tests__/gemini-analyzer.test.ts +2 -2
- package/src/ai/agentkit-orchestrator.ts +534 -0
- package/src/ai/gemini-code-fixer.ts +540 -0
- package/src/ai/jules-implementer.ts +6 -5
- package/src/ai/unified-code-fixer.ts +347 -0
- package/src/commands/config.ts +126 -0
- package/src/commands/fix.ts +98 -94
- package/src/commands/init.ts +16 -2
- package/src/core/cache-manager.ts +4 -2
- package/src/core/configuration.ts +37 -0
- package/src/core/debug-logger.ts +2 -2
- package/src/core/file-processor.ts +10 -3
- package/src/core/index.ts +5 -1
- package/src/core/memory-manager.ts +4 -3
- package/src/core/startup-optimizer.ts +85 -3
- package/src/core/system-error-handler.ts +17 -11
- package/src/git/github-manager.ts +11 -79
- package/src/parsers/react-parser.ts +2 -2
- package/src/parsers/svelte-parser.ts +13 -9
- package/src/parsers/vanilla-parser.ts +18 -14
- package/src/parsers/vue-parser.ts +20 -14
- package/src/types/index.ts +4 -0
- package/src/ui/help.ts +1 -1
- package/src/ui/prompts.ts +54 -61
- package/test-build.js +41 -0
- package/tests/e2e/git-integration.e2e.test.ts +1 -1
- package/tsconfig.json +0 -1
- package/vitest.config.ts +4 -2
|
@@ -0,0 +1,434 @@
|
|
|
1
|
+
# BaseGuard v1.0.2 - Release Notes
|
|
2
|
+
|
|
3
|
+
## 🎉 Production-Ready Release
|
|
4
|
+
|
|
5
|
+
BaseGuard v1.0.2 now offers more advanced features, including comprehensive dual AI coding agent support, advanced error recovery, and performance optimizations.
|
|
6
|
+
|
|
7
|
+
## 🚀 What's New
|
|
8
|
+
|
|
9
|
+
### Dual AI Coding Agent System
|
|
10
|
+
|
|
11
|
+
**Choose Your Agent:**
|
|
12
|
+
- **Gemini 2.5 Pro** - Works with any files (local, uncommitted, GitHub)
|
|
13
|
+
- **Jules** - Autonomous GitHub repository fixing
|
|
14
|
+
|
|
15
|
+
**Key Features:**
|
|
16
|
+
- Intelligent agent selection with automatic fallback
|
|
17
|
+
- User-configurable primary/fallback agents
|
|
18
|
+
- Context-aware recommendations
|
|
19
|
+
- Seamless switching between agents
|
|
20
|
+
|
|
21
|
+
### Comprehensive Error Recovery
|
|
22
|
+
|
|
23
|
+
**SystemErrorHandler:**
|
|
24
|
+
- 12+ automatic recovery strategies
|
|
25
|
+
- Intelligent error classification
|
|
26
|
+
- Actionable suggestions for users
|
|
27
|
+
- Comprehensive logging and diagnostics
|
|
28
|
+
|
|
29
|
+
**GracefulDegradationManager:**
|
|
30
|
+
- 4 operational modes (Full, AI Limited, Offline, Minimal)
|
|
31
|
+
- Automatic mode switching based on service availability
|
|
32
|
+
- Offline baseline checking without network
|
|
33
|
+
- Graceful handling of API failures
|
|
34
|
+
|
|
35
|
+
### Advanced Performance Optimizations
|
|
36
|
+
|
|
37
|
+
**Startup Performance:**
|
|
38
|
+
- 60% faster initial load through lazy loading
|
|
39
|
+
- Background dependency preloading
|
|
40
|
+
- Efficient memory management
|
|
41
|
+
|
|
42
|
+
**File Processing:**
|
|
43
|
+
- Concurrent processing with worker threads
|
|
44
|
+
- Streaming for large files
|
|
45
|
+
- Intelligent caching with LRU strategy
|
|
46
|
+
- Incremental scanning (only changed files)
|
|
47
|
+
|
|
48
|
+
## 📋 Complete Feature Set
|
|
49
|
+
|
|
50
|
+
### Core Capabilities
|
|
51
|
+
|
|
52
|
+
✅ **Universal Framework Support**
|
|
53
|
+
- React/JSX with Babel parsing
|
|
54
|
+
- Vue with SFC compiler
|
|
55
|
+
- Svelte with component parsing
|
|
56
|
+
- Vanilla JS/CSS/HTML
|
|
57
|
+
|
|
58
|
+
✅ **Official Baseline Data**
|
|
59
|
+
- Web-features package integration
|
|
60
|
+
- Accurate compatibility checking
|
|
61
|
+
- Support for Baseline Widely/Newly
|
|
62
|
+
|
|
63
|
+
✅ **Intelligent Code Fixing**
|
|
64
|
+
- Progressive enhancement strategies
|
|
65
|
+
- Polyfill recommendations
|
|
66
|
+
- Feature detection patterns
|
|
67
|
+
- Graceful degradation approaches
|
|
68
|
+
|
|
69
|
+
✅ **Git Integration**
|
|
70
|
+
- Pre-commit/pre-push hooks
|
|
71
|
+
- Automatic violation detection
|
|
72
|
+
- Commit blocking
|
|
73
|
+
- Optional auto-fixing
|
|
74
|
+
|
|
75
|
+
### CLI Commands
|
|
76
|
+
|
|
77
|
+
**Core Commands:**
|
|
78
|
+
```bash
|
|
79
|
+
base init # Initialize project
|
|
80
|
+
base check # Check compatibility
|
|
81
|
+
base fix # Fix with AI
|
|
82
|
+
base status # System health
|
|
83
|
+
base diagnostics # Troubleshooting
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
**Configuration:**
|
|
87
|
+
```bash
|
|
88
|
+
base config show # View configuration
|
|
89
|
+
base config set-keys # Configure API keys
|
|
90
|
+
base config coding-agent # Manage agents
|
|
91
|
+
base config targets # Browser targets
|
|
92
|
+
base config recover # Fix configuration
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
**Automation:**
|
|
96
|
+
```bash
|
|
97
|
+
base automation enable # Enable git hooks
|
|
98
|
+
base automation disable # Disable automation
|
|
99
|
+
base automation status # Check automation
|
|
100
|
+
base automation configure # Interactive setup
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## 🔧 Setup Guide
|
|
104
|
+
|
|
105
|
+
### 1. Install BaseGuard
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
npm install -g baseguard
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### 2. Initialize in Your Project
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
cd your-project
|
|
115
|
+
base init
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### 3. Configure AI Services
|
|
119
|
+
|
|
120
|
+
**Option A: Gemini 2.5 Pro (Recommended)**
|
|
121
|
+
|
|
122
|
+
1. Get API key from [Google AI Studio](https://aistudio.google.com)
|
|
123
|
+
2. Run `base config set-keys`
|
|
124
|
+
3. Enter your Gemini API key
|
|
125
|
+
4. Set as primary: `base config coding-agent --agent gemini`
|
|
126
|
+
|
|
127
|
+
**Option B: Jules (GitHub Repos)**
|
|
128
|
+
|
|
129
|
+
1. Get API key from [Jules Dashboard](https://jules.google.com)
|
|
130
|
+
2. Connect your GitHub account
|
|
131
|
+
3. Run `base config set-keys`
|
|
132
|
+
4. Enter your Jules API key
|
|
133
|
+
5. Set as primary: `base config coding-agent --agent jules`
|
|
134
|
+
|
|
135
|
+
**Option C: Both (Recommended)**
|
|
136
|
+
|
|
137
|
+
Configure both agents for maximum flexibility. BaseGuard will automatically choose the best one based on context.
|
|
138
|
+
|
|
139
|
+
### 4. Start Using
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
# Check for issues
|
|
143
|
+
base check
|
|
144
|
+
|
|
145
|
+
# Fix with AI
|
|
146
|
+
base fix
|
|
147
|
+
|
|
148
|
+
# Enable automation
|
|
149
|
+
base automation enable
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
## 🎯 Browser Compatibility Targets
|
|
153
|
+
|
|
154
|
+
### Preset Configurations
|
|
155
|
+
|
|
156
|
+
**Baseline Widely (Recommended):**
|
|
157
|
+
- Features supported for 30+ months across all major browsers
|
|
158
|
+
- Maximum compatibility
|
|
159
|
+
|
|
160
|
+
**Baseline Newly:**
|
|
161
|
+
- Recently available Baseline features
|
|
162
|
+
- Cutting-edge support
|
|
163
|
+
|
|
164
|
+
**Last 2 Years:**
|
|
165
|
+
- Browser versions from the last 2 years
|
|
166
|
+
- Modern feature support
|
|
167
|
+
|
|
168
|
+
### Custom Targets
|
|
169
|
+
|
|
170
|
+
```bash
|
|
171
|
+
base add "chrome 100" # Chrome 100+
|
|
172
|
+
base add "firefox 90" # Firefox 90+
|
|
173
|
+
base add "safari 15" # Safari 15+
|
|
174
|
+
base add "chrome baseline" # Baseline support
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
## 🔍 What BaseGuard Checks
|
|
178
|
+
|
|
179
|
+
### Web Platform Features
|
|
180
|
+
|
|
181
|
+
**CSS:**
|
|
182
|
+
- Properties (Grid, Flexbox, Custom Properties)
|
|
183
|
+
- Selectors (`:has()`, `:is()`, `:where()`)
|
|
184
|
+
- At-rules (`@supports`, `@container`)
|
|
185
|
+
|
|
186
|
+
**JavaScript:**
|
|
187
|
+
- Modern APIs (Fetch, Promises, async/await)
|
|
188
|
+
- ES6+ features (arrow functions, destructuring)
|
|
189
|
+
- Web APIs (Canvas, WebGL, WebRTC, WebAssembly)
|
|
190
|
+
|
|
191
|
+
**HTML:**
|
|
192
|
+
- Modern elements (`<dialog>`, `<details>`)
|
|
193
|
+
- Attributes (`loading="lazy"`, `decoding="async"`)
|
|
194
|
+
|
|
195
|
+
### Framework Support
|
|
196
|
+
|
|
197
|
+
**React/JSX:**
|
|
198
|
+
- Ignores React-specific syntax
|
|
199
|
+
- Focuses on web platform usage
|
|
200
|
+
- Analyzes JSX and TSX files
|
|
201
|
+
|
|
202
|
+
**Vue:**
|
|
203
|
+
- Analyzes `<script>` and `<style>` blocks
|
|
204
|
+
- Ignores Vue directives
|
|
205
|
+
- Extracts web platform features
|
|
206
|
+
|
|
207
|
+
**Svelte:**
|
|
208
|
+
- Parses component files
|
|
209
|
+
- Ignores Svelte-specific syntax
|
|
210
|
+
- Focuses on web APIs
|
|
211
|
+
|
|
212
|
+
## 🚨 Troubleshooting
|
|
213
|
+
|
|
214
|
+
### Common Issues
|
|
215
|
+
|
|
216
|
+
**"No files found to check"**
|
|
217
|
+
```bash
|
|
218
|
+
base check --files "**/*.{js,ts,jsx,tsx}"
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
**"Configuration not found"**
|
|
222
|
+
```bash
|
|
223
|
+
base init
|
|
224
|
+
# or
|
|
225
|
+
base config recover
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
**"API key invalid"**
|
|
229
|
+
```bash
|
|
230
|
+
base config set-keys
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
**"Git hooks not working"**
|
|
234
|
+
```bash
|
|
235
|
+
base automation disable
|
|
236
|
+
base automation enable
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
### Getting Help
|
|
240
|
+
|
|
241
|
+
```bash
|
|
242
|
+
base status --verbose # System health
|
|
243
|
+
base diagnostics # Comprehensive diagnostics
|
|
244
|
+
base check --debug # Debug mode
|
|
245
|
+
base help [command] # Command help
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
## 📊 Performance Benchmarks
|
|
249
|
+
|
|
250
|
+
### Startup Time
|
|
251
|
+
- **Before:** ~3.5 seconds
|
|
252
|
+
- **After:** ~1.4 seconds
|
|
253
|
+
- **Improvement:** 60% faster
|
|
254
|
+
|
|
255
|
+
### Large Codebase (1000+ files)
|
|
256
|
+
- **Concurrent processing:** 4-8 workers
|
|
257
|
+
- **Memory usage:** Optimized with streaming
|
|
258
|
+
- **Cache hit rate:** ~85% on subsequent runs
|
|
259
|
+
|
|
260
|
+
### Network Operations
|
|
261
|
+
- **Offline mode:** Full baseline checking
|
|
262
|
+
- **API retry:** Exponential backoff
|
|
263
|
+
- **Cache validity:** 5 minutes
|
|
264
|
+
|
|
265
|
+
## 🔒 Security
|
|
266
|
+
|
|
267
|
+
### API Key Management
|
|
268
|
+
- Secure storage in `.baseguardrc.json`
|
|
269
|
+
- Automatic `.gitignore` management
|
|
270
|
+
- Format validation
|
|
271
|
+
- Connection testing
|
|
272
|
+
|
|
273
|
+
### Configuration Security
|
|
274
|
+
- Automatic backup before changes
|
|
275
|
+
- Corruption detection and recovery
|
|
276
|
+
- Validation on load
|
|
277
|
+
- Secure defaults
|
|
278
|
+
|
|
279
|
+
## 🧪 Testing
|
|
280
|
+
|
|
281
|
+
### Test Coverage
|
|
282
|
+
- ✅ Unit tests for all core modules
|
|
283
|
+
- ✅ End-to-end tests for CLI commands
|
|
284
|
+
- ✅ Cross-platform compatibility tests
|
|
285
|
+
- ✅ Error recovery scenario tests
|
|
286
|
+
- ✅ Performance benchmark tests
|
|
287
|
+
|
|
288
|
+
### Quality Assurance
|
|
289
|
+
- TypeScript strict mode
|
|
290
|
+
- Comprehensive error handling
|
|
291
|
+
- Extensive inline documentation
|
|
292
|
+
- Code review and validation
|
|
293
|
+
|
|
294
|
+
## 📦 Dependencies
|
|
295
|
+
|
|
296
|
+
### Core Dependencies
|
|
297
|
+
- `web-features` - Official Baseline data
|
|
298
|
+
- `@babel/parser` - JavaScript/JSX parsing
|
|
299
|
+
- `@vue/compiler-sfc` - Vue component parsing
|
|
300
|
+
- `svelte/compiler` - Svelte component parsing
|
|
301
|
+
- `postcss` - CSS parsing
|
|
302
|
+
|
|
303
|
+
### CLI Dependencies
|
|
304
|
+
- `commander` - CLI framework
|
|
305
|
+
- `chalk` - Terminal colors
|
|
306
|
+
- `ora` - Spinners
|
|
307
|
+
- `inquirer` - Interactive prompts
|
|
308
|
+
- `cli-table3` - Table formatting
|
|
309
|
+
|
|
310
|
+
### Git Integration
|
|
311
|
+
- `husky` - Git hooks
|
|
312
|
+
- `simple-git` - Git operations
|
|
313
|
+
|
|
314
|
+
## 🔄 Migration from v1.0.1
|
|
315
|
+
|
|
316
|
+
### Configuration Changes
|
|
317
|
+
|
|
318
|
+
The configuration format has been updated to include coding agent settings:
|
|
319
|
+
|
|
320
|
+
```json
|
|
321
|
+
{
|
|
322
|
+
"version": "1.0.2",
|
|
323
|
+
"codingAgent": {
|
|
324
|
+
"primary": "gemini",
|
|
325
|
+
"fallback": "gemini"
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
**Migration is automatic** - BaseGuard will update your configuration on first run.
|
|
331
|
+
|
|
332
|
+
### Command Changes
|
|
333
|
+
|
|
334
|
+
**New Commands:**
|
|
335
|
+
- `base diagnostics` - System diagnostics
|
|
336
|
+
- `base config coding-agent` - Agent management
|
|
337
|
+
- `base config recover` - Configuration recovery
|
|
338
|
+
|
|
339
|
+
**Enhanced Commands:**
|
|
340
|
+
- `base status` - Now shows agent status
|
|
341
|
+
- `base fix` - Improved agent selection
|
|
342
|
+
- `base config show` - More detailed output
|
|
343
|
+
|
|
344
|
+
## 📚 Documentation
|
|
345
|
+
|
|
346
|
+
### Complete Documentation
|
|
347
|
+
- ✅ Comprehensive README with setup guide
|
|
348
|
+
- ✅ Detailed command reference
|
|
349
|
+
- ✅ Troubleshooting guide
|
|
350
|
+
- ✅ API documentation
|
|
351
|
+
- ✅ Performance optimization guide
|
|
352
|
+
|
|
353
|
+
### Getting Started Resources
|
|
354
|
+
- [README.md](README.md) - Complete guide
|
|
355
|
+
- [CHANGELOG.md](CHANGELOG.md) - Version history
|
|
356
|
+
- [DEPLOYMENT.md](DEPLOYMENT.md) - Deployment guide
|
|
357
|
+
|
|
358
|
+
## 🎯 Next Steps
|
|
359
|
+
|
|
360
|
+
### After Installation
|
|
361
|
+
|
|
362
|
+
1. **Initialize your project:**
|
|
363
|
+
```bash
|
|
364
|
+
base init
|
|
365
|
+
```
|
|
366
|
+
|
|
367
|
+
2. **Configure API keys:**
|
|
368
|
+
```bash
|
|
369
|
+
base config set-keys
|
|
370
|
+
```
|
|
371
|
+
|
|
372
|
+
3. **Check your code:**
|
|
373
|
+
```bash
|
|
374
|
+
base check
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
4. **Fix issues:**
|
|
378
|
+
```bash
|
|
379
|
+
base fix
|
|
380
|
+
```
|
|
381
|
+
|
|
382
|
+
5. **Enable automation:**
|
|
383
|
+
```bash
|
|
384
|
+
base automation enable
|
|
385
|
+
```
|
|
386
|
+
|
|
387
|
+
### Best Practices
|
|
388
|
+
|
|
389
|
+
- Configure both Gemini and Jules for maximum flexibility
|
|
390
|
+
- Use `baseline-widely` preset for maximum compatibility
|
|
391
|
+
- Enable git hooks for continuous checking
|
|
392
|
+
- Run `base check` before commits
|
|
393
|
+
- Review AI-generated fixes before applying
|
|
394
|
+
|
|
395
|
+
## 🤝 Contributing
|
|
396
|
+
|
|
397
|
+
We welcome contributions! Please see our [GitHub repository](https://github.com/ebuka1017/baseguard) for:
|
|
398
|
+
- Issue reporting
|
|
399
|
+
- Feature requests
|
|
400
|
+
- Pull requests
|
|
401
|
+
- Documentation improvements
|
|
402
|
+
|
|
403
|
+
## 📄 License
|
|
404
|
+
|
|
405
|
+
MIT License - see [LICENSE](LICENSE) file for details.
|
|
406
|
+
|
|
407
|
+
---
|
|
408
|
+
|
|
409
|
+
## 🙏 Acknowledgments
|
|
410
|
+
|
|
411
|
+
- **Google AI Studio** - Gemini 2.5 Pro API
|
|
412
|
+
- **Jules Team** - Autonomous coding agent
|
|
413
|
+
- **Web Features Team** - Official Baseline data
|
|
414
|
+
- **Open Source Community** - Dependencies and tools
|
|
415
|
+
|
|
416
|
+
---
|
|
417
|
+
|
|
418
|
+
**Made with ❤️ by the BaseGuard Team**
|
|
419
|
+
|
|
420
|
+
*Never ship incompatible code again!* 🛡️
|
|
421
|
+
|
|
422
|
+
---
|
|
423
|
+
|
|
424
|
+
## Support
|
|
425
|
+
|
|
426
|
+
- **Documentation:** [GitHub Repository](https://github.com/ebuka1017/baseguard)
|
|
427
|
+
- **Issues:** [Report bugs](https://github.com/ebuka1017/baseguard/issues)
|
|
428
|
+
- **Discussions:** [Community forum](https://github.com/ebuka1017/baseguard/discussions)
|
|
429
|
+
|
|
430
|
+
---
|
|
431
|
+
|
|
432
|
+
**Version:** 1.0.2
|
|
433
|
+
**Release Date:** December 19, 2024
|
|
434
|
+
**Status:** Production Ready ✅
|
package/bin/base.js
CHANGED
|
@@ -6,8 +6,16 @@ import { init, check, fix, config, automation, status, diagnostics } from '../di
|
|
|
6
6
|
import { showTerminalHeader, showVersionInfo, showGlobalHelp } from '../dist/ui/index.js';
|
|
7
7
|
import { StartupOptimizer } from '../dist/core/startup-optimizer.js';
|
|
8
8
|
|
|
9
|
-
// Initialize startup optimizations
|
|
10
|
-
const startupPromise =
|
|
9
|
+
// Initialize startup optimizations with timeout
|
|
10
|
+
const startupPromise = Promise.race([
|
|
11
|
+
StartupOptimizer.initialize().then(() => {
|
|
12
|
+
// Run additional startup optimizations
|
|
13
|
+
return StartupOptimizer.optimizeStartup();
|
|
14
|
+
}),
|
|
15
|
+
new Promise(resolve => setTimeout(resolve, 1000)) // Max 1 second for startup
|
|
16
|
+
]).catch(() => {
|
|
17
|
+
// Ignore startup errors, continue with CLI
|
|
18
|
+
});
|
|
11
19
|
|
|
12
20
|
const program = new Command();
|
|
13
21
|
|
|
@@ -15,7 +23,7 @@ program
|
|
|
15
23
|
.name('base')
|
|
16
24
|
.description(chalk.cyan('🛡️ BaseGuard - Never ship incompatible code again\n') +
|
|
17
25
|
chalk.dim('Intelligent browser compatibility enforcement with AI-powered analysis and autonomous fixing'))
|
|
18
|
-
.version('1.0.
|
|
26
|
+
.version('1.0.3')
|
|
19
27
|
.configureOutput({
|
|
20
28
|
outputError: (str, write) => write(chalk.red(str))
|
|
21
29
|
})
|
|
@@ -127,9 +135,9 @@ program
|
|
|
127
135
|
.option('--files <pattern>', 'File pattern to fix using glob syntax', '**/*.{js,jsx,ts,tsx,vue,svelte,css,html}')
|
|
128
136
|
.addHelpText('after', `
|
|
129
137
|
${chalk.cyan('Prerequisites:')}
|
|
130
|
-
• Gemini API key (for analysis) - Get from ${chalk.blue('https://aistudio.google.com')}
|
|
131
|
-
• Jules API key (for
|
|
132
|
-
•
|
|
138
|
+
• Gemini API key (for analysis and fixing) - Get from ${chalk.blue('https://aistudio.google.com')}
|
|
139
|
+
• Jules API key (optional, for GitHub repos) - Get from ${chalk.blue('https://jules.google.com')}
|
|
140
|
+
• Choose your coding agent: "base config coding-agent"
|
|
133
141
|
|
|
134
142
|
${chalk.cyan('Examples:')}
|
|
135
143
|
${chalk.dim('$')} base fix ${chalk.gray('# Interactive fix with confirmation prompts')}
|
|
@@ -140,18 +148,23 @@ ${chalk.cyan('Examples:')}
|
|
|
140
148
|
${chalk.cyan('How it works:')}
|
|
141
149
|
1. ${chalk.white('Scan')} - Detects compatibility violations using Baseline data
|
|
142
150
|
2. ${chalk.white('Analyze')} - Gemini AI researches impact and fix strategies
|
|
143
|
-
3. ${chalk.white('Fix')} -
|
|
151
|
+
3. ${chalk.white('Fix')} - AI generates progressive enhancement code (Jules or Gemini)
|
|
144
152
|
4. ${chalk.white('Review')} - Shows preview of changes before applying
|
|
145
153
|
5. ${chalk.white('Apply')} - Updates files with compatibility fixes
|
|
146
154
|
|
|
155
|
+
${chalk.cyan('Coding Agents:')}
|
|
156
|
+
• ${chalk.white('Gemini 2.5 Pro')} - Works with any files, immediate processing
|
|
157
|
+
• ${chalk.white('Jules')} - GitHub repos only, autonomous cloud processing
|
|
158
|
+
|
|
147
159
|
${chalk.cyan('Fix Strategies:')}
|
|
148
160
|
• Progressive enhancement with @supports for CSS
|
|
149
161
|
• Feature detection for JavaScript APIs
|
|
150
162
|
• Polyfills and fallbacks for older browsers
|
|
151
163
|
• Graceful degradation patterns
|
|
152
164
|
|
|
153
|
-
${chalk.cyan('Setup
|
|
154
|
-
Run ${chalk.white('base config set-keys')} to configure
|
|
165
|
+
${chalk.cyan('Setup:')}
|
|
166
|
+
Run ${chalk.white('base config set-keys')} to configure API keys
|
|
167
|
+
Run ${chalk.white('base config coding-agent')} to choose your preferred agent
|
|
155
168
|
`)
|
|
156
169
|
.action(async (options) => {
|
|
157
170
|
await startupPromise;
|
|
@@ -303,18 +316,45 @@ ${chalk.cyan('Recovery Process:')}
|
|
|
303
316
|
5. Validates final result
|
|
304
317
|
|
|
305
318
|
${chalk.cyan('Examples:')}
|
|
306
|
-
${chalk.dim('
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
${chalk.dim('
|
|
310
|
-
</content>
|
|
311
|
-
</file>)} base config recover --backup ${chalk.gray('# Create backup first')}
|
|
312
|
-
${chalk.dim('
|
|
313
|
-
</content>
|
|
314
|
-
</file>)} base config recover --interactive ${chalk.gray('# Interactive wizard')}
|
|
319
|
+
${chalk.dim('$')} base config recover ${chalk.gray('# Automatic recovery')}
|
|
320
|
+
${chalk.dim('$')} base config recover --backup ${chalk.gray('# Create backup first')}
|
|
321
|
+
${chalk.dim('$')} base config recover --interactive ${chalk.gray('# Interactive wizard')}
|
|
315
322
|
`)
|
|
316
323
|
.action((options) => config('recover', options));
|
|
317
324
|
|
|
325
|
+
configCmd
|
|
326
|
+
.command('coding-agent')
|
|
327
|
+
.description('Manage coding agent selection (Jules vs Gemini)')
|
|
328
|
+
.option('--agent <agent>', 'Set primary agent (jules or gemini)')
|
|
329
|
+
.option('--show', 'Show current agent configuration and status')
|
|
330
|
+
.addHelpText('after', `
|
|
331
|
+
${chalk.cyan('Coding Agents:')}
|
|
332
|
+
${chalk.white('Jules')} - Google's autonomous coding agent (GitHub repos only)
|
|
333
|
+
${chalk.white('Gemini')} - Gemini 2.5 Pro direct API (works with any files)
|
|
334
|
+
|
|
335
|
+
${chalk.cyan('Agent Comparison:')}
|
|
336
|
+
Jules:
|
|
337
|
+
✅ Autonomous operation in cloud VMs
|
|
338
|
+
✅ Full repository context understanding
|
|
339
|
+
✅ Asynchronous processing
|
|
340
|
+
❌ Requires GitHub repository
|
|
341
|
+
❌ Cannot work with local/uncommitted files
|
|
342
|
+
|
|
343
|
+
Gemini:
|
|
344
|
+
✅ Works with any files (GitHub or not)
|
|
345
|
+
✅ Immediate processing
|
|
346
|
+
✅ Works with uncommitted/local files
|
|
347
|
+
✅ Grounded with real-time web search
|
|
348
|
+
⚠️ Requires manual code application
|
|
349
|
+
|
|
350
|
+
${chalk.cyan('Examples:')}
|
|
351
|
+
${chalk.dim('$')} base config coding-agent --show ${chalk.gray('# Show current configuration')}
|
|
352
|
+
${chalk.dim('$')} base config coding-agent --agent gemini ${chalk.gray('# Set Gemini as primary')}
|
|
353
|
+
${chalk.dim('$')} base config coding-agent --agent jules ${chalk.gray('# Set Jules as primary')}
|
|
354
|
+
${chalk.dim('$')} base config coding-agent ${chalk.gray('# Interactive selection')}
|
|
355
|
+
`)
|
|
356
|
+
.action((options) => config('coding-agent', options));
|
|
357
|
+
|
|
318
358
|
// Automation and git hooks
|
|
319
359
|
const autoCmd = program
|
|
320
360
|
.command('automation')
|
|
@@ -476,21 +516,11 @@ ${chalk.cyan('Status Information:')}
|
|
|
476
516
|
• Recovery recommendations
|
|
477
517
|
|
|
478
518
|
${chalk.cyan('Examples:')}
|
|
479
|
-
${chalk.dim('
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
${chalk.dim('
|
|
483
|
-
|
|
484
|
-
</file>)} base status --verbose ${chalk.gray('# Show detailed information')}
|
|
485
|
-
${chalk.dim('
|
|
486
|
-
</content>
|
|
487
|
-
</file>)} base status --services ${chalk.gray('# Check service availability')}
|
|
488
|
-
${chalk.dim('
|
|
489
|
-
</content>
|
|
490
|
-
</file>)} base status --config ${chalk.gray('# Show configuration status')}
|
|
491
|
-
${chalk.dim('
|
|
492
|
-
</content>
|
|
493
|
-
</file>)} base status --errors ${chalk.gray('# Show error information')}
|
|
519
|
+
${chalk.dim('$')} base status ${chalk.gray('# Show basic system status')}
|
|
520
|
+
${chalk.dim('$')} base status --verbose ${chalk.gray('# Show detailed information')}
|
|
521
|
+
${chalk.dim('$')} base status --services ${chalk.gray('# Check service availability')}
|
|
522
|
+
${chalk.dim('$')} base status --config ${chalk.gray('# Show configuration status')}
|
|
523
|
+
${chalk.dim('$')} base status --errors ${chalk.gray('# Show error information')}
|
|
494
524
|
|
|
495
525
|
${chalk.cyan('Health Levels:')}
|
|
496
526
|
${chalk.green('✅ Healthy')} All systems operational
|
|
@@ -568,33 +598,13 @@ ${chalk.cyan('Examples:')}
|
|
|
568
598
|
}
|
|
569
599
|
});
|
|
570
600
|
|
|
571
|
-
//
|
|
572
|
-
program.
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
}
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
}
|
|
579
|
-
if (err.code === 'commander.unknownCommand') {
|
|
580
|
-
console.error(chalk.red('❌ Unknown command:'), chalk.white(err.message.split("'")[1]));
|
|
581
|
-
console.log(chalk.yellow('\n💡 Suggestions:'));
|
|
582
|
-
console.log(` • Run ${chalk.white('base help')} to see all available commands`);
|
|
583
|
-
console.log(` • Run ${chalk.white('base init')} if you haven't set up BaseGuard yet`);
|
|
584
|
-
console.log(` • Check for typos in the command name`);
|
|
585
|
-
process.exit(1);
|
|
586
|
-
}
|
|
587
|
-
if (err.code === 'commander.missingArgument') {
|
|
588
|
-
console.error(chalk.red('❌ Missing argument:'), err.message);
|
|
589
|
-
console.log(chalk.yellow('\n💡 Help:'));
|
|
590
|
-
console.log(` Run ${chalk.white(`base help ${process.argv[2] || ''}`)} for usage information`);
|
|
591
|
-
process.exit(1);
|
|
592
|
-
}
|
|
593
|
-
console.error(chalk.red('❌ Error:'), err.message);
|
|
594
|
-
console.log(chalk.yellow('\n💡 Need help?'));
|
|
595
|
-
console.log(` • Run ${chalk.white('base help')} for available commands`);
|
|
596
|
-
console.log(` • Check ${chalk.blue('https://github.com/baseguard/baseguard#readme')} for documentation`);
|
|
597
|
-
console.log(` • Report issues at ${chalk.blue('https://github.com/baseguard/baseguard/issues')}`);
|
|
601
|
+
// Handle unknown commands
|
|
602
|
+
program.on('command:*', function (operands) {
|
|
603
|
+
console.error(chalk.red('❌ Unknown command:'), chalk.white(operands[0]));
|
|
604
|
+
console.log(chalk.yellow('\n💡 Suggestions:'));
|
|
605
|
+
console.log(` • Run ${chalk.white('base help')} to see all available commands`);
|
|
606
|
+
console.log(` • Run ${chalk.white('base init')} if you haven't set up BaseGuard yet`);
|
|
607
|
+
console.log(` • Check for typos in the command name`);
|
|
598
608
|
process.exit(1);
|
|
599
609
|
});
|
|
600
610
|
|
|
@@ -605,4 +615,14 @@ if (process.argv.length <= 2) {
|
|
|
605
615
|
process.exit(0);
|
|
606
616
|
}
|
|
607
617
|
|
|
608
|
-
|
|
618
|
+
// For help commands, don't wait for startup
|
|
619
|
+
const isHelpCommand = process.argv.includes('--help') || process.argv.includes('-h') || process.argv.includes('help');
|
|
620
|
+
if (isHelpCommand) {
|
|
621
|
+
// Parse immediately without waiting for startup
|
|
622
|
+
program.parse();
|
|
623
|
+
} else {
|
|
624
|
+
// Wait for startup for other commands
|
|
625
|
+
startupPromise.finally(() => {
|
|
626
|
+
program.parse();
|
|
627
|
+
});
|
|
628
|
+
}
|