bravecode-cli 0.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.
Files changed (104) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +387 -0
  3. package/dist/autoModel.d.ts +39 -0
  4. package/dist/autoModel.d.ts.map +1 -0
  5. package/dist/autoModel.js +127 -0
  6. package/dist/autoModel.js.map +1 -0
  7. package/dist/cli.cjs +41727 -0
  8. package/dist/cli.cjs.map +7 -0
  9. package/dist/cli.d.ts +2 -0
  10. package/dist/cli.d.ts.map +1 -0
  11. package/dist/cli.js +459 -0
  12. package/dist/cli.js.map +1 -0
  13. package/dist/cli.mjs +41000 -0
  14. package/dist/cli.mjs.map +7 -0
  15. package/dist/core/agent/index.d.ts +31 -0
  16. package/dist/core/agent/index.d.ts.map +1 -0
  17. package/dist/core/agent/index.js +339 -0
  18. package/dist/core/agent/index.js.map +1 -0
  19. package/dist/core/config/index.d.ts +54 -0
  20. package/dist/core/config/index.d.ts.map +1 -0
  21. package/dist/core/config/index.js +138 -0
  22. package/dist/core/config/index.js.map +1 -0
  23. package/dist/core/context/index.d.ts +20 -0
  24. package/dist/core/context/index.d.ts.map +1 -0
  25. package/dist/core/context/index.js +70 -0
  26. package/dist/core/context/index.js.map +1 -0
  27. package/dist/core/mcp/index.d.ts +32 -0
  28. package/dist/core/mcp/index.d.ts.map +1 -0
  29. package/dist/core/mcp/index.js +160 -0
  30. package/dist/core/mcp/index.js.map +1 -0
  31. package/dist/core/permission/index.d.ts +24 -0
  32. package/dist/core/permission/index.d.ts.map +1 -0
  33. package/dist/core/permission/index.js +96 -0
  34. package/dist/core/permission/index.js.map +1 -0
  35. package/dist/core/plugin/index.d.ts +44 -0
  36. package/dist/core/plugin/index.d.ts.map +1 -0
  37. package/dist/core/plugin/index.js +139 -0
  38. package/dist/core/plugin/index.js.map +1 -0
  39. package/dist/core/session/index.d.ts +23 -0
  40. package/dist/core/session/index.d.ts.map +1 -0
  41. package/dist/core/session/index.js +51 -0
  42. package/dist/core/session/index.js.map +1 -0
  43. package/dist/core/share/index.d.ts +28 -0
  44. package/dist/core/share/index.d.ts.map +1 -0
  45. package/dist/core/share/index.js +100 -0
  46. package/dist/core/share/index.js.map +1 -0
  47. package/dist/core/snapshot/index.d.ts +30 -0
  48. package/dist/core/snapshot/index.d.ts.map +1 -0
  49. package/dist/core/snapshot/index.js +141 -0
  50. package/dist/core/snapshot/index.js.map +1 -0
  51. package/dist/core/tool/bash.d.ts +8 -0
  52. package/dist/core/tool/bash.d.ts.map +1 -0
  53. package/dist/core/tool/bash.js +29 -0
  54. package/dist/core/tool/bash.js.map +1 -0
  55. package/dist/core/tool/browser.d.ts +5 -0
  56. package/dist/core/tool/browser.d.ts.map +1 -0
  57. package/dist/core/tool/browser.js +119 -0
  58. package/dist/core/tool/browser.js.map +1 -0
  59. package/dist/core/tool/file.d.ts +5 -0
  60. package/dist/core/tool/file.d.ts.map +1 -0
  61. package/dist/core/tool/file.js +79 -0
  62. package/dist/core/tool/file.js.map +1 -0
  63. package/dist/core/tool/index.d.ts +21 -0
  64. package/dist/core/tool/index.d.ts.map +1 -0
  65. package/dist/core/tool/index.js +90 -0
  66. package/dist/core/tool/index.js.map +1 -0
  67. package/dist/core/tool/search.d.ts +4 -0
  68. package/dist/core/tool/search.d.ts.map +1 -0
  69. package/dist/core/tool/search.js +107 -0
  70. package/dist/core/tool/search.js.map +1 -0
  71. package/dist/core/tool/task.d.ts +9 -0
  72. package/dist/core/tool/task.d.ts.map +1 -0
  73. package/dist/core/tool/task.js +54 -0
  74. package/dist/core/tool/task.js.map +1 -0
  75. package/dist/core/tool/todowrite.d.ts +3 -0
  76. package/dist/core/tool/todowrite.d.ts.map +1 -0
  77. package/dist/core/tool/todowrite.js +75 -0
  78. package/dist/core/tool/todowrite.js.map +1 -0
  79. package/dist/core/tool/websearch.d.ts +3 -0
  80. package/dist/core/tool/websearch.d.ts.map +1 -0
  81. package/dist/core/tool/websearch.js +46 -0
  82. package/dist/core/tool/websearch.js.map +1 -0
  83. package/dist/core/tui/ChatTUI.d.ts +17 -0
  84. package/dist/core/tui/ChatTUI.d.ts.map +1 -0
  85. package/dist/core/tui/ChatTUI.js +64 -0
  86. package/dist/core/tui/ChatTUI.js.map +1 -0
  87. package/dist/core/tui/index.d.ts +15 -0
  88. package/dist/core/tui/index.d.ts.map +1 -0
  89. package/dist/core/tui/index.js +41 -0
  90. package/dist/core/tui/index.js.map +1 -0
  91. package/dist/core/update/index.d.ts +23 -0
  92. package/dist/core/update/index.d.ts.map +1 -0
  93. package/dist/core/update/index.js +115 -0
  94. package/dist/core/update/index.js.map +1 -0
  95. package/dist/index.d.ts +18 -0
  96. package/dist/index.d.ts.map +1 -0
  97. package/dist/index.js +11 -0
  98. package/dist/index.js.map +1 -0
  99. package/dist/models.json +545 -0
  100. package/dist/provider.d.ts +43 -0
  101. package/dist/provider.d.ts.map +1 -0
  102. package/dist/provider.js +294 -0
  103. package/dist/provider.js.map +1 -0
  104. package/package.json +88 -0
