open-agents-ai 0.128.0 → 0.130.0

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 +31 -23
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -41463,7 +41463,15 @@ async function handleExposeConfig(ctx) {
41463
41463
  }
41464
41464
  async function showModelPicker(ctx, local = false) {
41465
41465
  try {
41466
+ const BRAILLE_CYCLE = ["\u2800", "\u2840", "\u28C0", "\u28C4", "\u28E4", "\u28E6", "\u28F6", "\u28F7", "\u28FF", "\u28F7", "\u28F6", "\u28E6", "\u28E4", "\u28C4", "\u28C0", "\u2840"];
41467
+ let spinFrame = 0;
41468
+ const spinTimer = setInterval(() => {
41469
+ process.stdout.write(`\r ${c2.cyan("\u25CF")} Loading models ${c2.cyan(BRAILLE_CYCLE[spinFrame++ % BRAILLE_CYCLE.length])}`);
41470
+ }, 80);
41466
41471
  const models = await fetchModels(ctx.config.backendUrl, ctx.config.apiKey);
41472
+ clearInterval(spinTimer);
41473
+ process.stdout.write(`\r ${c2.green("\u2714")} ${models.length} models loaded${" ".repeat(20)}
41474
+ `);
41467
41475
  if (models.length === 0) {
41468
41476
  renderWarning("No models found.");
41469
41477
  return;
@@ -42385,21 +42393,28 @@ async function handleUpdate(subcommand, ctx) {
42385
42393
  }
42386
42394
  };
42387
42395
  }
42388
- renderInfo("Checking for updates...");
42389
- const info = await checkForUpdate(currentVersion, true);
42390
42396
  const { exec: exec4, execSync: es2 } = await import("node:child_process");
42391
42397
  const execA = (cmd, opts) => new Promise((res, rej) => exec4(cmd, { encoding: "utf8", timeout: opts?.timeout ?? 3e4, cwd: opts?.cwd }, (err, stdout) => err ? rej(err) : res((stdout || "").trim())));
42392
- let needsSudo = false;
42393
- try {
42394
- const prefix = await execA("npm prefix -g", { timeout: 5e3 });
42395
- const { accessSync, constants } = await import("node:fs");
42396
- try {
42397
- accessSync(prefix, constants.W_OK);
42398
- } catch {
42399
- needsSudo = true;
42400
- }
42401
- } catch {
42402
- }
42398
+ const checkSpinner = startInlineSpinner("Loading update manager");
42399
+ const [info, sudoInfo] = await Promise.all([
42400
+ checkForUpdate(currentVersion, true),
42401
+ (async () => {
42402
+ try {
42403
+ const prefix = await execA("npm prefix -g", { timeout: 5e3 });
42404
+ const { accessSync, constants } = await import("node:fs");
42405
+ try {
42406
+ accessSync(prefix, constants.W_OK);
42407
+ return false;
42408
+ } catch {
42409
+ return true;
42410
+ }
42411
+ } catch {
42412
+ return false;
42413
+ }
42414
+ })()
42415
+ ]);
42416
+ const needsSudo = sudoInfo;
42417
+ checkSpinner.stop(`v${currentVersion} \u2014 ${info ? `update available \u2192 v${info.latestVersion}` : "up to date"}`);
42403
42418
  const items = [];
42404
42419
  const skipKeys = [];
42405
42420
  items.push({ key: "hdr_status", label: selectColors.dim(`\u2500\u2500\u2500 v${currentVersion} \u2500\u2500\u2500`), kind: "header" });
@@ -44309,21 +44324,14 @@ var init_banner = __esm({
44309
44324
  return this.currentDesign;
44310
44325
  }
44311
44326
  /**
44312
- * Start rendering the banner.
44313
- * Sets up DECSTBM scroll region so rows 1-3 are locked at top and
44314
- * content below row 4 scrolls normally without overlapping the banner.
44327
+ * Start rendering the banner into the top 3 rows.
44328
+ * Does NOT set DECSTBM scroll region that's managed by StatusBar.activate()
44329
+ * which accounts for both the banner height AND the footer height.
44315
44330
  * Returns the number of rows reserved (3 banner + 1 separator = 4).
44316
44331
  */
44317
44332
  start() {
44318
44333
  if (!isTTY7 || !this.currentDesign)
44319
44334
  return 0;
44320
- const termRows = process.stdout.rows ?? 24;
44321
- process.stdout.write("\x1B[1;1H");
44322
- for (let i = 0; i < this.rows + 1; i++) {
44323
- process.stdout.write("\x1B[2K\n");
44324
- }
44325
- process.stdout.write(`\x1B[${this.rows + 2};${termRows}r`);
44326
- process.stdout.write(`\x1B[${this.rows + 2};1H`);
44327
44335
  this.renderCurrentFrame();
44328
44336
  this._resizeHandler = () => {
44329
44337
  this.width = process.stdout.columns ?? 80;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "open-agents-ai",
3
- "version": "0.128.0",
3
+ "version": "0.130.0",
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",