bravecode-cli 0.1.6 → 0.1.8

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.cjs CHANGED
@@ -40727,41 +40727,58 @@ async function startSimpleTUI(model, agentId) {
40727
40727
  model: modelName
40728
40728
  });
40729
40729
  const termWidth = process.stdout.columns || 80;
40730
- console.clear();
40730
+ const termHeight = process.stdout.rows || 24;
40731
+ process.stdout.write("\x1B[2J");
40732
+ process.stdout.write("\x1B[H");
40733
+ process.stdout.write("\x1B[?25l");
40731
40734
  const bannerLines = BANNER.trim().split("\n");
40735
+ const bannerHeight = bannerLines.length;
40736
+ const inputBoxHeight = 4;
40737
+ const modelInfoHeight = 2;
40738
+ const hintsHeight = 1;
40739
+ const totalContentHeight = bannerHeight + inputBoxHeight + modelInfoHeight + hintsHeight + 4;
40740
+ const topPadding = Math.max(0, Math.floor((termHeight - totalContentHeight) / 2));
40741
+ for (let i = 0; i < topPadding; i++) {
40742
+ process.stdout.write("\n");
40743
+ }
40732
40744
  const maxBannerWidth = Math.max(...bannerLines.map((l) => l.length));
40733
40745
  const bannerPadding = Math.max(0, Math.floor((termWidth - maxBannerWidth) / 2));
40734
- console.log("\n".repeat(3));
40735
40746
  for (const line of bannerLines) {
40736
- console.log(" ".repeat(bannerPadding) + "\x1B[1m\x1B[37m" + line + "\x1B[0m");
40747
+ process.stdout.write(" ".repeat(bannerPadding) + "\x1B[1m\x1B[38;5;251m" + line + "\x1B[0m\n");
40737
40748
  }
40738
- console.log("\n".repeat(2));
40749
+ process.stdout.write("\n\n");
40739
40750
  const boxWidth = Math.min(60, termWidth - 4);
40740
40751
  const boxPadding = Math.max(0, Math.floor((termWidth - boxWidth) / 2));
