open-agents-ai 0.184.58 → 0.184.60

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 +54 -22
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -41611,7 +41611,9 @@ function tuiSelect(opts) {
41611
41611
  ${selectColors.cyan("\u2190")} ${trail}`);
41612
41612
  }
41613
41613
  if (title) {
41614
- lines.push(`${hasBreadcrumbs ? "" : "\n"} ${selectColors.bold(title)}`);
41614
+ if (!hasBreadcrumbs)
41615
+ lines.push("");
41616
+ lines.push(` ${selectColors.bold(title)}`);
41615
41617
  }
41616
41618
  if (filter) {
41617
41619
  const count = matchSet.size;
@@ -50678,9 +50680,10 @@ async function handleUpdate(subcommand, ctx) {
50678
50680
  const charIdx2 = noise2 < density2 ? Math.min(particles.length - 1, Math.floor(density2 * particles.length)) : 0;
50679
50681
  buf += `\x1B[${boxTop + r};${boxLeft + boxW - 1}H${particles[charIdx2]}`;
50680
50682
  }
50681
- const label = "INSTALLING";
50683
+ const label = statusLine === "__DONE__" ? "INSTALLED" : "INSTALLING";
50684
+ const labelColor = statusLine === "__DONE__" ? 82 : yellow;
50682
50685
  const labelCol = centerCol - Math.floor(label.length / 2);
50683
- buf += `\x1B[${centerRow - 1};${labelCol}H\x1B[1;38;5;${yellow}m${label}`;
50686
+ buf += `\x1B[${centerRow - 1};${labelCol}H\x1B[1;38;5;${labelColor}m${label}`;
50684
50687
  const vLabel = `v${version}`;
50685
50688
  const vCol = centerCol - Math.floor(vLabel.length / 2);
50686
50689
  buf += `\x1B[${centerRow};${vCol}H\x1B[0;38;5;245m\x1B[48;5;${bgDark}m${vLabel}`;
@@ -50705,8 +50708,26 @@ async function handleUpdate(subcommand, ctx) {
50705
50708
  },
50706
50709
  stop(finalText) {
50707
50710
  clearInterval(timer);
50708
- status = finalText;
50711
+ status = "__DONE__";
50709
50712
  renderInstallFrame(version, frame, status);
50713
+ setTimeout(() => {
50714
+ status = finalText;
50715
+ renderInstallFrame(version, frame + 1, finalText);
50716
+ }, 300);
50717
+ },
50718
+ /** Clear the overlay content area entirely — return to normal scroll area */
50719
+ dismiss() {
50720
+ clearInterval(timer);
50721
+ const cols = process.stdout.columns ?? 80;
50722
+ const rows = process.stdout.rows ?? 24;
50723
+ const contentTop = 4;
50724
+ const contentBottom = rows - 3;
50725
+ let buf = "\x1B7";
50726
+ for (let r = contentTop; r <= contentBottom; r++) {
50727
+ buf += `\x1B[${r};1H\x1B[48;5;234m\x1B[2K`;
50728
+ }
50729
+ buf += "\x1B8";
50730
+ process.stdout.write(buf);
50710
50731
  }
50711
50732
  };
50712
50733
  }
@@ -50868,7 +50889,8 @@ async function handleUpdate(subcommand, ctx) {
50868
50889
  }
50869
50890
  if (!installOk) {
50870
50891
  installOverlay.stop("Install failed");
50871
- await new Promise((r) => setTimeout(r, 1500));
50892
+ await new Promise((r) => setTimeout(r, 2e3));
50893
+ installOverlay.dismiss();
50872
50894
  renderWarning(`Try manually: ${sudoPrefix}npm i -g open-agents-ai`);
50873
50895
  return;
50874
50896
  }
@@ -50899,7 +50921,8 @@ async function handleUpdate(subcommand, ctx) {
50899
50921
  }
50900
50922
  if (!primaryUpdated && !depsUpdated && !doRebuild && !doPython && !doCloudflared) {
50901
50923
  installOverlay.stop("No changes needed");
50902
- await new Promise((r) => setTimeout(r, 1500));
50924
+ await new Promise((r) => setTimeout(r, 2e3));
50925
+ installOverlay.dismiss();
50903
50926
  return;
50904
50927
  }
50905
50928
  if (doRebuild) {
@@ -50971,17 +50994,18 @@ async function handleUpdate(subcommand, ctx) {
50971
50994
  ensureTranscribeCliBackground();
50972
50995
  }
50973
50996
  if (!primaryUpdated) {
50974
- installOverlay.stop("Done");
50975
- await new Promise((r) => setTimeout(r, 1500));
50997
+ installOverlay.stop("Done \u2014 no restart needed");
50998
+ await new Promise((r) => setTimeout(r, 2e3));
50999
+ installOverlay.dismiss();
50976
51000
  return;
50977
51001
  }
50978
- installOverlay.setStatus("Reloading...");
50979
- await new Promise((r) => setTimeout(r, 400));
50980
51002
  ctx.contextSave?.();
50981
51003
  const hadActiveTask = ctx.savePendingTaskState?.() ?? false;
50982
51004
  const resumeFlag = hadActiveTask ? "1" : "update-only";
50983
- installOverlay.stop("Reloading\u2026");
50984
- await new Promise((r) => setTimeout(r, 300));
51005
+ installOverlay.stop("Restarting with new version...");
51006
+ await new Promise((r) => setTimeout(r, 1500));
51007
+ installOverlay.dismiss();
51008
+ await new Promise((r) => setTimeout(r, 200));
50985
51009
  const { execPath, argv } = process;
50986
51010
  try {
50987
51011
  const { execFileSync } = await import("node:child_process");
@@ -65301,6 +65325,15 @@ Rationale: ${proposal.rationale}${provenanceNote}`;
65301
65325
  statusBar.handlePointerEvent(type, col, row);
65302
65326
  });
65303
65327
  process.stdin.pipe(mouseFilter);
65328
+ process.stdin.on("error", (err) => {
65329
+ if (err.code === "EIO" || err.code === "ENOTTY")
65330
+ return;
65331
+ try {
65332
+ process.stderr.write(`stdin error: ${err.code}
65333
+ `);
65334
+ } catch {
65335
+ }
65336
+ });
65304
65337
  const rl = readline2.createInterface({
65305
65338
  input: mouseFilter,
65306
65339
  output: process.stdout,
@@ -67742,10 +67775,15 @@ ${c2.dim("(Use /quit to exit)")}
67742
67775
  _escapeHandler = () => {
67743
67776
  if (!activeTask)
67744
67777
  return;
67745
- if (!activeTask.runner.isPaused) {
67746
- activeTask.runner.pause();
67747
- statusBar.setProcessing(false);
67778
+ if (activeTask.runner.isPaused) {
67779
+ writeContent(() => process.stdout.write(` ${c2.red("\u23F9")} ${c2.dim("Stopped.")}
67780
+ `));
67781
+ activeTask.runner.abort();
67782
+ showPrompt();
67783
+ return;
67748
67784
  }
67785
+ activeTask.runner.pause();
67786
+ statusBar.setProcessing(false);
67749
67787
  const retracted = activeTask.runner.retractLastPendingMessage();
67750
67788
  if (retracted) {
67751
67789
  lastSteeringInput = retracted;
@@ -67754,14 +67792,8 @@ ${c2.dim("(Use /quit to exit)")}
67754
67792
  `));
67755
67793
  rl.line = retracted;
67756
67794
  rl.cursor = retracted.length;
67757
- } else if (lastSteeringInput) {
67758
- lastSteeringRetracted = true;
67759
- writeContent(() => process.stdout.write(` ${c2.yellow("\u23F8")} ${c2.dim("\x1B[9m" + lastSteeringInput.slice(0, 120) + "\x1B[29m")} ${c2.dim("\u2190 already sent, re-type below to override")}
67760
- `));
67761
- rl.line = lastSteeringInput;
67762
- rl.cursor = lastSteeringInput.length;
67763
67795
  } else {
67764
- writeContent(() => process.stdout.write(` ${c2.yellow("\u23F8")} ${c2.dim("Paused. /resume to continue, /stop to kill.")}
67796
+ writeContent(() => process.stdout.write(` ${c2.yellow("\u23F8")} ${c2.dim("Paused. Press Esc again to stop, or type and press Enter to steer.")}
67765
67797
  `));
67766
67798
  }
67767
67799
  showPrompt();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "open-agents-ai",
3
- "version": "0.184.58",
3
+ "version": "0.184.60",
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",