package/dist/cli.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
package/dist/cli.js ADDED
@@ -0,0 +1,459 @@
1
+ import { Command } from "commander";
2
+ import { AutoModelSelector } from "./autoModel";
3
+ import { LLMProviderManager } from "./provider";
4
+ import { ToolRegistry } from "./core/tool";
5
+ import { Agent, defaultAgents } from "./core/agent";
6
+ import { Session } from "./core/session";
7
+ import { getConfig } from "./core/config";
8
+ import { ShareManager } from "./core/share";
9
+ import { UpdateChecker } from "./core/update";
10
+ import { existsSync, writeFileSync } from "fs";
11
+ import { join } from "path";
12
+ const program = new Command();
13
+ program
14
+ .name("bravecode")
15
+ .description("BraveCode AI - Agentic AI Vibe Coding CLI with free model support")
16
+ .version("0.1.0");
17
+ program
18
+ .command("chat")
19
+ .description("Start a chat session")
20
+ .option("-m, --model <model>", "Model to use (or 'auto' for auto-selection)")
21
+ .option("-t, --task <task>", "Task type hint (code, reasoning, vision, audio, general)")
22
+ .option("-a, --agent <agent>", "Agent to use", "build")
23
+ .option("--tui", "Launch interactive TUI mode")
24
+ .argument("[prompt]", "Initial prompt")
25
+ .action(async (prompt, options) => {
26
+ if (options.tui) {
27
+ const { TUILauncher } = await import("./core/tui/index");
28
+ const launcher = new TUILauncher(options.model, options.agent);
29
+ await launcher.start();
30
+ return;
31
+ }
32
+ const provider = new LLMProviderManager();
33
+ const autoModel = new AutoModelSelector();
34
+ if (!prompt) {
35
+ console.log("Interactive mode coming soon. For now, provide a prompt:");
36
+ console.log(' bravecode chat "Write a hello world program"');
37
+ return;
38
+ }
39
+ let modelId;
40
+ if (options.model === "auto" || !options.model) {
41
+ const taskType = options.task || autoModel.detectTaskType(prompt);
42
+ const selectedModel = autoModel.selectModel(taskType);
43
+ modelId = selectedModel.id;
44
+ console.log(`\nAuto-selected model: ${selectedModel.name} (${modelId})`);
45
+ }
46
+ else {
47
+ modelId = options.model;
48
+ }
49
+ const messages = [{ role: "user", content: prompt }];
50
+ console.log(`\nUsing model: ${modelId}\n`);
51
+ const stream = provider.chatStream({ model: modelId, messages });
52
+ for await (const chunk of stream) {
53
+ if (chunk.type === "text" && chunk.text) {
54
+ process.stdout.write(chunk.text);
55
+ }
56
+ }
57
+ console.log("\n");
58
+ });
59
+ program
60
+ .command("run")
61
+ .description("Run a single prompt with tool execution (non-interactive)")
62
+ .option("-m, --model <model>", "Model to use")
63
+ .option("-a, --agent <agent>", "Agent to use (build, plan, debug, testing, security, api-security)", "build")
64
+ .option("--auto", "Auto-approve permission requests")
65
+ .argument("<prompt>", "The prompt to run")
66
+ .action(async (prompt, options) => {
67
+ const provider = new LLMProviderManager();
68
+ const tools = new ToolRegistry();
69
+ const autoModel = new AutoModelSelector();
70
+ let modelId = options.model;
71
+ if (!modelId) {
72
+ const taskType = autoModel.detectTaskType(prompt);
73
+ const selectedModel = autoModel.selectModel(taskType);
74
+ modelId = selectedModel.id;
75
+ }
76
+ const agentConfig = defaultAgents.find((a) => a.id === options.agent) || defaultAgents[0];
77
+ const agent = new Agent(provider, tools, {
78
+ ...agentConfig,
79
+ model: modelId,
80
+ });
81
+ if (options.auto) {
82
+ agent.setAutoApprove(true);
83
+ }
84
+ console.log(`\nBraveCode AI - Running with ${agentConfig.name}`);
85
+ console.log(`Model: ${modelId}`);
86
+ console.log(`Prompt: ${prompt}\n`);
87
+ const response = await agent.run(prompt, (chunk) => {
88
+ process.stdout.write(chunk);
89
+ });
90
+ console.log("\n");
91
+ });
92
+ program
93
+ .command("models")
94
+ .description("List available models")
95
+ .option("-p, --provider <provider>", "Filter by provider")
96
+ .option("-c, --capability <capability>", "Filter by capability (code, reasoning, vision, audio)")
97
+ .action((options) => {
98
+ const autoModel = new AutoModelSelector();
99
+ let models = autoModel.listModels();
100
+ if (options.provider) {
101
+ models = models.filter((m) => m.provider === options.provider);
102
+ }
103
+ if (options.capability) {
104
+ models = models.filter((m) => m.capabilities[options.capability]);
105
+ }
106
+ console.log("\nAvailable Models:\n");
107
+ for (const model of models) {
108
+ const tags = model.tags.join(", ");
109
+ console.log(` ${model.id}`);
110
+ console.log(` Name: ${model.name}`);
111
+ console.log(` Provider: ${model.provider}`);
112
+ console.log(` Context: ${model.contextWindow / 1000}k tokens`);
113
+ console.log(` Tags: ${tags}`);
114
+ console.log("");
115
+ }
116
+ });
117
+ program
118
+ .command("providers")
119
+ .description("List available providers and their status")
120
+ .action(() => {
121
+ const provider = new LLMProviderManager();
122
+ const providers = provider.getAvailableProviders();
123
+ console.log("\nAvailable Providers:\n");
124
+ for (const p of providers) {
125
+ const configured = provider.isProviderConfigured(p);
126
+ console.log(` ${p}: ${configured ? "Configured" : "Not configured"}`);
127
+ }
128
+ });
129
+ program
130
+ .command("select")
131
+ .description("Auto-select a model for a task")
132
+ .argument("<prompt>", "Task description")
133
+ .action((prompt) => {
134
+ const autoModel = new AutoModelSelector();
135
+ const taskType = autoModel.detectTaskType(prompt);
136
+ const model = autoModel.selectModel(taskType);
137
+ console.log(`\nTask type: ${taskType}`);
138
+ console.log(`Selected model: ${model.name} (${model.id})`);
139
+ console.log(`Provider: ${model.provider}`);
140
+ console.log(`Context window: ${model.contextWindow / 1000}k tokens`);
141
+ });
142
+ program
143
+ .command("tools")
144
+ .description("List available tools")
145
+ .action(() => {
146
+ const tools = new ToolRegistry();
147
+ const toolList = tools.list();
148
+ console.log("\nAvailable Tools:\n");
149
+ for (const tool of toolList) {
150
+ console.log(` ${tool.name}`);
151
+ console.log(` ${tool.description}`);
152
+ console.log("");
153
+ }
154
+ });
155
+ program
156
+ .command("agents")
157
+ .description("List available agents")
158
+ .action(() => {
159
+ console.log("\nAvailable Agents:\n");
160
+ for (const agent of defaultAgents) {
161
+ console.log(` ${agent.id}`);
162
+ console.log(` Name: ${agent.name}`);
163
+ console.log(` ${agent.description}`);
164
+ console.log(` Model: ${agent.model}`);
165
+ console.log("");
166
+ }
167
+ });
168
+ program
169
+ .command("open <url>")
170
+ .description("Open a URL in the default web browser")
171
+ .action((url) => {
172
+ const { execSync } = require("child_process");
173
+ if (!url.startsWith("http://") && !url.startsWith("https://")) {
174
+ url = "https://" + url;
175
+ }
176
+ try {
177
+ let command;
178
+ const platform = process.platform;
179
+ if (platform === "darwin") {
180
+ command = `open "${url}"`;
181
+ }
182
+ else if (platform === "win32") {
183
+ command = `start "" "${url}"`;
184
+ }
185
+ else {
186
+ command = `xdg-open "${url}" 2>/dev/null || sensible-browser "${url}" 2>/dev/null`;
187
+ }
188
+ execSync(command, { stdio: "ignore" });
189
+ console.log(`\nOpened ${url} in browser\n`);
190
+ }
191
+ catch (error) {
192
+ console.log(`\nCould not open browser automatically.`);
193
+ console.log(`Please open this URL manually: ${url}\n`);
194
+ }
195
+ });
196
+ program
197
+ .command("fetch <url>")
198
+ .description("Fetch content from a URL")
199
+ .option("-m, --method <method>", "HTTP method", "GET")
200
+ .option("-d, --data <data>", "Request body for POST/PUT")
201
+ .action(async (url, options) => {
202
+ const method = options.method || "GET";
203
+ console.log(`\nFetching ${url} (${method})...\n`);
204
+ try {
205
+ const response = await fetch(url, {
206
+ method,
207
+ headers: {
208
+ "User-Agent": "BraveCode-AI/1.0",
209
+ },
210
+ body: options.data,
211
+ });
212
+ const contentType = response.headers.get("content-type") || "";
213
+ let content;
214
+ if (contentType.includes("application/json")) {
215
+ const json = await response.json();
216
+ content = JSON.stringify(json, null, 2);
217
+ }
218
+ else {
219
+ content = await response.text();
220
+ }
221
+ console.log(`Status: ${response.status} ${response.statusText}`);
222
+ console.log(`Content-Type: ${contentType}\n`);
223
+ const truncated = content.length > 2000 ? content.substring(0, 2000) + "\n\n... (truncated)" : content;
224
+ console.log(truncated);
225
+ }
226
+ catch (error) {
227
+ console.log(`Error: ${error.message}`);
228
+ }
229
+ });
230
+ program
231
+ .command("init")
232
+ .description("Initialize BraveCode in current directory (creates AGENTS.md)")
233
+ .action(() => {
234
+ const config = getConfig();
235
+ const agensMd = join(process.cwd(), "AGENTS.md");
236
+ if (existsSync(agensMd)) {
237
+ console.log("AGENTS.md already exists. Use --force to overwrite.");
238
+ return;
239
+ }
240
+ const content = `# BraveCode AI - Agent Configuration
241
+
242
+ ## Project Instructions
243
+
244
+ ### Build System
245
+ - Run \`npm run build\` to compile
246
+ - Run \`npm test\` to test
247
+
248
+ ### Code Style
249
+ - Use TypeScript with strict mode
250
+ - Follow existing code patterns
251
+ - Add JSDoc comments for public APIs
252
+
253
+ ### Important Files
254
+ - \`src/\` - Source code
255
+ - \`package.json\` - Dependencies and scripts
256
+
257
+ ### Custom Rules
258
+ <!-- Add your project-specific rules here -->
259
+
260
+ ## Agents
261
+
262
+ ### Build Agent
263
+ - Full access to development tools
264
+ - Use for: code changes, file editing, command execution
265
+
266
+ ### Plan Agent
267
+ - Read-only analysis
268
+ - Use for: architecture decisions, code review
269
+
270
+ ### Debug Agent
271
+ - Specialized in troubleshooting
272
+ - Use for: bug fixes, error investigation
273
+
274
+ ### Testing Agent
275
+ - Test writing and execution
276
+ - Use for: test coverage, test maintenance
277
+
278
+ ### Security Agent
279
+ - Security auditing
280
+ - Use for: vulnerability assessment, security fixes
281
+ `;
282
+ writeFileSync(agensMd, content);
283
+ console.log("Created AGENTS.md");
284
+ console.log("Customize it with your project-specific instructions.");
285
+ const configPath = join(process.cwd(), ".bravecode", "config.json");
286
+ if (!existsSync(join(process.cwd(), ".bravecode"))) {
287
+ console.log("Config directory created at .bravecode/");
288
+ }
289
+ });
290
+ program
291
+ .command("config")
292
+ .description("View or set configuration")
293
+ .argument("[key]", "Config key (e.g., model.default)")
294
+ .argument("[value]", "Value to set")
295
+ .action((key, value) => {
296
+ const config = getConfig();
297
+ if (!key) {
298
+ const current = config.get();
299
+ console.log("Current configuration:\n");
300
+ console.log(JSON.stringify(current, null, 2));
301
+ return;
302
+ }
303
+ if (!value) {
304
+ const val = config.getNested(key);
305
+ console.log(`${key}: ${JSON.stringify(val, null, 2)}`);
306
+ return;
307
+ }
308
+ try {
309
+ const parsed = JSON.parse(value);
310
+ config.setNested(key, parsed);
311
+ }
312
+ catch {
313
+ config.setNested(key, value);
314
+ }
315
+ console.log(`Set ${key} = ${value}`);
316
+ });
317
+ program
318
+ .command("mcp")
319
+ .description("Manage MCP servers")
320
+ .argument("[action]", "Action: list, add, remove")
321
+ .argument("[args...]", "Additional arguments")
322
+ .action(async (action, args) => {
323
+ if (!action || action === "list") {
324
+ const config = getConfig();
325
+ const mcpServers = config.getNested("mcp.servers") || [];
326
+ console.log("MCP Servers:\n");
327
+ if (mcpServers.length === 0) {
328
+ console.log(" No MCP servers configured.");
329
+ }
330
+ else {
331
+ for (const server of mcpServers) {
332
+ console.log(` ${server.id}: ${server.name}`);
333
+ console.log(` Command: ${server.command}`);
334
+ console.log(` Enabled: ${server.enabled}`);
335
+ }
336
+ }
337
+ return;
338
+ }
339
+ if (action === "add" && args && args.length >= 2) {
340
+ const config = getConfig();
341
+ const servers = config.getNested("mcp.servers") || [];
342
+ const newServer = {
343
+ id: args[0],
344
+ name: args[1],
345
+ command: args[2] || args[0],
346
+ args: args.slice(3),
347
+ enabled: true,
348
+ };
349
+ servers.push(newServer);
350
+ config.setNested("mcp.servers", servers);
351
+ console.log(`Added MCP server: ${newServer.id}`);
352
+ return;
353
+ }
354
+ if (action === "remove" && args && args.length > 0) {
355
+ const config = getConfig();
356
+ const servers = config.getNested("mcp.servers") || [];
357
+ const filtered = servers.filter((s) => s.id !== args[0]);
358
+ config.setNested("mcp.servers", filtered);
359
+ console.log(`Removed MCP server: ${args[0]}`);
360
+ return;
361
+ }
362
+ console.log("Usage: bravecode mcp [list|add|remove] [args...]");
363
+ });
364
+ program
365
+ .command("plugins")
366
+ .description("List available plugins")
367
+ .action(async () => {
368
+ const { PluginManager } = await import("./core/plugin/index");
369
+ const manager = new PluginManager();
370
+ await manager.loadPlugins();
371
+ const plugins = manager.getAllPlugins();
372
+ console.log("Plugins:\n");
373
+ if (plugins.length === 0) {
374
+ console.log(" No plugins loaded.");
375
+ }
376
+ else {
377
+ for (const plugin of plugins) {
378
+ console.log(` ${plugin.config.name} v${plugin.config.version}`);
379
+ console.log(` ${plugin.config.description}`);
380
+ if (plugin.config.author) {
381
+ console.log(` Author: ${plugin.config.author}`);
382
+ }
383
+ }
384
+ }
385
+ });
386
+ program
387
+ .command("share")
388
+ .description("Share a conversation via URL")
389
+ .argument("[action]", "Action: create, list, delete")
390
+ .argument("[args...]", "Additional arguments")
391
+ .action(async (action, args) => {
392
+ const shareManager = new ShareManager();
393
+ if (!action || action === "list") {
394
+ const shares = shareManager.listShares();
395
+ console.log("Shared Conversations:\n");
396
+ if (shares.length === 0) {
397
+ console.log(" No shared conversations.");
398
+ }
399
+ else {
400
+ for (const share of shares) {
401
+ console.log(` ${share.id}: ${share.title}`);
402
+ console.log(` Created: ${new Date(share.createdAt).toLocaleString()}`);
403
+ console.log(` URL: ${shareManager.getShareUrl(share.id)}`);
404
+ }
405
+ }
406
+ return;
407
+ }
408
+ if (action === "create" && args && args.length >= 2) {
409
+ const title = args[0];
410
+ const content = args.slice(1).join(" ");
411
+ const messages = [
412
+ { role: "user", content, timestamp: new Date() },
413
+ ];
414
+ const share = shareManager.createShare(title, messages);
415
+ console.log(`Created share: ${share.id}`);
416
+ console.log(`URL: ${shareManager.getShareUrl(share.id)}`);
417
+ return;
418
+ }
419
+ if (action === "delete" && args && args.length > 0) {
420
+ if (shareManager.deleteShare(args[0])) {
421
+ console.log(`Deleted share: ${args[0]}`);
422
+ }
423
+ else {
424
+ console.log(`Share not found: ${args[0]}`);
425
+ }
426
+ return;
427
+ }
428
+ console.log("Usage: bravecode share [list|create|delete] [args...]");
429
+ });
430
+ program
431
+ .command("update")
432
+ .description("Check for and install updates")
433
+ .option("--check", "Check for updates only")
434
+ .action(async (options) => {
435
+ const updateChecker = new UpdateChecker();
436
+ console.log("Checking for updates...\n");
437
+ const info = await updateChecker.checkForUpdates(true);
438
+ console.log(`Current version: ${info.currentVersion}`);
439
+ console.log(`Latest version: ${info.latestVersion}`);
440
+ if (info.updateAvailable) {
441
+ console.log("\n✓ Update available!\n");
442
+ if (options.check) {
443
+ console.log("Run 'bravecode update' to install.");
444
+ return;
445
+ }
446
+ const result = await updateChecker.update();
447
+ if (result.success) {
448
+ console.log(result.message);
449
+ }
450
+ else {
451
+ console.log(`Error: ${result.message}`);
452
+ }
453
+ }
454
+ else {
455
+ console.log("\n✓ You're up to date!");
456
+ }
457
+ });
458
+ program.parse();
459
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}