40741
- console.log(" ".repeat(boxPadding) + "\x1B[90m\u250C" + "\u2500".repeat(boxWidth - 2) + "\u2510\x1B[0m");
40742
- console.log(
40743
- " ".repeat(boxPadding) + '\x1B[90m\u2502\x1B[0m \x1B[90mAsk anything... "What is the tech stack of this project?"\x1B[0m' + " ".repeat(Math.max(0, boxWidth - 48)) + "\x1B[90m\u2502\x1B[0m"
40752
+ process.stdout.write(" ".repeat(boxPadding) + "\x1B[38;5;238m\u250C" + "\u2500".repeat(boxWidth - 2) + "\u2510\x1B[0m\n");
40753
+ process.stdout.write(
40754
+ " ".repeat(boxPadding) + '\x1B[38;5;238m\u2502\x1B[0m \x1B[38;5;245mAsk anything... "What is the tech stack of this project?"\x1B[0m' + " ".repeat(Math.max(0, boxWidth - 50)) + "\x1B[38;5;238m\u2502\x1B[0m\n"
40744
40755
  );
40745
- console.log(" ".repeat(boxPadding) + "\x1B[90m\u2514" + "\u2500".repeat(boxWidth - 2) + "\u2518\x1B[0m");
40746
- console.log("");
40747
- console.log(
40748
- " ".repeat(boxPadding) + "\x1B[36m" + agentName + "\x1B[0m \x1B[90m\xB7\x1B[0m \x1B[37m" + modelName + "\x1B[0m"
40756
+ process.stdout.write(" ".repeat(boxPadding) + "\x1B[38;5;238m\u2514" + "\u2500".repeat(boxWidth - 2) + "\u2518\x1B[0m\n");
40757
+ process.stdout.write("\n");
40758
+ const modelInfo = `\x1B[36m${agentName}\x1B[0m \x1B[38;5;238m\xB7\x1B[0m \x1B[37m${modelName}\x1B[0m \x1B[38;5;240mBraveCode AI\x1B[0m`;
40759
+ const modelInfoWidth = agentName.length + modelName.length + 14;
40760
+ const modelInfoPadding = Math.max(0, Math.floor((termWidth - modelInfoWidth) / 2));
40761
+ process.stdout.write(" ".repeat(modelInfoPadding) + modelInfo + "\n");
40762
+ process.stdout.write("\n");
40763
+ const hints = "\x1B[38;5;240mtab agents ctrl+p commands\x1B[0m";
40764
+ const hintsPadding = Math.max(0, Math.floor((termWidth - 30) / 2));
40765
+ process.stdout.write(" ".repeat(hintsPadding) + hints + "\n\n");
40766
+ process.stdout.write("\x1B[?25h");
40767
+ process.stdout.write("\x1B[38;5;238m" + "\u2500".repeat(termWidth) + "\x1B[0m\n");
40768
+ process.stdout.write(
40769
+ "\x1B[38;5;240m" + process.cwd().replace(/^\/home\/[^/]+/, "~") + " \x1B[32m\u25CF\x1B[0m 0 MCP /status" + " ".repeat(Math.max(0, termWidth - 50)) + "0.1.0\x1B[0m"
40749
40770
  );
40750
- console.log("");
40751
- console.log(" ".repeat(boxPadding) + "\x1B[90mtab agents ctrl+p commands\x1B[0m");
40752
- console.log("\n");
40753
40771
  const rl = readline.createInterface({
40754
40772
  input: process.stdin,
40755
40773
  output: process.stdout
40756
40774
  });
40757
- if (process.stdin.isTTY) {
40758
- process.stdin.setRawMode(true);
40759
- }
40760
40775
  const prompt = () => {
40761
40776
  rl.question("\x1B[36m>\x1B[0m ", async (input) => {
40762
40777
  const trimmed = input.trim();
40763
40778
  if (trimmed === "exit" || trimmed === "quit") {
40764
- console.log("\n\x1B[90mGoodbye!\x1B[0m");
40779
+ process.stdout.write("\x1B[?25l");
40780
+ console.log("\n\x1B[38;5;240mGoodbye!\x1B[0m");
40781
+ process.stdout.write("\x1B[?25h");
40765
40782
  rl.close();
40766
40783
  process.exit(0);
40767
40784
  }
@@ -40769,7 +40786,11 @@ async function startSimpleTUI(model, agentId) {
40769
40786
  prompt();
40770
40787
  return;
40771
40788
  }
40772
- console.log("\x1B[90m" + trimmed + "\x1B[0m\n");
40789
+ process.stdout.write("\x1B[2J");
40790
+ process.stdout.write("\x1B[H");
40791
+ console.log("\x1B[38;5;240m" + trimmed + "\x1B[0m\n");
40792
+ console.log(`\x1B[36m\u25A0 ${agentName}\x1B[0m \x1B[38;5;238m\xB7\x1B[0m \x1B[37m${modelName}\x1B[0m
40793
+ `);
40773
40794
  try {
40774
40795
  let response = "";
40775
40796
  await agent.run(trimmed, (chunk) => {
@@ -40782,11 +40803,20 @@ async function startSimpleTUI(model, agentId) {
40782
40803
  \x1B[31mError: ${error40.message}\x1B[0m
40783
40804
  `);
40784
40805
  }
40806
+ process.stdout.write("\n");
40807
+ process.stdout.write(" ".repeat(boxPadding) + "\x1B[38;5;238m\u250C" + "\u2500".repeat(boxWidth - 2) + "\u2510\x1B[0m\n");
40808
+ process.stdout.write(
40809
+ " ".repeat(boxPadding) + '\x1B[38;5;238m\u2502\x1B[0m \x1B[38;5;245mAsk anything... "What is the tech stack of this project?"\x1B[0m' + " ".repeat(Math.max(0, boxWidth - 50)) + "\x1B[38;5;238m\u2502\x1B[0m\n"
40810
+ );
40811
+ process.stdout.write(" ".repeat(boxPadding) + "\x1B[38;5;238m\u2514" + "\u2500".repeat(boxWidth - 2) + "\u2518\x1B[0m\n");
40812
+ process.stdout.write("\n");
40785
40813
  prompt();
40786
40814
  });
40787
40815
  };
40788
40816
  rl.on("SIGINT", () => {
40789
- console.log("\n\x1B[90mGoodbye!\x1B[0m");
40817
+ process.stdout.write("\x1B[?25l");
40818
+ console.log("\n\x1B[38;5;240mGoodbye!\x1B[0m");
40819
+ process.stdout.write("\x1B[?25h");
40790
40820
  rl.close();
40791
40821
  process.exit(0);
40792
40822
  });
@@ -40801,11 +40831,12 @@ var init_simple_tui = __esm({
40801
40831
  init_tool();
40802
40832
  init_agent();
40803
40833
  BANNER = `
40804
- ____ _ _____________
40805
- / __ )________ ____ ___ ____| | / /__ /__ /
40806
- / __ / ___/ _ \\/ __ \\/ __ \\/ |/ / / /_ / / /
40807
- / /_/ / / / __/ /_/ / / / /| / / __/ / / /_
40808
- /_____/_/ \\___/\\____/_/ /_/_/|_/ /____/ /____/
40834
+ \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2557 \u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557
40835
+ \u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\u2588\u2588\u2554\u2550\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D
40836
+ \u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557
40837
+ \u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2550\u255D \u2588\u2588\u2554\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2588\u2588\u2551
40838
+ \u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2551 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2551\u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2551
40839
+ \u255A\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u255D\u255A\u2550\u255D \u255A\u2550\u255D\u255A\u2550\u255D \u255A\u2550\u255D\u255A\u2550\u255D\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D
40809
40840
  `;
40810
40841
  }
40811
40842
  });
@@ -41432,11 +41463,12 @@ var import_fs9 = require("fs");
41432
41463
  var import_path7 = require("path");
41433
41464
  var program2 = new Command();
41434
41465
  var BANNER2 = `
41435
- ____ _ _____________
41436
- / __ )________ ____ ___ ____| | / /__ /__ /
41437
- / __ / ___/ _ \\/ __ \\/ __ \\/ |/ / / /_ / / /
41438
- / /_/ / / / __/ /_/ / / / /| / / __/ / / /_
41439
- /_____/_/ \\___/\\____/_/ /_/_/|_/ /____/ /____/
41466
+ \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2557 \u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557
41467
+ \u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\u2588\u2588\u2554\u2550\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D
41468
+ \u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557
41469
+ \u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2550\u255D \u2588\u2588\u2554\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2588\u2588\u2551
41470
+ \u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2551 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2551\u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2551
41471
+ \u255A\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u255D\u255A\u2550\u255D \u255A\u2550\u255D\u255A\u2550\u255D \u255A\u2550\u255D\u255A\u2550\u255D\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D
41440
41472
  `;
41441
41473
  program2.name("bravecode").description("BraveCode AI - Agentic AI Vibe Coding CLI with free model support").version("0.1.2").action(async () => {
41442
41474
  console.log(BANNER2);