bravecode-cli 0.1.7 → 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,29 +40727,47 @@ 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(2));
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
@@ -40758,7 +40776,9 @@ async function startSimpleTUI(model, agentId) {
40758
40776
  rl.question("\x1B[36m>\x1B[0m ", async (input) => {
40759
40777
  const trimmed = input.trim();
40760
40778
  if (trimmed === "exit" || trimmed === "quit") {
40761
- 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");
40762
40782
  rl.close();
40763
40783
  process.exit(0);
40764
40784
  }
@@ -40766,7 +40786,11 @@ async function startSimpleTUI(model, agentId) {
40766
40786
  prompt();
40767
40787
  return;
40768
40788
  }
40769
- 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
+ `);
40770
40794
  try {
40771
40795
  let response = "";
40772
40796
  await agent.run(trimmed, (chunk) => {
@@ -40779,11 +40803,20 @@ async function startSimpleTUI(model, agentId) {
40779
40803
  \x1B[31mError: ${error40.message}\x1B[0m
40780
40804
  `);
40781
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");
40782
40813
  prompt();
40783
40814
  });
40784
40815
  };
40785
40816
  rl.on("SIGINT", () => {
40786
- 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");
40787
40820
  rl.close();
40788
40821
  process.exit(0);
40789
40822
  });
@@ -40798,11 +40831,12 @@ var init_simple_tui = __esm({
40798
40831
  init_tool();
40799
40832
  init_agent();
40800
40833
  BANNER = `
40801
- ____ _ __ __ ____ _ __
40802
- | __ ) _ __ _____ _(_)___/ /__ / / | __ )_ __(_)___ ____ _/ /_____ _____
40803
- | _ \\| '__/ _ \\ \\ / / / __/ //_/ / / | _ \\| '__/ __ \\ / __ \`/ __/ __ \\/ ___/
40804
- | |_) | | | (_) \\ V / / /__/ , < / / | |_) | | | / / / / /_/ / /_/ /_/ / /
40805
- |____/|_| \\___/ \\_/_/\\___/_/|_| /_/ |____/|_| /_/ /_/\\__,_/\\__/\\____/_/
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
40806
40840
  `;
40807
40841
  }
40808
40842
  });
@@ -41429,11 +41463,12 @@ var import_fs9 = require("fs");
41429
41463
  var import_path7 = require("path");
41430
41464
  var program2 = new Command();
41431
41465
  var BANNER2 = `
41432
- ____ _ __ __ ____ _ __
41433
- | __ ) _ __ _____ _(_)___/ /__ / / | __ )_ __(_)___ ____ _/ /_____ _____
41434
- | _ \\| '__/ _ \\ \\ / / / __/ //_/ / / | _ \\| '__/ __ \\ / __ \`/ __/ __ \\/ ___/
41435
- | |_) | | | (_) \\ V / / /__/ , < / / | |_) | | | / / / / /_/ / /_/ /_/ / /
41436
- |____/|_| \\___/ \\_/_/\\___/_/|_| /_/ |____/|_| /_/ /_/\\__,_/\\__/\\____/_/
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
41437
41472
  `;
41438
41473
  program2.name("bravecode").description("BraveCode AI - Agentic AI Vibe Coding CLI with free model support").version("0.1.2").action(async () => {
41439
41474
  console.log(BANNER2);