open-agents-ai 0.187.389 → 0.187.391

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.
package/dist/index.js CHANGED
@@ -532201,6 +532201,8 @@ var init_status_bar = __esm({
532201
532201
  // last \n goes into _contentLines (as complete lines), and the trailing
532202
532202
  // partial stays in _inProgressLine until the next \n arrives.
532203
532203
  _inProgressLine = "";
532204
+ /** Throttled repaint timer for the live streaming tail (partial line). */
532205
+ _streamingRepaintTimer = null;
532204
532206
  /** Auto-scroll to live when new content arrives (disabled when user scrolls back) */
532205
532207
  _autoScroll = true;
532206
532208
  /** Cached click region for the spacer button */
@@ -533083,6 +533085,7 @@ var init_status_bar = __esm({
533083
533085
  clearTimeout(this._resizeTimer);
533084
533086
  this._resizeTimer = null;
533085
533087
  }
533088
+ this.clearStreamingRepaintTimer();
533086
533089
  if (this._processing) {
533087
533090
  this._brailleSpinner.stop();
533088
533091
  this._processing = false;
@@ -533111,6 +533114,7 @@ var init_status_bar = __esm({
533111
533114
  this._contentLines.splice(0, this._contentLines.length);
533112
533115
  this._contentScrollOffset = 0;
533113
533116
  this._inProgressLine = "";
533117
+ this.clearStreamingRepaintTimer();
533114
533118
  this._lastBufferedFingerprint = "";
533115
533119
  this._lastBufferedAt = 0;
533116
533120
  this._autoScroll = true;
@@ -533794,14 +533798,17 @@ var init_status_bar = __esm({
533794
533798
  if (typeof chunk === "string") text = chunk;
533795
533799
  else if (Buffer.isBuffer(chunk)) text = chunk.toString();
533796
533800
  else text = String(chunk);
533801
+ let bufferedContentChanged = false;
533797
533802
  if (self2._bufferContent && !isOverlayActive()) {
533798
533803
  const combined = self2._inProgressLine + text;
533799
533804
  const lastNl = combined.lastIndexOf("\n");
533800
533805
  if (lastNl < 0) {
533801
533806
  self2._inProgressLine = combined;
533807
+ bufferedContentChanged = combined.length > 0;
533802
533808
  } else {
533803
533809
  const completed = combined.slice(0, lastNl);
533804
533810
  self2._inProgressLine = combined.slice(lastNl + 1);
533811
+ bufferedContentChanged = completed.length > 0 || self2._inProgressLine.length > 0;
533805
533812
  const completeLines = completed.split("\n");
533806
533813
  for (const line of completeLines) {
533807
533814
  const sanitized = self2.sanitizeBufferedContentLine(line);
@@ -533811,6 +533818,7 @@ var init_status_bar = __esm({
533811
533818
  }
533812
533819
  }
533813
533820
  }
533821
+ if (bufferedContentChanged) self2.scheduleStreamingRepaint();
533814
533822
  }
533815
533823
  if (typeof chunk === "string") {
533816
533824
  chunk = chunk.replace(/\x1B\[0m/g, `\x1B[0m${CONTENT_BG_SEQ}`).replace(/\n/g, `\x1B[K
@@ -533842,6 +533850,7 @@ ${CONTENT_BG_SEQ}`);
533842
533850
  if (!this.active) return;
533843
533851
  this.writeDepth = Math.max(0, this.writeDepth - 1);
533844
533852
  if (this.writeDepth === 0) {
533853
+ this.clearStreamingRepaintTimer();
533845
533854
  if (this._inProgressLine.length > 0) {
533846
533855
  const sanitized = this.sanitizeBufferedContentLine(this._inProgressLine);
533847
533856
  const visible = stripAnsi(sanitized);
@@ -533897,6 +533906,31 @@ ${CONTENT_BG_SEQ}`);
533897
533906
  this.repaintContent();
533898
533907
  this.renderFooterAndPositionInput();
533899
533908
  }
533909
+ clearStreamingRepaintTimer() {
533910
+ if (!this._streamingRepaintTimer) return;
533911
+ clearTimeout(this._streamingRepaintTimer);
533912
+ this._streamingRepaintTimer = null;
533913
+ }
533914
+ scheduleStreamingRepaint() {
533915
+ if (!this.active || this.writeDepth === 0) return;
533916
+ if (this._contentScrollOffset > 0 || this._mouseSelecting) return;
533917
+ if (this._streamingRepaintTimer || isOverlayActive() || this._suspendContentLayer) return;
533918
+ this._streamingRepaintTimer = setTimeout(() => {
533919
+ this._streamingRepaintTimer = null;
533920
+ if (!this.active || this.writeDepth === 0) return;
533921
+ if (this._contentScrollOffset > 0 || this._mouseSelecting) return;
533922
+ if (isOverlayActive() || this._suspendContentLayer) return;
533923
+ this.repaintContent();
533924
+ }, 33);
533925
+ this._streamingRepaintTimer.unref?.();
533926
+ }
533927
+ getLiveBufferedLine() {
533928
+ if (this.writeDepth === 0 || this._contentScrollOffset > 0) return null;
533929
+ if (this._inProgressLine.length === 0) return null;
533930
+ const sanitized = this.sanitizeBufferedContentLine(this._inProgressLine);
533931
+ const visible = stripAnsi(sanitized);
533932
+ return sanitized.length > 0 && visible.length > 0 ? sanitized : null;
533933
+ }
533900
533934
  bufferContentLine(line) {
533901
533935
  const sanitized = this.sanitizeBufferedContentLine(line);
533902
533936
  const fingerprint = stripAnsi(sanitized).trim();
@@ -534007,7 +534041,8 @@ ${CONTENT_BG_SEQ}`);
534007
534041
  */
534008
534042
  repaintContent() {
534009
534043
  const h = this.contentHeight;
534010
- const totalLines = this._contentLines.length;
534044
+ const livePartialLine = this.getLiveBufferedLine();
534045
+ const totalLines = this._contentLines.length + (livePartialLine ? 1 : 0);
534011
534046
  const startIdx = Math.max(0, totalLines - h - this._contentScrollOffset);
534012
534047
  const w = termCols();
534013
534048
  const headerSafeFloor = layout().headerBottom + 1;
@@ -534016,7 +534051,12 @@ ${CONTENT_BG_SEQ}`);
534016
534051
  buf += "\x1B[?25l";
534017
534052
  for (let row = 0; row < h; row++) {
534018
534053
  const lineIdx = startIdx + row;
534019
- let line = lineIdx < totalLines ? this._contentLines[lineIdx] : "";
534054
+ let line = "";
534055
+ if (lineIdx < this._contentLines.length) {
534056
+ line = this._contentLines[lineIdx];
534057
+ } else if (livePartialLine && lineIdx === this._contentLines.length) {
534058
+ line = livePartialLine;
534059
+ }
534020
534060
  const screenRow = this.scrollRegionTop + row;
534021
534061
  if (screenRow < headerSafeFloor) continue;
534022
534062
  line = line.replace(/\x1B\[0m/g, `\x1B[0m${CONTENT_BG_SEQ}`);
@@ -534043,7 +534083,7 @@ ${CONTENT_BG_SEQ}`);
534043
534083
  buf += `\x1B[${this.scrollRegionTop};1H\x1B[7m${indicator}${" ".repeat(pad)}\x1B[0m`;
534044
534084
  }
534045
534085
  buf += "\x1B8";
534046
- buf += "\x1B[?25h";
534086
+ if (this.writeDepth === 0) buf += "\x1B[?25h";
534047
534087
  buf += "\x1B[?2026l";
534048
534088
  const writer = this._origWrite ?? process.stdout.write.bind(process.stdout);
534049
534089
  writer(buf);
@@ -534529,36 +534569,12 @@ ${CONTENT_BG_SEQ}`);
534529
534569
  if (!this.active || this._resizing) return;
534530
534570
  const rows = termRows();
534531
534571
  const w = getTermWidth();
534532
- const oldFooterHeight = this._currentFooterHeight;
534533
534572
  const heightChanged = this.updateFooterHeight(w);
534534
534573
  const pos = this.rowPositions(rows);
534535
534574
  if (heightChanged) {
534536
- const heightDelta = this._currentFooterHeight - oldFooterHeight;
534537
- if (heightDelta > 0) {
534538
- const oldScrollEnd = Math.max(rows - oldFooterHeight, this.scrollRegionTop + 1);
534539
- let scrollUp = `\x1B[${oldScrollEnd};1H`;
534540
- for (let i2 = 0; i2 < heightDelta; i2++) scrollUp += "\n";
534541
- this.termWrite(scrollUp);
534542
- this.termWrite(`\x1B[${this.scrollRegionTop};${pos.scrollEnd}r`);
534543
- } else {
534544
- const absD = Math.abs(heightDelta);
534545
- const oldScrollEnd = Math.max(rows - oldFooterHeight, this.scrollRegionTop);
534546
- const newScrollEnd = pos.scrollEnd;
534547
- this.termWrite(`\x1B[${this.scrollRegionTop};${newScrollEnd}r`);
534548
- let wipeTransition = "";
534549
- for (let r2 = oldScrollEnd + 1; r2 <= newScrollEnd; r2++) {
534550
- wipeTransition += `\x1B[${r2};1H${CONTENT_BG_SEQ}\x1B[2K`;
534551
- }
534552
- if (wipeTransition) this.termWrite(wipeTransition);
534553
- let scrollDown = `\x1B[${this.scrollRegionTop};1H`;
534554
- for (let i2 = 0; i2 < absD; i2++) scrollDown += "\x1BM";
534555
- this.termWrite(scrollDown);
534556
- let repaint = "";
534557
- for (let r2 = this.scrollRegionTop; r2 < this.scrollRegionTop + absD; r2++) {
534558
- repaint += `\x1B[${r2};1H${CONTENT_BG_SEQ}\x1B[2K`;
534559
- }
534560
- if (repaint) this.termWrite(repaint);
534561
- }
534575
+ this.applyScrollRegion();
534576
+ this.fillContentArea();
534577
+ this.repaintContent();
534562
534578
  }
534563
534579
  const inputWrap = this.wrapInput(w);
534564
534580
  let buf = "\x1B[?7l";
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "open-agents-ai",
3
- "version": "0.187.389",
3
+ "version": "0.187.391",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "open-agents-ai",
9
- "version": "0.187.389",
9
+ "version": "0.187.391",
10
10
  "hasInstallScript": true,
11
11
  "license": "CC-BY-NC-4.0",
12
12
  "dependencies": {
@@ -1320,14 +1320,14 @@
1320
1320
  }
1321
1321
  },
1322
1322
  "node_modules/@libp2p/peer-record": {
1323
- "version": "9.0.7",
1324
- "resolved": "https://registry.npmjs.org/@libp2p/peer-record/-/peer-record-9.0.7.tgz",
1325
- "integrity": "sha512-pAoGQOgXekYDhZsrD2c0mUK8nRimU1SdjaTt2n3ZSb2E8FD+d5tlQ0OC9DMCH6KR/FMxyaw8mjBF7gPJ1Af9dg==",
1323
+ "version": "9.0.9",
1324
+ "resolved": "https://registry.npmjs.org/@libp2p/peer-record/-/peer-record-9.0.9.tgz",
1325
+ "integrity": "sha512-MSTa01yTEvlaxW2Z/jiLYviPFWB7UJjupxHOSFTqalvJQYFuR4C713o6ABFEQWJJ2mTB0dS79hs65lEbOuWQTw==",
1326
1326
  "license": "Apache-2.0 OR MIT",
1327
1327
  "dependencies": {
1328
- "@libp2p/crypto": "^5.1.15",
1329
- "@libp2p/interface": "^3.2.0",
1330
- "@libp2p/peer-id": "^6.0.6",
1328
+ "@libp2p/crypto": "^5.1.17",
1329
+ "@libp2p/interface": "^3.2.2",
1330
+ "@libp2p/peer-id": "^6.0.8",
1331
1331
  "@multiformats/multiaddr": "^13.0.1",
1332
1332
  "multiformats": "^13.4.0",
1333
1333
  "protons-runtime": "^6.0.1",
@@ -1402,9 +1402,9 @@
1402
1402
  }
1403
1403
  },
1404
1404
  "node_modules/@libp2p/record": {
1405
- "version": "4.0.10",
1406
- "resolved": "https://registry.npmjs.org/@libp2p/record/-/record-4.0.10.tgz",
1407
- "integrity": "sha512-XuMvcVU5EYGgB9Hgu+N9PDQLeoscUFD3qzbuvKnJhlNg052JI4L045Zon+0lzwLtW38w7rmL9UUBAVFta4trLA==",
1405
+ "version": "4.0.12",
1406
+ "resolved": "https://registry.npmjs.org/@libp2p/record/-/record-4.0.12.tgz",
1407
+ "integrity": "sha512-CODkztILDzow3I76XbqshRpsP6g7EczNH0fZQdvbNXEqkwJtMOvRrpqxC9n/q65A6V7z6r9oUNSl7etvxS8WnQ==",
1408
1408
  "license": "Apache-2.0 OR MIT",
1409
1409
  "dependencies": {
1410
1410
  "protons-runtime": "^6.0.1",
@@ -1520,23 +1520,23 @@
1520
1520
  }
1521
1521
  },
1522
1522
  "node_modules/@libp2p/webrtc": {
1523
- "version": "6.0.16",
1524
- "resolved": "https://registry.npmjs.org/@libp2p/webrtc/-/webrtc-6.0.16.tgz",
1525
- "integrity": "sha512-MSHbmtVT9ZsNsoPZyyb9Nxu5mBOUo0N3jO0W4mJMToV+BEy0a4gB736OyOqo5a0fhPUOgfJ8LFno3qtNMT/8BQ==",
1523
+ "version": "6.0.18",
1524
+ "resolved": "https://registry.npmjs.org/@libp2p/webrtc/-/webrtc-6.0.18.tgz",
1525
+ "integrity": "sha512-EX4lu+96K03V2WfiyAm+/I8VRXwUfIPS6n+NqyypIfqJmTWwTIZL/SsKO54m+R+ccUbSnaoa0eOVTDhFcMgnkw==",
1526
1526
  "license": "Apache-2.0 OR MIT",
1527
1527
  "dependencies": {
1528
1528
  "@chainsafe/is-ip": "^2.1.0",
1529
1529
  "@chainsafe/libp2p-noise": "^17.0.0",
1530
- "@libp2p/crypto": "^5.1.15",
1531
- "@libp2p/interface": "^3.2.0",
1532
- "@libp2p/interface-internal": "^3.1.0",
1533
- "@libp2p/keychain": "^6.0.12",
1534
- "@libp2p/peer-id": "^6.0.6",
1535
- "@libp2p/utils": "^7.0.15",
1530
+ "@libp2p/crypto": "^5.1.17",
1531
+ "@libp2p/interface": "^3.2.2",
1532
+ "@libp2p/interface-internal": "^3.1.2",
1533
+ "@libp2p/keychain": "^6.0.14",
1534
+ "@libp2p/peer-id": "^6.0.8",
1535
+ "@libp2p/utils": "^7.0.17",
1536
1536
  "@multiformats/multiaddr": "^13.0.1",
1537
1537
  "@multiformats/multiaddr-matcher": "^3.0.1",
1538
1538
  "@peculiar/webcrypto": "^1.5.0",
1539
- "@peculiar/x509": "^1.13.0",
1539
+ "@peculiar/x509": "^2.0.0",
1540
1540
  "detect-browser": "^5.3.0",
1541
1541
  "get-port": "^7.1.0",
1542
1542
  "interface-datastore": "^9.0.1",
@@ -1555,11 +1555,33 @@
1555
1555
  "protons-runtime": "^6.0.1",
1556
1556
  "race-signal": "^2.0.0",
1557
1557
  "react-native-webrtc": "^124.0.6",
1558
+ "reflect-metadata": "^0.2.2",
1558
1559
  "uint8-varint": "^2.0.4",
1559
1560
  "uint8arraylist": "^2.4.8",
1560
1561
  "uint8arrays": "^5.1.0"
1561
1562
  }
1562
1563
  },
1564
+ "node_modules/@libp2p/webrtc/node_modules/@peculiar/x509": {
1565
+ "version": "2.0.0",
1566
+ "resolved": "https://registry.npmjs.org/@peculiar/x509/-/x509-2.0.0.tgz",
1567
+ "integrity": "sha512-r10lkuy6BNfRmyYdRAfgu6dq0HOmyIV2OLhXWE3gDEPBdX1b8miztJVyX/UxWhLwemNyDP3CLZHpDxDwSY0xaA==",
1568
+ "license": "MIT",
1569
+ "dependencies": {
1570
+ "@peculiar/asn1-cms": "^2.6.0",
1571
+ "@peculiar/asn1-csr": "^2.6.0",
1572
+ "@peculiar/asn1-ecc": "^2.6.0",
1573
+ "@peculiar/asn1-pkcs9": "^2.6.0",
1574
+ "@peculiar/asn1-rsa": "^2.6.0",
1575
+ "@peculiar/asn1-schema": "^2.6.0",
1576
+ "@peculiar/asn1-x509": "^2.6.0",
1577
+ "pvtsutils": "^1.3.6",
1578
+ "tslib": "^2.8.1",
1579
+ "tsyringe": "^4.10.0"
1580
+ },
1581
+ "engines": {
1582
+ "node": ">=20.0.0"
1583
+ }
1584
+ },
1563
1585
  "node_modules/@libp2p/webrtc/node_modules/protons-runtime": {
1564
1586
  "version": "6.0.1",
1565
1587
  "resolved": "https://registry.npmjs.org/protons-runtime/-/protons-runtime-6.0.1.tgz",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "open-agents-ai",
3
- "version": "0.187.389",
3
+ "version": "0.187.391",
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",