open-agents-ai 0.138.4 → 0.138.6

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 (2) hide show
  1. package/dist/index.js +42 -11
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -40611,7 +40611,9 @@ async function handleSlashCommand(input, ctx) {
40611
40611
  await handleUpdate(arg, ctx);
40612
40612
  return "handled";
40613
40613
  case "voice": {
40614
- const save = hasLocal ? ctx.saveLocalSettings.bind(ctx) : ctx.saveSettings.bind(ctx);
40614
+ const save = (settings) => {
40615
+ ctx.saveSettings(settings);
40616
+ };
40615
40617
  if (arg) {
40616
40618
  if (arg === "enable" || arg === "on") {
40617
40619
  const msg2 = await ctx.voiceToggle();
@@ -51581,13 +51583,23 @@ var init_status_bar = __esm({
51581
51583
  this._contentScrollOffset = 0;
51582
51584
  this.repaintContent();
51583
51585
  }
51584
- /** Repaint content area from buffer at current scroll position.
51585
- * Uses direct cursor positioning (btop-style) no DECSTBM scrolling. */
51586
+ /**
51587
+ * Repaint content area from buffer at current scroll position.
51588
+ *
51589
+ * btop-style: every line is positioned with Mv::to(row, col) — no DECSTBM.
51590
+ * Wrapped in synchronized output (?2026h/?2026l) to prevent flicker.
51591
+ * Single atomic process.stdout.write() call for the entire frame.
51592
+ *
51593
+ * Reference: btop_draw.cpp lines 2080-2102 — process list rendering.
51594
+ */
51586
51595
  repaintContent() {
51587
51596
  const h = this.contentHeight;
51588
51597
  const totalLines = this._contentLines.length;
51589
51598
  const startIdx = Math.max(0, totalLines - h - this._contentScrollOffset);
51590
- let buf = "\x1B7\x1B[?25l";
51599
+ const w = process.stdout.columns ?? 80;
51600
+ let buf = "\x1B[?2026h";
51601
+ buf += "\x1B7";
51602
+ buf += "\x1B[?25l";
51591
51603
  for (let row = 0; row < h; row++) {
51592
51604
  const lineIdx = startIdx + row;
51593
51605
  const line = lineIdx < totalLines ? this._contentLines[lineIdx] : "";
@@ -51595,10 +51607,15 @@ var init_status_bar = __esm({
51595
51607
  buf += `\x1B[${screenRow};1H\x1B[2K${line}`;
51596
51608
  }
51597
51609
  if (this._contentScrollOffset > 0) {
51598
- const linesAbove = Math.max(0, totalLines - h - this._contentScrollOffset);
51599
- buf += `\x1B[${this.scrollRegionTop};1H\x1B[7m \u2191 ${linesAbove} lines above (PgDn/End to return) \x1B[0m`;
51610
+ const linesAbove = startIdx;
51611
+ const pct = totalLines > 0 ? Math.round((startIdx + h) / totalLines * 100) : 100;
51612
+ const indicator = ` \u2191 ${linesAbove} lines above \xB7 ${pct}% \xB7 PgDn/End to return `;
51613
+ const pad = Math.max(0, w - indicator.length);
51614
+ buf += `\x1B[${this.scrollRegionTop};1H\x1B[7m${indicator}${" ".repeat(pad)}\x1B[0m`;
51600
51615
  }
51601
- buf += "\x1B8\x1B[?25h";
51616
+ buf += "\x1B8";
51617
+ buf += "\x1B[?25h";
51618
+ buf += "\x1B[?2026l";
51602
51619
  process.stdout.write(buf);
51603
51620
  }
51604
51621
  /**
@@ -53463,10 +53480,24 @@ async function startInteractive(config, repoPath) {
53463
53480
  let carouselLines = 0;
53464
53481
  const version = getVersion3();
53465
53482
  if (isResumed) {
53466
- process.stdout.write("\r\x1B[K");
53467
- const resumeMsg = hasTaskToResume ? `Updated to v${version} \u2014 picking up where you left off.
53468
- ` : `Updated to v${version}.
53469
- `;
53483
+ if (process.stdout.isTTY) {
53484
+ process.stdout.write("\x1B[?1049h\x1B[2J\x1B[H");
53485
+ const restoreScreen = () => {
53486
+ process.stdout.write("\x1B[?25h\x1B[?1049l");
53487
+ };
53488
+ process.on("exit", restoreScreen);
53489
+ process.on("SIGINT", () => {
53490
+ restoreScreen();
53491
+ process.exit(130);
53492
+ });
53493
+ process.on("SIGTERM", () => {
53494
+ restoreScreen();
53495
+ process.exit(143);
53496
+ });
53497
+ }
53498
+ banner.setDesign(createDefaultBanner(version));
53499
+ carouselLines = banner.start();
53500
+ const resumeMsg = hasTaskToResume ? `Updated to v${version} \u2014 picking up where you left off.` : `Updated to v${version}.`;
53470
53501
  renderInfo(resumeMsg);
53471
53502
  } else {
53472
53503
  process.stdout.write("\x1B[H");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "open-agents-ai",
3
- "version": "0.138.4",
3
+ "version": "0.138.6",
4
4
  "description": "AI coding agent powered by open-source models (Ollama/vLLM) — interactive TUI with agentic tool-calling loop",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",