open-agents-ai 0.138.24 → 0.138.26

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 +37 -22
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -36600,7 +36600,7 @@ function tuiSelect(opts) {
36600
36600
  }
36601
36601
  stdin.resume();
36602
36602
  enterOverlay();
36603
- overlayWrite("\x1B[?1049h\x1B[2J\x1B[H\x1B[?25l");
36603
+ overlayWrite("\x1B[?1049h\x1B[48;5;234m\x1B[2J\x1B[H\x1B[?25l");
36604
36604
  function clampScroll(displayList) {
36605
36605
  const cursorPos = displayList.indexOf(cursor);
36606
36606
  if (cursorPos < 0)
@@ -36614,7 +36614,7 @@ function tuiSelect(opts) {
36614
36614
  scrollOffset = Math.max(0, Math.min(maxOffset, scrollOffset));
36615
36615
  }
36616
36616
  function render() {
36617
- overlayWrite("\x1B[H\x1B[2J");
36617
+ overlayWrite("\x1B[48;5;234m\x1B[H\x1B[2J");
36618
36618
  const lines = [];
36619
36619
  if (title) {
36620
36620
  lines.push(`
@@ -36687,8 +36687,8 @@ function tuiSelect(opts) {
36687
36687
  lines.push(` ${selectColors.dim("\u2191/\u2193 navigate Enter select" + actionHint + deleteHint + customHint + " Esc " + (filter ? "clear filter" : "cancel") + " Type to filter")}`);
36688
36688
  }
36689
36689
  lines.push("");
36690
- const output = lines.join("\n");
36691
- overlayWrite(output);
36690
+ const output = lines.join("\n").replace(/\x1B\[0m/g, "\x1B[0m\x1B[48;5;234m");
36691
+ overlayWrite("\x1B[48;5;234m" + output);
36692
36692
  lastRenderedLines = lines.length;
36693
36693
  }
36694
36694
  function cleanup() {
@@ -51308,6 +51308,10 @@ var init_status_bar = __esm({
51308
51308
  get isActive() {
51309
51309
  return this.active;
51310
51310
  }
51311
+ /** Whether content is currently being streamed (writeDepth > 0) */
51312
+ get isStreaming() {
51313
+ return this.writeDepth > 0;
51314
+ }
51311
51315
  /** Set/get COHERE participation state — shows 🌐 in metrics when active */
51312
51316
  setCohereActive(active) {
51313
51317
  this._cohereActive = active;
@@ -51391,13 +51395,13 @@ var init_status_bar = __esm({
51391
51395
  for (let row = clearStart; row <= rows; row++) {
51392
51396
  buf += `\x1B[${row};1H\x1B[2K`;
51393
51397
  }
51394
- buf += `\x1B[${pos.bufferRow};1H${PANEL_BG_SEQ}\x1B[2K${this.buildBufferContent(w)}${RESET}\x1B[${pos.topSepRow};1H${PANEL_BG_SEQ}\x1B[2K${RESET}`;
51395
51398
  for (let i = 0; i < inputWrap.lines.length; i++) {
51396
51399
  const row = pos.inputStartRow + i;
51397
51400
  const prefix = i === 0 ? this.promptText : " ".repeat(this.promptWidth);
51398
- buf += `\x1B[${row};1H${prefix}${inputWrap.lines[i]}`;
51401
+ buf += `\x1B[${row};1H${PANEL_BG_SEQ}\x1B[2K${prefix}${inputWrap.lines[i]}${RESET}`;
51399
51402
  }
51400
- buf += `\x1B[${pos.bottomSepRow};1H${PANEL_BG_SEQ}\x1B[2K${RESET}\x1B[${pos.metricsRow};1H${PANEL_BG_SEQ}\x1B[2K${this.buildMetricsLine()}${RESET}\x1B[?7h\x1B[${pos.scrollEnd};1H`;
51403
+ buf += `\x1B[${pos.bufferRow};1H${PANEL_BG_SEQ}\x1B[2K${this.buildBufferContent(w)}${RESET}`;
51404
+ buf += `\x1B[${pos.metricsRow};1H${PANEL_BG_SEQ}\x1B[2K${this.buildMetricsLine()}${RESET}\x1B[?7h\x1B[${pos.scrollEnd};1H`;
51401
51405
  process.stdout.write(buf);
51402
51406
  } else {
51403
51407
  this.applyScrollRegion();
@@ -51902,7 +51906,7 @@ ${CONTENT_BG_SEQ}`);
51902
51906
  /** Update _currentFooterHeight based on current input. Returns true if height changed. */
51903
51907
  updateFooterHeight(termWidth) {
51904
51908
  const inputLines = this.computeInputLineCount(termWidth);
51905
- const newHeight = 4 + inputLines;
51909
+ const newHeight = 2 + inputLines;
51906
51910
  if (newHeight !== this._currentFooterHeight) {
51907
51911
  this._currentFooterHeight = newHeight;
51908
51912
  return true;
@@ -51912,18 +51916,25 @@ ${CONTENT_BG_SEQ}`);
51912
51916
  /** Check if footer height would change, WITHOUT actually updating it */
51913
51917
  footerHeightChanged(termWidth) {
51914
51918
  const inputLines = this.computeInputLineCount(termWidth);
51915
- return 4 + inputLines !== this._currentFooterHeight;
51919
+ return 2 + inputLines !== this._currentFooterHeight;
51916
51920
  }
51917
- /** Compute absolute row positions for all footer elements */
51921
+ /** Compute absolute row positions for all footer elements.
51922
+ * New layout (top to bottom): input → braille → metrics.
51923
+ * No separator lines, no blank rows. */
51918
51924
  rowPositions(rows) {
51919
51925
  const fh = this._currentFooterHeight;
51926
+ const inputLines = fh - 2;
51920
51927
  return {
51921
51928
  scrollEnd: Math.max(rows - fh, this.scrollRegionTop + 1),
51922
- bufferRow: rows - fh + 1,
51923
- topSepRow: rows - fh + 2,
51924
- inputStartRow: rows - fh + 3,
51925
- bottomSepRow: rows - 1,
51926
- metricsRow: rows
51929
+ inputStartRow: rows - fh + 1,
51930
+ // input at TOP of footer
51931
+ bufferRow: rows - fh + 1 + inputLines,
51932
+ // braille below input
51933
+ metricsRow: rows,
51934
+ // metrics at BOTTOM
51935
+ // Legacy (unused but keeps TS happy for any remaining refs)
51936
+ topSepRow: -1,
51937
+ bottomSepRow: -1
51927
51938
  };
51928
51939
  }
51929
51940
  /**
@@ -52020,14 +52031,16 @@ ${CONTENT_BG_SEQ}`);
52020
52031
  }
52021
52032
  }
52022
52033
  const inputWrap = this.wrapInput(w);
52023
- let buf = `\x1B[?7l\x1B[${pos.bufferRow};1H${PANEL_BG_SEQ}\x1B[2K${this.buildBufferContent(w)}${RESET}\x1B[${pos.topSepRow};1H${PANEL_BG_SEQ}\x1B[2K${RESET}`;
52034
+ let buf = "\x1B[?7l";
52024
52035
  for (let i = 0; i < inputWrap.lines.length; i++) {
52025
52036
  const row = pos.inputStartRow + i;
52026
52037
  const prefix = i === 0 ? this.promptText : " ".repeat(this.promptWidth);
52027
52038
  buf += `\x1B[${row};1H${PANEL_BG_SEQ}\x1B[2K${prefix}${inputWrap.lines[i]}${RESET}`;
52028
52039
  }
52029
52040
  const cursorTermRow = pos.inputStartRow + inputWrap.cursorRow;
52030
- buf += `\x1B[${pos.bottomSepRow};1H${PANEL_BG_SEQ}\x1B[2K${RESET}\x1B[${pos.metricsRow};1H${PANEL_BG_SEQ}\x1B[2K${this.buildMetricsLine()}${RESET}\x1B[?7h\x1B[${cursorTermRow};${inputWrap.cursorCol}H\x1B[?25h`;
52041
+ buf += `\x1B[${pos.bufferRow};1H${PANEL_BG_SEQ}\x1B[2K${this.buildBufferContent(w)}${RESET}`;
52042
+ buf += `\x1B[${pos.metricsRow};1H${PANEL_BG_SEQ}\x1B[2K${this.buildMetricsLine()}${RESET}`;
52043
+ buf += `\x1B[?7h\x1B[${cursorTermRow};${inputWrap.cursorCol}H\x1B[?25h`;
52031
52044
  process.stdout.write(buf);
52032
52045
  }
52033
52046
  /**
@@ -52054,7 +52067,7 @@ ${CONTENT_BG_SEQ}`);
52054
52067
  const rows = process.stdout.rows ?? 24;
52055
52068
  const w = getTermWidth();
52056
52069
  const pos = this.rowPositions(rows);
52057
- const buf = `\x1B7\x1B[?7l\x1B[${pos.bufferRow};1H${PANEL_BG_SEQ}\x1B[2K${this.buildBufferContent(w)}${RESET}\x1B[${pos.topSepRow};1H${PANEL_BG_SEQ}\x1B[2K${RESET}\x1B[${pos.bottomSepRow};1H${PANEL_BG_SEQ}\x1B[2K${RESET}\x1B[${pos.metricsRow};1H${PANEL_BG_SEQ}\x1B[2K${this.buildMetricsLine()}${RESET}\x1B[?7h\x1B8` + // DEC restore cursor
52070
+ const buf = `\x1B7\x1B[?7l\x1B[${pos.bufferRow};1H${PANEL_BG_SEQ}\x1B[2K${this.buildBufferContent(w)}${RESET}\x1B[${pos.metricsRow};1H${PANEL_BG_SEQ}\x1B[2K${this.buildMetricsLine()}${RESET}\x1B[?7h\x1B8` + // DEC restore cursor
52058
52071
  (this.writeDepth === 0 ? "\x1B[?25h" : "");
52059
52072
  process.stdout.write(buf);
52060
52073
  }
@@ -52089,14 +52102,12 @@ ${CONTENT_BG_SEQ}`);
52089
52102
  buf += "\x1BM";
52090
52103
  }
52091
52104
  buf += "\x1B[?7l";
52092
- buf += `\x1B[${pos.bufferRow};1H${PANEL_BG_SEQ}\x1B[2K${this.buildBufferContent(w)}${RESET}`;
52093
- buf += `\x1B[${pos.topSepRow};1H${PANEL_BG_SEQ}\x1B[2K${RESET}`;
52094
52105
  for (let i = 0; i < inputWrap.lines.length; i++) {
52095
52106
  const row = pos.inputStartRow + i;
52096
52107
  const prefix = i === 0 ? this.promptText : " ".repeat(this.promptWidth);
52097
52108
  buf += `\x1B[${row};1H${PANEL_BG_SEQ}\x1B[2K${prefix}${inputWrap.lines[i]}${RESET}`;
52098
52109
  }
52099
- buf += `\x1B[${pos.bottomSepRow};1H${PANEL_BG_SEQ}\x1B[2K${RESET}`;
52110
+ buf += `\x1B[${pos.bufferRow};1H${PANEL_BG_SEQ}\x1B[2K${this.buildBufferContent(w)}${RESET}`;
52100
52111
  buf += `\x1B[${pos.metricsRow};1H${PANEL_BG_SEQ}\x1B[2K${this.buildMetricsLine()}${RESET}`;
52101
52112
  buf += "\x1B[?7h";
52102
52113
  buf += "\x1B8";
@@ -53668,10 +53679,14 @@ async function startInteractive(config, repoPath) {
53668
53679
  checkForUpdate(version).then((updateInfo) => {
53669
53680
  if (updateInfo) {
53670
53681
  const writeMsg = () => {
53682
+ if (statusBar?.isActive && statusBar.isStreaming) {
53683
+ setTimeout(writeMsg, 3e3);
53684
+ return;
53685
+ }
53671
53686
  if (statusBar?.isActive)
53672
53687
  statusBar.beginContentWrite();
53673
53688
  renderWarning(`Update available: v${updateInfo.currentVersion} \u2192 v${c2.bold(c2.green(updateInfo.latestVersion))}`);
53674
- renderInfo(`Run /update to install now, or it will auto-install after your next task.`);
53689
+ renderInfo(`Run /update to install.`);
53675
53690
  if (statusBar?.isActive)
53676
53691
  statusBar.endContentWrite();
53677
53692
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "open-agents-ai",
3
- "version": "0.138.24",
3
+ "version": "0.138.26",
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",