open-agents-ai 0.187.212 → 0.187.213

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 +65 -6
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -288486,6 +288486,7 @@ __export(tui_tasks_renderer_exports, {
288486
288486
  getTuiTasksScope: () => getTuiTasksScope,
288487
288487
  onTuiTasksHeightChange: () => onTuiTasksHeightChange,
288488
288488
  refreshTuiTasks: () => refreshTuiTasks,
288489
+ refreshTuiTasksSync: () => refreshTuiTasksSync,
288489
288490
  setTuiTasksEnabled: () => setTuiTasksEnabled,
288490
288491
  setTuiTasksScope: () => setTuiTasksScope,
288491
288492
  setTuiTasksSession: () => setTuiTasksSession,
@@ -288546,6 +288547,7 @@ function setTuiTasksScope(scope) {
288546
288547
  }
288547
288548
  if (changed) {
288548
288549
  if (!panelEffectivelyVisible()) {
288550
+ clearLastPaintedRows();
288549
288551
  applyHeightChange(0);
288550
288552
  } else {
288551
288553
  scheduleRedraw();
@@ -288566,6 +288568,13 @@ function refreshTuiTasks() {
288566
288568
  loadTodos();
288567
288569
  scheduleRedraw();
288568
288570
  }
288571
+ function refreshTuiTasksSync() {
288572
+ if (!_activeSessionId) return;
288573
+ loadTodos();
288574
+ if (!_enabled) return;
288575
+ _redrawScheduled = false;
288576
+ render();
288577
+ }
288569
288578
  function teardownTuiTasks() {
288570
288579
  if (_watcher) {
288571
288580
  try {
@@ -288653,12 +288662,16 @@ function truncate2(s2, max) {
288653
288662
  function render() {
288654
288663
  if (!_enabled) return;
288655
288664
  if (!panelEffectivelyVisible()) {
288665
+ clearLastPaintedRows();
288656
288666
  applyHeightChange(0);
288657
288667
  return;
288658
288668
  }
288659
288669
  const target = computeTargetHeight();
288660
288670
  applyHeightChange(target);
288661
- if (target === 0) return;
288671
+ if (target === 0) {
288672
+ clearLastPaintedRows();
288673
+ return;
288674
+ }
288662
288675
  const L = layout();
288663
288676
  const cols = Math.max(20, termCols());
288664
288677
  const completed = _lastTodos.filter((t2) => t2.status === "completed").length;
@@ -288680,6 +288693,14 @@ function render() {
288680
288693
  lines[lines.length - 1] = `${DIM_LABEL}… +${more} more${RESET}`;
288681
288694
  }
288682
288695
  let out = HIDE + SAVE;
288696
+ const newTop = L.tasksTop;
288697
+ const newBottom = Math.min(L.tasksBottom, L.tasksTop + lines.length - 1);
288698
+ if (_lastPaintedTop >= 0 && _lastPaintedBottom >= _lastPaintedTop) {
288699
+ for (let row = _lastPaintedTop; row <= _lastPaintedBottom; row++) {
288700
+ if (row >= newTop && row <= newBottom) continue;
288701
+ out += `\x1B[${row};1H${CLEAR_LINE}`;
288702
+ }
288703
+ }
288683
288704
  for (let i2 = 0; i2 < lines.length; i2++) {
288684
288705
  const row = L.tasksTop + i2;
288685
288706
  if (row > L.tasksBottom) break;
@@ -288690,8 +288711,24 @@ function render() {
288690
288711
  process.stdout.write(out);
288691
288712
  } catch {
288692
288713
  }
288714
+ _lastPaintedTop = newTop;
288715
+ _lastPaintedBottom = newBottom;
288716
+ }
288717
+ function clearLastPaintedRows() {
288718
+ if (_lastPaintedTop < 0 || _lastPaintedBottom < _lastPaintedTop) return;
288719
+ let out = HIDE + SAVE;
288720
+ for (let row = _lastPaintedTop; row <= _lastPaintedBottom; row++) {
288721
+ out += `\x1B[${row};1H${CLEAR_LINE}`;
288722
+ }
288723
+ out += RESTORE + SHOW;
288724
+ try {
288725
+ process.stdout.write(out);
288726
+ } catch {
288727
+ }
288728
+ _lastPaintedTop = -1;
288729
+ _lastPaintedBottom = -1;
288693
288730
  }
288694
- var _activeSessionId, _watcher, _lastTodos, _enabled, _redrawScheduled, _onResizeChange, _scopeOverlayActive, _scopeMainViewActive, _scopeNeovimActive, MAX_VISIBLE_ROWS, SAVE, RESTORE, HIDE, SHOW, CLEAR_LINE, RESET, BG, DIM_LABEL, GOLD, GREEN, MUTED_GREEN, GREY, RED;
288731
+ var _activeSessionId, _watcher, _lastTodos, _enabled, _redrawScheduled, _onResizeChange, _scopeOverlayActive, _scopeMainViewActive, _scopeNeovimActive, _lastPaintedTop, _lastPaintedBottom, MAX_VISIBLE_ROWS, SAVE, RESTORE, HIDE, SHOW, CLEAR_LINE, RESET, BG, DIM_LABEL, GOLD, GREEN, MUTED_GREEN, GREY, RED;
288695
288732
  var init_tui_tasks_renderer = __esm({
288696
288733
  "packages/cli/src/tui/tui-tasks-renderer.ts"() {
288697
288734
  "use strict";
@@ -288705,6 +288742,8 @@ var init_tui_tasks_renderer = __esm({
288705
288742
  _scopeOverlayActive = false;
288706
288743
  _scopeMainViewActive = true;
288707
288744
  _scopeNeovimActive = false;
288745
+ _lastPaintedTop = -1;
288746
+ _lastPaintedBottom = -1;
288708
288747
  MAX_VISIBLE_ROWS = 8;
288709
288748
  SAVE = "\x1B[s";
288710
288749
  RESTORE = "\x1B[u";
@@ -288984,6 +289023,12 @@ var init_status_bar = __esm({
288984
289023
  _prevTermCols = 0;
288985
289024
  /** Debounce timer for resize events — prevents separator stacking during drag */
288986
289025
  _resizeTimer = null;
289026
+ /** WO-TASK-02 — callback fired at the END of _handleResizeImmediate so
289027
+ * the tasks renderer can repaint AFTER the clear loop wipes the zone.
289028
+ * Without this, refreshTuiTasks() called from interactive.ts's resize
289029
+ * handler runs BEFORE the debounced _handleResizeImmediate and gets
289030
+ * clobbered. Wired in interactive.ts via setOnResizeFinalized(). */
289031
+ _onResizeFinalized = null;
288987
289032
  /** True while resize is in-flight (between first SIGWINCH and debounce settle).
288988
289033
  * Suppresses ALL footer renders to prevent separator debris at intermediate sizes. */
288989
289034
  _resizing = false;
@@ -290390,6 +290435,18 @@ var init_status_bar = __esm({
290390
290435
  this.renderFooterAndPositionInput();
290391
290436
  if (this._bannerRefresh) this._bannerRefresh();
290392
290437
  }
290438
+ if (this._onResizeFinalized) {
290439
+ try {
290440
+ this._onResizeFinalized();
290441
+ } catch {
290442
+ }
290443
+ }
290444
+ }
290445
+ /** Register a callback that fires AT THE END of _handleResizeImmediate.
290446
+ * Use this from interactive.ts to repaint the tasks panel after the
290447
+ * debounced clear/redraw cycle finishes. */
290448
+ setOnResizeFinalized(cb) {
290449
+ this._onResizeFinalized = cb;
290393
290450
  }
290394
290451
  /**
290395
290452
  * Update the top boundary of the scroll region (e.g. after carousel retirement).
@@ -326365,6 +326422,12 @@ async function startInteractive(config, repoPath) {
326365
326422
  } catch {
326366
326423
  }
326367
326424
  });
326425
+ statusBar.setOnResizeFinalized(() => {
326426
+ try {
326427
+ refreshTuiTasksSync();
326428
+ } catch {
326429
+ }
326430
+ });
326368
326431
  if (process.stdout.isTTY) {
326369
326432
  const scrollTop = carouselLines > 0 ? carouselLines : 1;
326370
326433
  statusBar.activate(scrollTop);
@@ -327137,10 +327200,6 @@ Rationale: ${proposal.rationale}${provenanceNote}`;
327137
327200
  process.stdout.on("resize", () => {
327138
327201
  statusBar.handleResize();
327139
327202
  setTermSize(process.stdout.rows ?? 24, process.stdout.columns ?? 80);
327140
- try {
327141
- refreshTuiTasks();
327142
- } catch {
327143
- }
327144
327203
  if (isNeovimActive()) {
327145
327204
  const contentRows = statusBar.isActive ? statusBar.availableContentRows : Math.max(5, termRows() - 6);
327146
327205
  resizeNeovim(termCols(), contentRows);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "open-agents-ai",
3
- "version": "0.187.212",
3
+ "version": "0.187.213",
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",