bravecode-cli 0.1.45 → 0.1.46
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/dist/cli-main.mjs +4 -3
- package/dist/cli-main.mjs.map +2 -2
- package/package.json +1 -1
- package/dist/autoModel.d.ts +0 -39
- package/dist/autoModel.d.ts.map +0 -1
- package/dist/autoModel.js +0 -127
- package/dist/autoModel.js.map +0 -1
- package/dist/bravecode +0 -22
- package/dist/cli.d.ts +0 -2
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js +0 -468
- package/dist/cli.js.map +0 -1
- package/dist/core/agent/index.d.ts +0 -31
- package/dist/core/agent/index.d.ts.map +0 -1
- package/dist/core/agent/index.js +0 -339
- package/dist/core/agent/index.js.map +0 -1
- package/dist/core/config/index.d.ts +0 -54
- package/dist/core/config/index.d.ts.map +0 -1
- package/dist/core/config/index.js +0 -138
- package/dist/core/config/index.js.map +0 -1
- package/dist/core/context/index.d.ts +0 -20
- package/dist/core/context/index.d.ts.map +0 -1
- package/dist/core/context/index.js +0 -70
- package/dist/core/context/index.js.map +0 -1
- package/dist/core/mcp/index.d.ts +0 -32
- package/dist/core/mcp/index.d.ts.map +0 -1
- package/dist/core/mcp/index.js +0 -160
- package/dist/core/mcp/index.js.map +0 -1
- package/dist/core/permission/index.d.ts +0 -24
- package/dist/core/permission/index.d.ts.map +0 -1
- package/dist/core/permission/index.js +0 -96
- package/dist/core/permission/index.js.map +0 -1
- package/dist/core/plugin/index.d.ts +0 -44
- package/dist/core/plugin/index.d.ts.map +0 -1
- package/dist/core/plugin/index.js +0 -139
- package/dist/core/plugin/index.js.map +0 -1
- package/dist/core/session/index.d.ts +0 -23
- package/dist/core/session/index.d.ts.map +0 -1
- package/dist/core/session/index.js +0 -51
- package/dist/core/session/index.js.map +0 -1
- package/dist/core/share/index.d.ts +0 -28
- package/dist/core/share/index.d.ts.map +0 -1
- package/dist/core/share/index.js +0 -100
- package/dist/core/share/index.js.map +0 -1
- package/dist/core/snapshot/index.d.ts +0 -30
- package/dist/core/snapshot/index.d.ts.map +0 -1
- package/dist/core/snapshot/index.js +0 -141
- package/dist/core/snapshot/index.js.map +0 -1
- package/dist/core/tool/bash.d.ts +0 -8
- package/dist/core/tool/bash.d.ts.map +0 -1
- package/dist/core/tool/bash.js +0 -29
- package/dist/core/tool/bash.js.map +0 -1
- package/dist/core/tool/browser.d.ts +0 -5
- package/dist/core/tool/browser.d.ts.map +0 -1
- package/dist/core/tool/browser.js +0 -119
- package/dist/core/tool/browser.js.map +0 -1
- package/dist/core/tool/file.d.ts +0 -5
- package/dist/core/tool/file.d.ts.map +0 -1
- package/dist/core/tool/file.js +0 -79
- package/dist/core/tool/file.js.map +0 -1
- package/dist/core/tool/index.d.ts +0 -21
- package/dist/core/tool/index.d.ts.map +0 -1
- package/dist/core/tool/index.js +0 -90
- package/dist/core/tool/index.js.map +0 -1
- package/dist/core/tool/search.d.ts +0 -4
- package/dist/core/tool/search.d.ts.map +0 -1
- package/dist/core/tool/search.js +0 -107
- package/dist/core/tool/search.js.map +0 -1
- package/dist/core/tool/task.d.ts +0 -9
- package/dist/core/tool/task.d.ts.map +0 -1
- package/dist/core/tool/task.js +0 -54
- package/dist/core/tool/task.js.map +0 -1
- package/dist/core/tool/todowrite.d.ts +0 -3
- package/dist/core/tool/todowrite.d.ts.map +0 -1
- package/dist/core/tool/todowrite.js +0 -75
- package/dist/core/tool/todowrite.js.map +0 -1
- package/dist/core/tool/websearch.d.ts +0 -3
- package/dist/core/tool/websearch.d.ts.map +0 -1
- package/dist/core/tool/websearch.js +0 -46
- package/dist/core/tool/websearch.js.map +0 -1
- package/dist/core/tui/ChatTUI.d.ts +0 -16
- package/dist/core/tui/ChatTUI.d.ts.map +0 -1
- package/dist/core/tui/ChatTUI.js +0 -65
- package/dist/core/tui/ChatTUI.js.map +0 -1
- package/dist/core/tui/index.d.ts +0 -15
- package/dist/core/tui/index.d.ts.map +0 -1
- package/dist/core/tui/index.js +0 -45
- package/dist/core/tui/index.js.map +0 -1
- package/dist/core/update/index.d.ts +0 -23
- package/dist/core/update/index.d.ts.map +0 -1
- package/dist/core/update/index.js +0 -115
- package/dist/core/update/index.js.map +0 -1
- package/dist/index.d.ts +0 -18
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -11
- package/dist/index.js.map +0 -1
- package/dist/models.json +0 -545
- package/dist/provider.d.ts +0 -43
- package/dist/provider.d.ts.map +0 -1
- package/dist/provider.js +0 -294
- package/dist/provider.js.map +0 -1
- package/dist/tui/ChatTUI.mjs +0 -89
- package/dist/tui-launcher.mjs +0 -64
package/dist/core/agent/index.js
DELETED
|
@@ -1,339 +0,0 @@
|
|
|
1
|
-
import { LLMProviderManager } from "../../provider";
|
|
2
|
-
import { ToolRegistry } from "../tool";
|
|
3
|
-
import { PermissionSystem, createDefaultPermissions } from "../permission";
|
|
4
|
-
import { SnapshotManager } from "../snapshot";
|
|
5
|
-
import { PluginManager } from "../plugin";
|
|
6
|
-
export const defaultAgents = [
|
|
7
|
-
{
|
|
8
|
-
id: "build",
|
|
9
|
-
name: "Build Agent",
|
|
10
|
-
description: "Full access to tools for development work",
|
|
11
|
-
model: "codestral-latest",
|
|
12
|
-
systemPrompt: `You are BraveCode AI, an expert software engineer. You have access to tools to read, write, edit files, and execute commands.
|
|
13
|
-
|
|
14
|
-
When asked to make changes:
|
|
15
|
-
1. First understand the codebase by reading relevant files
|
|
16
|
-
2. Make the necessary changes using edit/write tools
|
|
17
|
-
3. Verify your changes work by running tests or commands
|
|
18
|
-
|
|
19
|
-
Be concise and direct. Show code when relevant.`,
|
|
20
|
-
temperature: 0.7,
|
|
21
|
-
maxIterations: 20,
|
|
22
|
-
},
|
|
23
|
-
{
|
|
24
|
-
id: "plan",
|
|
25
|
-
name: "Plan Agent",
|
|
26
|
-
description: "Read-only analysis and planning",
|
|
27
|
-
model: "codestral-latest",
|
|
28
|
-
systemPrompt: `You are BraveCode AI, a senior architect. You analyze codebases and create plans without making changes.
|
|
29
|
-
|
|
30
|
-
Focus on:
|
|
31
|
-
1. Understanding the existing code structure
|
|
32
|
-
2. Identifying issues and improvements
|
|
33
|
-
3. Creating step-by-step implementation plans
|
|
34
|
-
|
|
35
|
-
Do not make edits. Only analyze and plan.`,
|
|
36
|
-
temperature: 0.3,
|
|
37
|
-
maxIterations: 10,
|
|
38
|
-
},
|
|
39
|
-
{
|
|
40
|
-
id: "debug",
|
|
41
|
-
name: "Debug Agent",
|
|
42
|
-
description: "Specialized in debugging and troubleshooting issues",
|
|
43
|
-
model: "DeepSeek-R1",
|
|
44
|
-
systemPrompt: `You are BraveCode AI, an expert debugger. You systematically find and fix bugs.
|
|
45
|
-
|
|
46
|
-
Debugging process:
|
|
47
|
-
1. Reproduce the issue - understand what's happening vs what's expected
|
|
48
|
-
2. Read relevant files to understand the code flow
|
|
49
|
-
3. Add logging or use grep to trace the problem
|
|
50
|
-
4. Identify root cause
|
|
51
|
-
5. Implement the fix
|
|
52
|
-
6. Verify the fix works
|
|
53
|
-
|
|
54
|
-
Common debug techniques:
|
|
55
|
-
- Check error messages and stack traces
|
|
56
|
-
- Use grep to find related code
|
|
57
|
-
- Read logs and understand execution flow
|
|
58
|
-
- Test assumptions with bash commands
|
|
59
|
-
- Add console.log or print statements
|
|
60
|
-
|
|
61
|
-
Be methodical. Show your debugging steps.`,
|
|
62
|
-
temperature: 0.5,
|
|
63
|
-
maxIterations: 25,
|
|
64
|
-
},
|
|
65
|
-
{
|
|
66
|
-
id: "testing",
|
|
67
|
-
name: "Testing Agent",
|
|
68
|
-
description: "Specialized in writing and running tests",
|
|
69
|
-
model: "codestral-latest",
|
|
70
|
-
systemPrompt: `You are BraveCode AI, a testing expert. You write comprehensive tests and ensure code quality.
|
|
71
|
-
|
|
72
|
-
Testing process:
|
|
73
|
-
1. Understand the code that needs testing
|
|
74
|
-
2. Check existing test patterns in the project
|
|
75
|
-
3. Write unit tests for individual functions
|
|
76
|
-
4. Write integration tests for component interactions
|
|
77
|
-
5. Run tests and fix any failures
|
|
78
|
-
6. Ensure good test coverage
|
|
79
|
-
|
|
80
|
-
Test frameworks to use (based on project):
|
|
81
|
-
- Jest/Vitest for JavaScript/TypeScript
|
|
82
|
-
- pytest for Python
|
|
83
|
-
- Go testing package for Go
|
|
84
|
-
- JUnit for Java
|
|
85
|
-
|
|
86
|
-
Best practices:
|
|
87
|
-
- Test edge cases and error conditions
|
|
88
|
-
- Use descriptive test names
|
|
89
|
-
- Mock external dependencies
|
|
90
|
-
- Test both positive and negative scenarios
|
|
91
|
-
|
|
92
|
-
Always run tests after writing them.`,
|
|
93
|
-
temperature: 0.4,
|
|
94
|
-
maxIterations: 20,
|
|
95
|
-
},
|
|
96
|
-
{
|
|
97
|
-
id: "security",
|
|
98
|
-
name: "Security Agent",
|
|
99
|
-
description: "Vulnerability assessment and penetration testing",
|
|
100
|
-
model: "DeepSeek-R1",
|
|
101
|
-
systemPrompt: `You are BraveCode AI, a security specialist. You perform vulnerability assessments and security audits.
|
|
102
|
-
|
|
103
|
-
Security assessment process:
|
|
104
|
-
1. Scan for common vulnerabilities
|
|
105
|
-
2. Check for OWASP Top 10 issues
|
|
106
|
-
3. Analyze authentication and authorization
|
|
107
|
-
4. Review input validation and sanitization
|
|
108
|
-
5. Check for secrets and sensitive data exposure
|
|
109
|
-
6. Assess dependency vulnerabilities
|
|
110
|
-
|
|
111
|
-
Vulnerability categories to check:
|
|
112
|
-
- Injection flaws (SQL, NoSQL, Command, LDAP)
|
|
113
|
-
- Broken authentication
|
|
114
|
-
- Sensitive data exposure
|
|
115
|
-
- XML External Entity (XXE)
|
|
116
|
-
- Broken access control
|
|
117
|
-
- Security misconfiguration
|
|
118
|
-
- Cross-site scripting (XSS)
|
|
119
|
-
- Insecure deserialization
|
|
120
|
-
- Using components with known vulnerabilities
|
|
121
|
-
- Insufficient logging
|
|
122
|
-
|
|
123
|
-
When you find vulnerabilities:
|
|
124
|
-
1. Classify severity (Critical/High/Medium/Low)
|
|
125
|
-
2. Provide proof of concept
|
|
126
|
-
3. Suggest remediation steps
|
|
127
|
-
4. Implement fixes if authorized
|
|
128
|
-
|
|
129
|
-
Use bash tools to:
|
|
130
|
-
- Run security scanners (npm audit, safety, trivy)
|
|
131
|
-
- Check for hardcoded secrets
|
|
132
|
-
- Verify HTTPS/TLS configuration
|
|
133
|
-
- Test for SQL injection points`,
|
|
134
|
-
temperature: 0.3,
|
|
135
|
-
maxIterations: 30,
|
|
136
|
-
},
|
|
137
|
-
{
|
|
138
|
-
id: "api-security",
|
|
139
|
-
name: "API Security Agent",
|
|
140
|
-
description: "API vulnerability assessment and penetration testing",
|
|
141
|
-
model: "DeepSeek-R1",
|
|
142
|
-
systemPrompt: `You are BraveCode AI, an API security specialist. You perform comprehensive API vulnerability assessments and penetration testing.
|
|
143
|
-
|
|
144
|
-
API Security Assessment Process:
|
|
145
|
-
1. API Discovery - Map all endpoints, methods, and parameters
|
|
146
|
-
2. Authentication Testing - Verify auth mechanisms
|
|
147
|
-
3. Authorization Testing - Check access controls
|
|
148
|
-
4. Input Validation - Test for injection attacks
|
|
149
|
-
5. Rate Limiting - Test for abuse potential
|
|
150
|
-
6. Data Exposure - Check for sensitive data leaks
|
|
151
|
-
|
|
152
|
-
OWASP API Security Top 10 Checks:
|
|
153
|
-
1. API1:2023 - Broken Object Level Authorization (BOLA)
|
|
154
|
-
2. API2:2023 - Broken Authentication
|
|
155
|
-
3. API3:2023 - Broken Object Property Level Authorization
|
|
156
|
-
4. API4:2023 - Unrestricted Resource Consumption
|
|
157
|
-
5. API5:2023 - Broken Function Level Authorization
|
|
158
|
-
6. API6:2023 - Unrestricted Access to Sensitive Business Flows
|
|
159
|
-
7. API7:2023 - Server Side Request Forgery (SSRF)
|
|
160
|
-
8. API8:2023 - Security Misconfiguration
|
|
161
|
-
9. API9:2023 - Improper Inventory Management
|
|
162
|
-
10. API10:2023 - Unsafe Consumption of APIs
|
|
163
|
-
|
|
164
|
-
Testing Methodology:
|
|
165
|
-
|
|
166
|
-
1. Endpoint Enumeration:
|
|
167
|
-
- Test common API paths (/api/v1/*, /graphql, /swagger)
|
|
168
|
-
- Check for hidden endpoints in JavaScript files
|
|
169
|
-
- Analyze API documentation (OpenAPI/Swagger)
|
|
170
|
-
|
|
171
|
-
2. Authentication Testing:
|
|
172
|
-
- Test JWT token validation
|
|
173
|
-
- Check for weak passwords
|
|
174
|
-
- Test session management
|
|
175
|
-
- Verify token expiration
|
|
176
|
-
- Test API key security
|
|
177
|
-
|
|
178
|
-
3. Authorization Testing:
|
|
179
|
-
- Test IDOR vulnerabilities
|
|
180
|
-
- Check role-based access control
|
|
181
|
-
- Test privilege escalation
|
|
182
|
-
- Verify resource ownership
|
|
183
|
-
|
|
184
|
-
4. Input Validation Testing:
|
|
185
|
-
- SQL injection in parameters
|
|
186
|
-
- NoSQL injection
|
|
187
|
-
- Command injection
|
|
188
|
-
- XML/JSON injection
|
|
189
|
-
- SSRF via URL parameters
|
|
190
|
-
|
|
191
|
-
5. Rate Limiting:
|
|
192
|
-
- Test for brute force protection
|
|
193
|
-
- Check for DDoS vulnerabilities
|
|
194
|
-
- Verify throttling mechanisms
|
|
195
|
-
|
|
196
|
-
6. Data Exposure:
|
|
197
|
-
- Check error messages for info leaks
|
|
198
|
-
- Verify sensitive data masking
|
|
199
|
-
- Test for verbose responses
|
|
200
|
-
|
|
201
|
-
Tools to Use:
|
|
202
|
-
- curl for manual API testing
|
|
203
|
-
- jq for JSON parsing
|
|
204
|
-
- grep for searching responses
|
|
205
|
-
- bash for scripting attacks
|
|
206
|
-
|
|
207
|
-
When testing:
|
|
208
|
-
1. Document all endpoints found
|
|
209
|
-
2. Classify vulnerabilities by severity
|
|
210
|
-
3. Provide proof-of-concept exploits
|
|
211
|
-
4. Suggest remediation steps
|
|
212
|
-
5. Create automated test scripts
|
|
213
|
-
|
|
214
|
-
IMPORTANT: Only test APIs you have authorization to test. Never attempt to access unauthorized systems.`,
|
|
215
|
-
temperature: 0.3,
|
|
216
|
-
maxIterations: 35,
|
|
217
|
-
},
|
|
218
|
-
];
|
|
219
|
-
export class Agent {
|
|
220
|
-
provider;
|
|
221
|
-
tools;
|
|
222
|
-
permissions;
|
|
223
|
-
snapshots;
|
|
224
|
-
pluginHooks;
|
|
225
|
-
config;
|
|
226
|
-
conversationHistory = [];
|
|
227
|
-
autoApprove = false;
|
|
228
|
-
constructor(provider, tools, config) {
|
|
229
|
-
this.provider = provider;
|
|
230
|
-
this.tools = tools;
|
|
231
|
-
this.config = config;
|
|
232
|
-
this.permissions = new PermissionSystem(createDefaultPermissions());
|
|
233
|
-
this.snapshots = new SnapshotManager();
|
|
234
|
-
this.pluginHooks = tools.getPluginManager().getAllHooks();
|
|
235
|
-
}
|
|
236
|
-
setAutoApprove(auto) {
|
|
237
|
-
this.autoApprove = auto;
|
|
238
|
-
}
|
|
239
|
-
async run(userMessage, onChunk) {
|
|
240
|
-
let message = userMessage;
|
|
241
|
-
if (this.pluginHooks.beforeAgentRun) {
|
|
242
|
-
message = await this.pluginHooks.beforeAgentRun(this.config.id, message);
|
|
243
|
-
}
|
|
244
|
-
this.conversationHistory.push({ role: "user", content: message });
|
|
245
|
-
let iterations = 0;
|
|
246
|
-
const maxIter = this.config.maxIterations || 20;
|
|
247
|
-
while (iterations < maxIter) {
|
|
248
|
-
iterations++;
|
|
249
|
-
const messages = [
|
|
250
|
-
{ role: "system", content: this.config.systemPrompt },
|
|
251
|
-
...this.conversationHistory,
|
|
252
|
-
];
|
|
253
|
-
const toolDefs = this.tools.getToolDefinitions();
|
|
254
|
-
let fullResponse = "";
|
|
255
|
-
let toolCalls = [];
|
|
256
|
-
if (onChunk) {
|
|
257
|
-
const stream = this.provider.chatStream({
|
|
258
|
-
model: this.config.model,
|
|
259
|
-
messages,
|
|
260
|
-
});
|
|
261
|
-
for await (const chunk of stream) {
|
|
262
|
-
if (chunk.type === "text" && chunk.text) {
|
|
263
|
-
fullResponse += chunk.text;
|
|
264
|
-
onChunk(chunk.text);
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
}
|
|
268
|
-
else {
|
|
269
|
-
const result = await this.provider.chat({
|
|
270
|
-
model: this.config.model,
|
|
271
|
-
messages,
|
|
272
|
-
});
|
|
273
|
-
fullResponse = result.text || "";
|
|
274
|
-
toolCalls = result.toolCalls || [];
|
|
275
|
-
}
|
|
276
|
-
this.conversationHistory.push({ role: "assistant", content: fullResponse });
|
|
277
|
-
if (toolCalls && toolCalls.length > 0) {
|
|
278
|
-
for (const toolCall of toolCalls) {
|
|
279
|
-
const toolName = toolCall.function?.name || toolCall.name;
|
|
280
|
-
const toolArgs = toolCall.function?.arguments
|
|
281
|
-
? JSON.parse(toolCall.function.arguments)
|
|
282
|
-
: toolCall.arguments;
|
|
283
|
-
const permission = await this.permissions.checkPermission(toolName, toolArgs, this.config.id);
|
|
284
|
-
if (permission.action === "deny") {
|
|
285
|
-
console.log(`\n > Blocked: ${toolName} (permission denied)`);
|
|
286
|
-
this.conversationHistory.push({
|
|
287
|
-
role: "tool",
|
|
288
|
-
content: "Permission denied by security policy.",
|
|
289
|
-
toolCallId: toolCall.id,
|
|
290
|
-
});
|
|
291
|
-
continue;
|
|
292
|
-
}
|
|
293
|
-
if (permission.action === "ask" && !this.autoApprove) {
|
|
294
|
-
console.log(`\n > ${toolName} requires approval`);
|
|
295
|
-
console.log(` Args: ${JSON.stringify(toolArgs).substring(0, 100)}...`);
|
|
296
|
-
}
|
|
297
|
-
if (["edit", "write"].includes(toolName)) {
|
|
298
|
-
await this.snapshots.createSnapshot(`before ${toolName}`);
|
|
299
|
-
}
|
|
300
|
-
let args = toolArgs;
|
|
301
|
-
if (this.pluginHooks.beforeToolCall) {
|
|
302
|
-
args = await this.pluginHooks.beforeToolCall(toolName, args);
|
|
303
|
-
}
|
|
304
|
-
console.log(`\n > Running: ${toolName}`);
|
|
305
|
-
let result = await this.tools.execute(toolName, args);
|
|
306
|
-
if (this.pluginHooks.afterToolCall) {
|
|
307
|
-
result = await this.pluginHooks.afterToolCall(toolName, args, result);
|
|
308
|
-
}
|
|
309
|
-
this.conversationHistory.push({
|
|
310
|
-
role: "tool",
|
|
311
|
-
content: result,
|
|
312
|
-
toolCallId: toolCall.id,
|
|
313
|
-
});
|
|
314
|
-
if (onChunk) {
|
|
315
|
-
onChunk(`\n[${toolName} result]: ${result.substring(0, 200)}...\n`);
|
|
316
|
-
}
|
|
317
|
-
}
|
|
318
|
-
}
|
|
319
|
-
else {
|
|
320
|
-
return fullResponse;
|
|
321
|
-
}
|
|
322
|
-
}
|
|
323
|
-
return "Max iterations reached";
|
|
324
|
-
}
|
|
325
|
-
async undo() {
|
|
326
|
-
const result = await this.snapshots.revert();
|
|
327
|
-
return result.message;
|
|
328
|
-
}
|
|
329
|
-
async getDiff() {
|
|
330
|
-
return this.snapshots.getDiff();
|
|
331
|
-
}
|
|
332
|
-
clearHistory() {
|
|
333
|
-
this.conversationHistory = [];
|
|
334
|
-
}
|
|
335
|
-
getHistory() {
|
|
336
|
-
return [...this.conversationHistory];
|
|
337
|
-
}
|
|
338
|
-
}
|
|
339
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/agent/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
export interface BraveCodeConfig {
|
|
2
|
-
version: string;
|
|
3
|
-
provider: {
|
|
4
|
-
default: string;
|
|
5
|
-
apiKey?: string;
|
|
6
|
-
baseUrl?: string;
|
|
7
|
-
};
|
|
8
|
-
model: {
|
|
9
|
-
default: string;
|
|
10
|
-
autoSelect: boolean;
|
|
11
|
-
preferred?: string[];
|
|
12
|
-
};
|
|
13
|
-
agent: {
|
|
14
|
-
default: string;
|
|
15
|
-
autoApprove: boolean;
|
|
16
|
-
maxIterations: number;
|
|
17
|
-
};
|
|
18
|
-
permissions: {
|
|
19
|
-
bash: "allow" | "ask" | "deny";
|
|
20
|
-
edit: "allow" | "ask" | "deny";
|
|
21
|
-
write: "allow" | "ask" | "deny";
|
|
22
|
-
browser: "allow" | "ask" | "deny";
|
|
23
|
-
};
|
|
24
|
-
ui: {
|
|
25
|
-
theme: "dark" | "light" | "auto";
|
|
26
|
-
showTokens: boolean;
|
|
27
|
-
streamingEnabled: boolean;
|
|
28
|
-
};
|
|
29
|
-
snapshot: {
|
|
30
|
-
enabled: boolean;
|
|
31
|
-
autoSnapshot: boolean;
|
|
32
|
-
};
|
|
33
|
-
telemetry: boolean;
|
|
34
|
-
}
|
|
35
|
-
export declare class ConfigManager {
|
|
36
|
-
private configDir;
|
|
37
|
-
private configFile;
|
|
38
|
-
private config;
|
|
39
|
-
constructor();
|
|
40
|
-
private loadConfig;
|
|
41
|
-
private mergeWithDefaults;
|
|
42
|
-
saveConfig(config: BraveCodeConfig): void;
|
|
43
|
-
get(): BraveCodeConfig;
|
|
44
|
-
set<K extends keyof BraveCodeConfig>(key: K, value: BraveCodeConfig[K]): void;
|
|
45
|
-
getNested<T>(path: string): T | undefined;
|
|
46
|
-
setNested<T>(path: string, value: T): void;
|
|
47
|
-
reset(): void;
|
|
48
|
-
validate(): {
|
|
49
|
-
valid: boolean;
|
|
50
|
-
errors: string[];
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
export declare function getConfig(): ConfigManager;
|
|
54
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/config/index.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE;QACR,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,KAAK,EAAE;QACL,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,OAAO,CAAC;QACpB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;KACtB,CAAC;IACF,KAAK,EAAE;QACL,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,OAAO,CAAC;QACrB,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,WAAW,EAAE;QACX,IAAI,EAAE,OAAO,GAAG,KAAK,GAAG,MAAM,CAAC;QAC/B,IAAI,EAAE,OAAO,GAAG,KAAK,GAAG,MAAM,CAAC;QAC/B,KAAK,EAAE,OAAO,GAAG,KAAK,GAAG,MAAM,CAAC;QAChC,OAAO,EAAE,OAAO,GAAG,KAAK,GAAG,MAAM,CAAC;KACnC,CAAC;IACF,EAAE,EAAE;QACF,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;QACjC,UAAU,EAAE,OAAO,CAAC;QACpB,gBAAgB,EAAE,OAAO,CAAC;KAC3B,CAAC;IACF,QAAQ,EAAE;QACR,OAAO,EAAE,OAAO,CAAC;QACjB,YAAY,EAAE,OAAO,CAAC;KACvB,CAAC;IACF,SAAS,EAAE,OAAO,CAAC;CACpB;AAoCD,qBAAa,aAAa;IACxB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,MAAM,CAAkB;;IAQhC,OAAO,CAAC,UAAU;IAmBlB,OAAO,CAAC,iBAAiB;IAazB,UAAU,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI;IAKzC,GAAG,IAAI,eAAe;IAItB,GAAG,CAAC,CAAC,SAAS,MAAM,eAAe,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,IAAI;IAK7E,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAezC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAgB1C,KAAK,IAAI,IAAI;IAKb,QAAQ,IAAI;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE;CAcjD;AAID,wBAAgB,SAAS,IAAI,aAAa,CAKzC"}
|
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
import { existsSync, readFileSync, writeFileSync, mkdirSync } from "fs";
|
|
2
|
-
import { join } from "path";
|
|
3
|
-
import { homedir } from "os";
|
|
4
|
-
const DEFAULT_CONFIG = {
|
|
5
|
-
version: "0.1.0",
|
|
6
|
-
provider: {
|
|
7
|
-
default: "bravecode",
|
|
8
|
-
baseUrl: "https://codero.sohailsyed.com/api/chat",
|
|
9
|
-
},
|
|
10
|
-
model: {
|
|
11
|
-
default: "codestral-latest",
|
|
12
|
-
autoSelect: true,
|
|
13
|
-
preferred: ["codestral-latest", "mistral-large-2512", "DeepSeek-V3"],
|
|
14
|
-
},
|
|
15
|
-
agent: {
|
|
16
|
-
default: "build",
|
|
17
|
-
autoApprove: false,
|
|
18
|
-
maxIterations: 20,
|
|
19
|
-
},
|
|
20
|
-
permissions: {
|
|
21
|
-
bash: "ask",
|
|
22
|
-
edit: "ask",
|
|
23
|
-
write: "ask",
|
|
24
|
-
browser: "allow",
|
|
25
|
-
},
|
|
26
|
-
ui: {
|
|
27
|
-
theme: "auto",
|
|
28
|
-
showTokens: false,
|
|
29
|
-
streamingEnabled: true,
|
|
30
|
-
},
|
|
31
|
-
snapshot: {
|
|
32
|
-
enabled: true,
|
|
33
|
-
autoSnapshot: true,
|
|
34
|
-
},
|
|
35
|
-
telemetry: false,
|
|
36
|
-
};
|
|
37
|
-
export class ConfigManager {
|
|
38
|
-
configDir;
|
|
39
|
-
configFile;
|
|
40
|
-
config;
|
|
41
|
-
constructor() {
|
|
42
|
-
this.configDir = join(homedir(), ".bravecode");
|
|
43
|
-
this.configFile = join(this.configDir, "config.json");
|
|
44
|
-
this.config = this.loadConfig();
|
|
45
|
-
}
|
|
46
|
-
loadConfig() {
|
|
47
|
-
if (!existsSync(this.configDir)) {
|
|
48
|
-
mkdirSync(this.configDir, { recursive: true });
|
|
49
|
-
}
|
|
50
|
-
if (existsSync(this.configFile)) {
|
|
51
|
-
try {
|
|
52
|
-
const raw = readFileSync(this.configFile, "utf-8");
|
|
53
|
-
const loaded = JSON.parse(raw);
|
|
54
|
-
return this.mergeWithDefaults(loaded);
|
|
55
|
-
}
|
|
56
|
-
catch {
|
|
57
|
-
return { ...DEFAULT_CONFIG };
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
this.saveConfig(DEFAULT_CONFIG);
|
|
61
|
-
return { ...DEFAULT_CONFIG };
|
|
62
|
-
}
|
|
63
|
-
mergeWithDefaults(loaded) {
|
|
64
|
-
return {
|
|
65
|
-
...DEFAULT_CONFIG,
|
|
66
|
-
...loaded,
|
|
67
|
-
provider: { ...DEFAULT_CONFIG.provider, ...loaded.provider },
|
|
68
|
-
model: { ...DEFAULT_CONFIG.model, ...loaded.model },
|
|
69
|
-
agent: { ...DEFAULT_CONFIG.agent, ...loaded.agent },
|
|
70
|
-
permissions: { ...DEFAULT_CONFIG.permissions, ...loaded.permissions },
|
|
71
|
-
ui: { ...DEFAULT_CONFIG.ui, ...loaded.ui },
|
|
72
|
-
snapshot: { ...DEFAULT_CONFIG.snapshot, ...loaded.snapshot },
|
|
73
|
-
};
|
|
74
|
-
}
|
|
75
|
-
saveConfig(config) {
|
|
76
|
-
this.config = config;
|
|
77
|
-
writeFileSync(this.configFile, JSON.stringify(config, null, 2));
|
|
78
|
-
}
|
|
79
|
-
get() {
|
|
80
|
-
return { ...this.config };
|
|
81
|
-
}
|
|
82
|
-
set(key, value) {
|
|
83
|
-
this.config[key] = value;
|
|
84
|
-
this.saveConfig(this.config);
|
|
85
|
-
}
|
|
86
|
-
getNested(path) {
|
|
87
|
-
const keys = path.split(".");
|
|
88
|
-
let current = this.config;
|
|
89
|
-
for (const key of keys) {
|
|
90
|
-
if (current && typeof current === "object" && key in current) {
|
|
91
|
-
current = current[key];
|
|
92
|
-
}
|
|
93
|
-
else {
|
|
94
|
-
return undefined;
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
return current;
|
|
98
|
-
}
|
|
99
|
-
setNested(path, value) {
|
|
100
|
-
const keys = path.split(".");
|
|
101
|
-
let current = this.config;
|
|
102
|
-
for (let i = 0; i < keys.length - 1; i++) {
|
|
103
|
-
const key = keys[i];
|
|
104
|
-
if (!(key in current) || typeof current[key] !== "object") {
|
|
105
|
-
current[key] = {};
|
|
106
|
-
}
|
|
107
|
-
current = current[key];
|
|
108
|
-
}
|
|
109
|
-
current[keys[keys.length - 1]] = value;
|
|
110
|
-
this.saveConfig(this.config);
|
|
111
|
-
}
|
|
112
|
-
reset() {
|
|
113
|
-
this.config = { ...DEFAULT_CONFIG };
|
|
114
|
-
this.saveConfig(this.config);
|
|
115
|
-
}
|
|
116
|
-
validate() {
|
|
117
|
-
const errors = [];
|
|
118
|
-
if (!this.config.version)
|
|
119
|
-
errors.push("Missing version");
|
|
120
|
-
if (!["bravecode", "openrouter", "9router", "mistral", "deepseek"].includes(this.config.provider.default)) {
|
|
121
|
-
errors.push("Invalid provider");
|
|
122
|
-
}
|
|
123
|
-
if (!this.config.model.default)
|
|
124
|
-
errors.push("Missing model default");
|
|
125
|
-
if (typeof this.config.agent.maxIterations !== "number" || this.config.agent.maxIterations < 1) {
|
|
126
|
-
errors.push("Invalid maxIterations");
|
|
127
|
-
}
|
|
128
|
-
return { valid: errors.length === 0, errors };
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
let instance = null;
|
|
132
|
-
export function getConfig() {
|
|
133
|
-
if (!instance) {
|
|
134
|
-
instance = new ConfigManager();
|
|
135
|
-
}
|
|
136
|
-
return instance;
|
|
137
|
-
}
|
|
138
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/config/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import type { Message } from "../../provider";
|
|
2
|
-
export interface CompactionResult {
|
|
3
|
-
summary: string;
|
|
4
|
-
originalTokens: number;
|
|
5
|
-
compactedTokens: number;
|
|
6
|
-
}
|
|
7
|
-
export declare class ContextCompactor {
|
|
8
|
-
private maxTokens;
|
|
9
|
-
private summaryRatio;
|
|
10
|
-
constructor(maxTokens?: number, summaryRatio?: number);
|
|
11
|
-
private estimateTokens;
|
|
12
|
-
private shouldCompact;
|
|
13
|
-
compact(messages: Message[], provider: any): Promise<CompactionResult>;
|
|
14
|
-
getStatus(messages: Message[]): {
|
|
15
|
-
tokens: number;
|
|
16
|
-
shouldCompact: boolean;
|
|
17
|
-
percentage: number;
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/context/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAE9C,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,YAAY,CAAS;gBAEjB,SAAS,GAAE,MAAa,EAAE,YAAY,GAAE,MAAY;IAKhE,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,aAAa;IAKf,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,GAAG,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAiD5E,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,OAAO,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE;CAQ/F"}
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
export class ContextCompactor {
|
|
2
|
-
maxTokens;
|
|
3
|
-
summaryRatio;
|
|
4
|
-
constructor(maxTokens = 8000, summaryRatio = 0.3) {
|
|
5
|
-
this.maxTokens = maxTokens;
|
|
6
|
-
this.summaryRatio = summaryRatio;
|
|
7
|
-
}
|
|
8
|
-
estimateTokens(messages) {
|
|
9
|
-
let tokens = 0;
|
|
10
|
-
for (const msg of messages) {
|
|
11
|
-
const content = typeof msg.content === "string" ? msg.content : JSON.stringify(msg.content);
|
|
12
|
-
tokens += Math.ceil(content.length / 4);
|
|
13
|
-
}
|
|
14
|
-
return tokens;
|
|
15
|
-
}
|
|
16
|
-
shouldCompact(messages) {
|
|
17
|
-
const estimated = this.estimateTokens(messages);
|
|
18
|
-
return estimated > this.maxTokens;
|
|
19
|
-
}
|
|
20
|
-
async compact(messages, provider) {
|
|
21
|
-
if (!this.shouldCompact(messages)) {
|
|
22
|
-
return {
|
|
23
|
-
summary: "",
|
|
24
|
-
originalTokens: this.estimateTokens(messages),
|
|
25
|
-
compactedTokens: this.estimateTokens(messages),
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
const originalTokens = this.estimateTokens(messages);
|
|
29
|
-
const systemMessages = messages.filter((m) => m.role === "system");
|
|
30
|
-
const conversationMessages = messages.filter((m) => m.role !== "system");
|
|
31
|
-
const cutoffIndex = Math.floor(conversationMessages.length * (1 - this.summaryRatio));
|
|
32
|
-
const toSummarize = conversationMessages.slice(0, cutoffIndex);
|
|
33
|
-
const toKeep = conversationMessages.slice(cutoffIndex);
|
|
34
|
-
const summaryPrompt = [
|
|
35
|
-
{ role: "user", content: `Summarize this conversation concisely, preserving key decisions and context:\n\n${toSummarize.map((m) => `${m.role}: ${typeof m.content === "string" ? m.content : "[tool result]"}`).join("\n\n")}` }
|
|
36
|
-
];
|
|
37
|
-
let summary;
|
|
38
|
-
try {
|
|
39
|
-
const result = await provider.chat({
|
|
40
|
-
model: "codestral-latest",
|
|
41
|
-
messages: summaryPrompt,
|
|
42
|
-
maxTokens: 500,
|
|
43
|
-
});
|
|
44
|
-
summary = result.text || "Conversation summary unavailable.";
|
|
45
|
-
}
|
|
46
|
-
catch {
|
|
47
|
-
summary = "Conversation summary unavailable.";
|
|
48
|
-
}
|
|
49
|
-
const compacted = [
|
|
50
|
-
...systemMessages,
|
|
51
|
-
{ role: "user", content: `[Previous conversation summary]: ${summary}` },
|
|
52
|
-
...toKeep,
|
|
53
|
-
];
|
|
54
|
-
const compactedTokens = this.estimateTokens(compacted);
|
|
55
|
-
return {
|
|
56
|
-
summary,
|
|
57
|
-
originalTokens,
|
|
58
|
-
compactedTokens,
|
|
59
|
-
};
|
|
60
|
-
}
|
|
61
|
-
getStatus(messages) {
|
|
62
|
-
const tokens = this.estimateTokens(messages);
|
|
63
|
-
return {
|
|
64
|
-
tokens,
|
|
65
|
-
shouldCompact: tokens > this.maxTokens,
|
|
66
|
-
percentage: Math.round((tokens / this.maxTokens) * 100),
|
|
67
|
-
};
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/context/index.ts"],"names":[],"mappings":"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"}
|