@get-blu/blu-code 1.0.1 → 1.1.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.
- package/README.md +39 -16
- package/package.json +2 -2
- package/scripts/install-npm.js +42 -34
- package/bin/blu.exe +0 -0
package/README.md
CHANGED
|
@@ -21,7 +21,12 @@ Blu is a Go-powered terminal UI that transforms your command line into an intell
|
|
|
21
21
|
|
|
22
22
|
### Installation
|
|
23
23
|
|
|
24
|
-
**Via
|
|
24
|
+
**Via npm (recommended):**
|
|
25
|
+
```bash
|
|
26
|
+
npm install -g @get-blu/blu-code
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
**Via raw script:**
|
|
25
30
|
```bash
|
|
26
31
|
curl -fsSL https://raw.githubusercontent.com/Get-Blu/blu-code/main/install | bash
|
|
27
32
|
```
|
|
@@ -47,7 +52,7 @@ export ANTHROPIC_API_KEY="your-key-here"
|
|
|
47
52
|
{
|
|
48
53
|
"agents": {
|
|
49
54
|
"coder": {
|
|
50
|
-
"model": "claude-sonnet
|
|
55
|
+
"model": "claude-3.7-sonnet",
|
|
51
56
|
"maxTokens": 8192
|
|
52
57
|
}
|
|
53
58
|
},
|
|
@@ -93,6 +98,27 @@ Switch between Claude, GPT, Gemini, or any OpenAI-compatible endpoint. Use diffe
|
|
|
93
98
|
3. **Review changes**: See proposed file modifications in the sidebar
|
|
94
99
|
4. **Apply or reject**: Accept changes you want, skip the rest
|
|
95
100
|
|
|
101
|
+
## Documentation
|
|
102
|
+
|
|
103
|
+
Comprehensive documentation is available in the `docs/` directory:
|
|
104
|
+
|
|
105
|
+
- [Introduction](docs/introduction.md)
|
|
106
|
+
- [Getting Started](docs/getting-started.md)
|
|
107
|
+
- [Configuration](docs/configuration.md)
|
|
108
|
+
- [Key Bindings](docs/key-bindings.md)
|
|
109
|
+
- [Architecture](docs/architecture/overview.md)
|
|
110
|
+
|
|
111
|
+
### Detailed Features
|
|
112
|
+
- [AI Chat](docs/features/ai-chat.md)
|
|
113
|
+
- [File Operations](docs/features/file-operations.md)
|
|
114
|
+
- [LSP Intelligence](docs/features/lsp-and-intelligence.md)
|
|
115
|
+
- [MCP Servers](docs/features/mcp-servers.md)
|
|
116
|
+
- [Session Management](docs/features/session-management.md)
|
|
117
|
+
|
|
118
|
+
### Guides
|
|
119
|
+
- [Best Practices](docs/guides/best-practices.md)
|
|
120
|
+
- [Troubleshooting](docs/guides/troubleshooting.md)
|
|
121
|
+
|
|
96
122
|
## Keyboard Shortcuts
|
|
97
123
|
|
|
98
124
|
### Global Shortcuts
|
|
@@ -202,26 +228,23 @@ Place `.blu.json` in your home directory (`~/.blu.json`) or project root:
|
|
|
202
228
|
### Supported Models
|
|
203
229
|
|
|
204
230
|
**Anthropic (Claude):**
|
|
205
|
-
- `claude-
|
|
206
|
-
- `claude-3.
|
|
231
|
+
- `claude-3.7-sonnet` - Recommended for coding (supports reasoning)
|
|
232
|
+
- `claude-3.5-sonnet` - Fast and highly capable
|
|
233
|
+
- `claude-4.6-opus` - Next-gen flagship capability
|
|
207
234
|
|
|
208
235
|
**OpenAI:**
|
|
209
|
-
- `
|
|
210
|
-
- `gpt-5.
|
|
211
|
-
- `
|
|
236
|
+
- `o3-ultra` - Latest reasoning flagship
|
|
237
|
+
- `gpt-5.3-codex` - Specialized for agentic coding
|
|
238
|
+
- `gpt-4o` - Balanced speed and intelligence
|
|
212
239
|
|
|
213
240
|
**Google:**
|
|
214
|
-
- `gemini-3-deep-think` -
|
|
215
|
-
- `gemini-
|
|
216
|
-
- `gemini-
|
|
241
|
+
- `gemini-3-deep-think` - Advanced reasoning and engineering
|
|
242
|
+
- `gemini-2.0-flash` - High-speed intelligence
|
|
243
|
+
- `gemini-1.5-pro` - Large context window
|
|
217
244
|
|
|
218
245
|
**DeepSeek:**
|
|
219
|
-
- `deepseek-v3
|
|
220
|
-
- `deepseek-r1` -
|
|
221
|
-
|
|
222
|
-
**xAI:**
|
|
223
|
-
- `grok-4.1` - Grok 4.1
|
|
224
|
-
- `grok-4.20` - Grok 4.20 (Enterprise)
|
|
246
|
+
- `deepseek-v3` - High performance open-weights model
|
|
247
|
+
- `deepseek-r1` - Reasoning focused model
|
|
225
248
|
|
|
226
249
|
### Environment Variables
|
|
227
250
|
|
package/package.json
CHANGED
package/scripts/install-npm.js
CHANGED
|
@@ -40,47 +40,55 @@ const url = `https://github.com/Get-Blu/blu-code/releases/download/v${version}/$
|
|
|
40
40
|
|
|
41
41
|
console.log(`Downloading ${url} ...`);
|
|
42
42
|
|
|
43
|
-
const
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
43
|
+
const download = (url, dest) => {
|
|
44
|
+
return new Promise((resolve, reject) => {
|
|
45
|
+
const file = fs.createWriteStream(dest);
|
|
46
|
+
https.get(url, (response) => {
|
|
47
|
+
if (response.statusCode === 302 || response.statusCode === 301) {
|
|
48
|
+
file.close();
|
|
49
|
+
fs.unlinkSync(dest); // Clean up partial file before redirect
|
|
50
|
+
return resolve(download(response.headers.location, dest));
|
|
51
|
+
}
|
|
51
52
|
|
|
52
|
-
https.get(url, (response) => {
|
|
53
|
-
if (response.statusCode === 302 || response.statusCode === 301) {
|
|
54
|
-
// Handle redirect
|
|
55
|
-
https.get(response.headers.location, (response) => {
|
|
56
53
|
if (response.statusCode !== 200) {
|
|
57
|
-
|
|
58
|
-
|
|
54
|
+
file.close();
|
|
55
|
+
fs.unlinkSync(dest);
|
|
56
|
+
return reject(new Error(`Failed to download binary: HTTP ${response.statusCode}`));
|
|
59
57
|
}
|
|
58
|
+
|
|
60
59
|
response.pipe(file);
|
|
61
60
|
file.on('finish', () => {
|
|
62
61
|
file.close();
|
|
63
|
-
|
|
64
|
-
if (
|
|
65
|
-
fs.
|
|
62
|
+
const stats = fs.statSync(dest);
|
|
63
|
+
if (stats.size === 0) {
|
|
64
|
+
fs.unlinkSync(dest);
|
|
65
|
+
return reject(new Error('Downloaded binary is empty'));
|
|
66
66
|
}
|
|
67
|
+
resolve();
|
|
67
68
|
});
|
|
68
|
-
})
|
|
69
|
-
} else if (response.statusCode !== 200) {
|
|
70
|
-
console.error(`Failed to download binary: ${response.statusCode}`);
|
|
71
|
-
process.exit(1);
|
|
72
|
-
} else {
|
|
73
|
-
response.pipe(file);
|
|
74
|
-
file.on('finish', () => {
|
|
69
|
+
}).on('error', (err) => {
|
|
75
70
|
file.close();
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
fs.chmodSync(destFile, 0o755);
|
|
79
|
-
}
|
|
71
|
+
if (fs.existsSync(dest)) fs.unlinkSync(dest);
|
|
72
|
+
reject(err);
|
|
80
73
|
});
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
});
|
|
74
|
+
});
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
const destDir = path.join(__dirname, '..', 'bin');
|
|
78
|
+
if (!fs.existsSync(destDir)) {
|
|
79
|
+
fs.mkdirSync(destDir, { recursive: true });
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
const destFile = path.join(destDir, `blu${ext}`);
|
|
83
|
+
|
|
84
|
+
download(url, destFile)
|
|
85
|
+
.then(() => {
|
|
86
|
+
console.log(`Download complete: ${destFile}`);
|
|
87
|
+
if (platform !== 'win32') {
|
|
88
|
+
fs.chmodSync(destFile, 0o755);
|
|
89
|
+
}
|
|
90
|
+
})
|
|
91
|
+
.catch((err) => {
|
|
92
|
+
console.error(`Error: ${err.message}`);
|
|
93
|
+
process.exit(1);
|
|
94
|
+
});
|
package/bin/blu.exe
DELETED
|
Binary file
|