open-agents-ai 0.184.96 → 0.184.97

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 +33 -10
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -53625,6 +53625,7 @@ var init_banner = __esm({
53625
53625
  if (this.currentDesign.frames.length > 1) {
53626
53626
  this.timer = setInterval(() => {
53627
53627
  this.currentFrame = (this.currentFrame + 1) % this.currentDesign.frames.length;
53628
+ this.frameTick++;
53628
53629
  this.renderCurrentFrame();
53629
53630
  }, 200);
53630
53631
  }
@@ -53683,8 +53684,10 @@ var init_banner = __esm({
53683
53684
  }
53684
53685
  }
53685
53686
  if (this._focused) {
53687
+ const QUAD = ["\u2598", "\u259D", "\u2597", "\u2596"];
53686
53688
  for (let r = 0; r < this.rows; r++) {
53687
- buf += `\x1B[${r + 1};1H\x1B[38;5;178m\x1B[48;5;234m\u258E\x1B[0m`;
53689
+ const ch = QUAD[(this.frameTick + r) % QUAD.length];
53690
+ buf += `\x1B[${r + 1};1H\x1B[38;5;178m\x1B[48;5;234m${ch}\x1B[0m`;
53688
53691
  }
53689
53692
  }
53690
53693
  if (this._updateAvailable && this.currentDesign?.type === "default") {
@@ -60364,6 +60367,8 @@ var init_status_bar = __esm({
60364
60367
  _focusedZone = "footer";
60365
60368
  /** Callback to notify header (banner) of focus changes */
60366
60369
  _headerFocusHandler = null;
60370
+ /** Focus indicator animation frame counter — driven by braille spinner timer */
60371
+ _focusFrame = 0;
60367
60372
  /** Whether agent is actively processing (braille animation) */
60368
60373
  _processing = false;
60369
60374
  _brailleSpinner = new BrailleSpinner();
@@ -60942,11 +60947,35 @@ var init_status_bar = __esm({
60942
60947
  setHeaderFocusHandler(handler) {
60943
60948
  this._headerFocusHandler = handler;
60944
60949
  }
60950
+ /**
60951
+ * Get the animated quadrant block character for the focus indicator.
60952
+ * The animation pattern varies by activity state:
60953
+ * - Idle: slow clockwise rotation (breathing)
60954
+ * - Processing: fast diagonal sweep (energetic)
60955
+ * - Streaming: rapid fill/unfill (pulsing)
60956
+ */
60957
+ _getFocusQuadrant() {
60958
+ this._focusFrame++;
60959
+ const IDLE_CYCLE = ["\u2598", "\u259D", "\u2597", "\u2596"];
60960
+ const ACTIVE_CYCLE = ["\u2598", "\u259A", "\u2597", "\u259E"];
60961
+ const STREAM_CYCLE = ["\u2596", "\u259F", "\u259B", "\u2598", "\u259C", "\u2599"];
60962
+ const FULL = "\u2588";
60963
+ if (this._focusFrame < 3)
60964
+ return FULL;
60965
+ if (this._processing) {
60966
+ return STREAM_CYCLE[Math.floor(this._focusFrame / 2) % STREAM_CYCLE.length];
60967
+ }
60968
+ if (this.writeDepth > 0) {
60969
+ return ACTIVE_CYCLE[Math.floor(this._focusFrame / 3) % ACTIVE_CYCLE.length];
60970
+ }
60971
+ return IDLE_CYCLE[Math.floor(this._focusFrame / 6) % IDLE_CYCLE.length];
60972
+ }
60945
60973
  /** Cycle focus: footer → header → content → footer */
60946
60974
  cycleFocus() {
60947
60975
  const order = ["footer", "header", "content"];
60948
60976
  const idx = order.indexOf(this._focusedZone);
60949
60977
  this._focusedZone = order[(idx + 1) % order.length];
60978
+ this._focusFrame = 0;
60950
60979
  this._headerFocusHandler?.(this._focusedZone === "header");
60951
60980
  if (this.active) {
60952
60981
  this._bannerRefresh?.();
@@ -61595,13 +61624,6 @@ ${CONTENT_BG_SEQ}`);
61595
61624
  const compactOrder = [];
61596
61625
  let modelSectionIdx = -1;
61597
61626
  let versionSectionIdx = -1;
61598
- {
61599
- const zoneLabels = { header: "hdr", content: "cnt", footer: "ftr" };
61600
- const zoneLabel = zoneLabels[this._focusedZone];
61601
- const focusStr = pastel2(TEXT_PRIMARY, `\u258E${zoneLabel}`);
61602
- const focusW = 1 + zoneLabel.length;
61603
- sections.push({ expanded: focusStr, compact: focusStr, expandedW: focusW, compactW: focusW, empty: false });
61604
- }
61605
61627
  if (this._cohereActive) {
61606
61628
  const cohereExpanded = "\x1B[38;5;214m\u{1F310}\x1B[0m";
61607
61629
  sections.push({ expanded: cohereExpanded, compact: cohereExpanded, expandedW: 2, compactW: 2, empty: false });
@@ -62038,10 +62060,11 @@ ${CONTENT_BG_SEQ}`);
62038
62060
  }
62039
62061
  buf += `\x1B[${pos.bufferRow};1H${PANEL_BG_SEQ}\x1B[2K${this.buildBufferContent(w)}${RESET}`;
62040
62062
  buf += `\x1B[${pos.metricsRow};1H${PANEL_BG_SEQ}\x1B[2K${this.buildMetricsLine()}${RESET}`;
62063
+ const focusChar = this._getFocusQuadrant();
62041
62064
  if (this._focusedZone === "footer") {
62042
- buf += `\x1B[${pos.inputStartRow};1H\x1B[38;5;${TEXT_PRIMARY}m\x1B[48;5;${PANEL_BG}m\u258E\x1B[0m`;
62065
+ buf += `\x1B[${pos.inputStartRow};1H\x1B[38;5;${TEXT_PRIMARY}m\x1B[48;5;${PANEL_BG}m${focusChar}\x1B[0m`;
62043
62066
  } else if (this._focusedZone === "content") {
62044
- buf += `\x1B[${this.scrollRegionTop};1H\x1B[38;5;${TEXT_PRIMARY}m\x1B[48;5;${CONTENT_BG}m\u258E\x1B[0m`;
62067
+ buf += `\x1B[${this.scrollRegionTop};1H\x1B[38;5;${TEXT_PRIMARY}m\x1B[48;5;${CONTENT_BG}m${focusChar}\x1B[0m`;
62045
62068
  }
62046
62069
  buf += `\x1B[?7h\x1B[${cursorTermRow};${inputWrap.cursorCol}H\x1B[?25h`;
62047
62070
  this.termWrite(buf);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "open-agents-ai",
3
- "version": "0.184.96",
3
+ "version": "0.184.97",
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",