open-agents-ai 0.187.392 → 0.187.393

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
@@ -532371,6 +532371,8 @@ var init_status_bar = __esm({
532371
532371
  /** Current package version (shown in metrics row, rightmost) */
532372
532372
  _version = "";
532373
532373
  _updateLatest = null;
532374
+ _headerBackendType = "";
532375
+ _headerBackendUrl = "";
532374
532376
  // ── Voice & Nexus status (for header panel display) ─────────────────
532375
532377
  _voiceActive = false;
532376
532378
  _voiceModelId = "";
@@ -532387,6 +532389,59 @@ var init_status_bar = __esm({
532387
532389
  this._nexusStatus = status;
532388
532390
  if (this.active) this.refreshHeaderContent();
532389
532391
  }
532392
+ refreshHeaderPanels() {
532393
+ this._rebuildHeaderPanels();
532394
+ if (this.active) this.refreshHeaderContent();
532395
+ }
532396
+ refreshHeaderAndFooter() {
532397
+ this.refreshHeaderPanels();
532398
+ if (this.active) this.renderFooterPreserveCursor();
532399
+ }
532400
+ summarizeHeaderModelName() {
532401
+ const raw = this._modelName.trim();
532402
+ if (!raw) return "";
532403
+ const leaf = raw.split("/").pop() ?? raw;
532404
+ const familySource = leaf.split(":")[0]?.trim() || leaf;
532405
+ const paramMatch = raw.match(/(\d+(?:\.\d+)?\s*[bBmMkK])/);
532406
+ const param = paramMatch ? paramMatch[1].replace(/\s+/g, "").toLowerCase() : "";
532407
+ let summary = param && !familySource.toLowerCase().includes(param) ? `${familySource} ${param}` : familySource;
532408
+ if (summary.length > 18) {
532409
+ const compactBase = familySource.split(/[-_]/).filter(Boolean).slice(0, 2).join(" ") || familySource;
532410
+ summary = param && !compactBase.toLowerCase().includes(param) ? `${compactBase} ${param}` : compactBase;
532411
+ }
532412
+ return summary.length > 18 ? `${summary.slice(0, 17)}…` : summary;
532413
+ }
532414
+ summarizeHeaderTransport() {
532415
+ const backendType = this._headerBackendType;
532416
+ const backendUrl = this._headerBackendUrl;
532417
+ if (backendType === "nexus" || backendUrl.startsWith("peer://")) return "p2p";
532418
+ if (backendType === "fake") return "fake";
532419
+ if (!backendUrl) return "";
532420
+ if (backendUrl.includes("127.0.0.1") || backendUrl.includes("localhost") || backendUrl.includes("0.0.0.0")) {
532421
+ return "local";
532422
+ }
532423
+ return "remote";
532424
+ }
532425
+ buildHeaderVersionText() {
532426
+ const parts = [` OA v${this._version}`];
532427
+ const model = this.summarizeHeaderModelName();
532428
+ const transport = this.summarizeHeaderTransport();
532429
+ if (model) parts.push(model);
532430
+ if (transport) parts.push(transport);
532431
+ if (this._updateLatest) parts[parts.length - 1] += " ↑";
532432
+ return parts.join(" | ");
532433
+ }
532434
+ setBackendInfo(backendType, backendUrl) {
532435
+ this._headerBackendType = backendType;
532436
+ this._headerBackendUrl = backendUrl;
532437
+ this.refreshHeaderAndFooter();
532438
+ }
532439
+ setHeaderIdentity(modelName, backendType, backendUrl) {
532440
+ this._modelName = modelName;
532441
+ this._headerBackendType = backendType;
532442
+ this._headerBackendUrl = backendUrl;
532443
+ this.refreshHeaderAndFooter();
532444
+ }
532390
532445
  // ── Header Panel System ──────────────────────────────────────────────
532391
532446
  // Extensible dual-state (N-state) header: the content row inside the
532392
532447
  // ╭│╰ box cycles between registered panels via arrow buttons.
@@ -532408,7 +532463,7 @@ var init_status_bar = __esm({
532408
532463
  return this._headerPanels.length - 1;
532409
532464
  }
532410
532465
  /** Rebuild all header panels. Two categories are kept separate:
532411
- * - Category A: Version + menu buttons (help/voice/model/cohere)
532466
+ * - Category A: Version + menu buttons (help/voice/model/endpoint/sponsor)
532412
532467
  * - Category B: Systems (agents/voice status/nexus status)
532413
532468
  * Each category paginates independently across N pages. */
532414
532469
  _rebuildHeaderPanels() {
@@ -532424,14 +532479,13 @@ var init_status_bar = __esm({
532424
532479
  }
532425
532480
  return `\x1B]8;;${cmdPrefix}\x07\x1B[38;5;${fg3}m${label}\x1B]8;;\x07`;
532426
532481
  };
532427
- const verBase = ` OA v${this._version}`;
532428
- const verArrow = this._updateLatest ? " ↑" : "";
532429
- const verText = verBase + verArrow;
532482
+ const verText = this.buildHeaderVersionText();
532430
532483
  const menuBtns = [
532431
532484
  { cmd: "help", label: " help ", w: 6 },
532432
532485
  { cmd: "voice", label: " voice ", w: 7 },
532433
532486
  { cmd: "model", label: " model ", w: 7 },
532434
- { cmd: "cohere", label: " cohere ", w: 8 }
532487
+ { cmd: "endpoint", label: " endpoint ", w: 10 },
532488
+ { cmd: "sponsor", label: " sponsor ", w: 9 }
532435
532489
  ];
532436
532490
  const verW = verText.length;
532437
532491
  let menuPages = [];
@@ -532708,12 +532762,12 @@ var init_status_bar = __esm({
532708
532762
  /** Set the current package version for display in the metrics row */
532709
532763
  setVersion(version4) {
532710
532764
  this._version = version4;
532711
- if (this.active) this.renderFooterPreserveCursor();
532765
+ this.refreshHeaderAndFooter();
532712
532766
  }
532713
532767
  /** Mark that a newer version is available (renders clickable ↑ next to version) */
532714
532768
  setUpdateAvailable(latestVersion) {
532715
532769
  this._updateLatest = latestVersion;
532716
- if (this.active) this.renderHeaderButtons();
532770
+ this.refreshHeaderPanels();
532717
532771
  }
532718
532772
  /** Human expert speed ratio tracker */
532719
532773
  _speedTracker = new HumanSpeedTracker();
@@ -532766,8 +532820,7 @@ var init_status_bar = __esm({
532766
532820
  _modelName = "";
532767
532821
  /** Update active model name shown in the status bar */
532768
532822
  setModelName(name10) {
532769
- this._modelName = name10;
532770
- if (this.active) this.renderFooterPreserveCursor();
532823
+ this.setHeaderIdentity(name10, this._headerBackendType, this._headerBackendUrl);
532771
532824
  }
532772
532825
  /** Model capabilities — shown as emoji indicators on the status bar */
532773
532826
  _caps = {
@@ -581708,7 +581761,7 @@ ${opts.systemPromptAddition}` : `Working directory: ${repoRoot}`;
581708
581761
  statusBar.setCapabilities(caps);
581709
581762
  }).catch(() => {
581710
581763
  });
581711
- statusBar.setModelName(config.model);
581764
+ statusBar.setHeaderIdentity(config.model, config.backendType, config.backendUrl);
581712
581765
  const provider = detectProvider(config.backendUrl);
581713
581766
  const costTracker = new CostTracker(provider.id);
581714
581767
  const sessionMetrics = new SessionMetrics();
@@ -582607,6 +582660,7 @@ Rationale: ${proposal.rationale}${provenanceNote}`;
582607
582660
  currentConfig.backendUrl = best.tunnelUrl;
582608
582661
  currentConfig.apiKey = bestNoAuth ? "" : best.authKey;
582609
582662
  currentConfig.backendType = "openai";
582663
+ statusBar.setBackendInfo(currentConfig.backendType, currentConfig.backendUrl);
582610
582664
  setTimeout(() => {
582611
582665
  if (statusBar.isActive) {
582612
582666
  writeContent(() => renderInfo2(`Connected to sponsored endpoint: ${best.name}`));
@@ -582791,7 +582845,7 @@ Rationale: ${proposal.rationale}${provenanceNote}`;
582791
582845
  sessionMetrics,
582792
582846
  setModel(model) {
582793
582847
  currentConfig = { ...currentConfig, model };
582794
- statusBar.setModelName(model);
582848
+ statusBar.setHeaderIdentity(model, currentConfig.backendType, currentConfig.backendUrl);
582795
582849
  },
582796
582850
  setVerbose(verbose) {
582797
582851
  currentConfig = { ...currentConfig, verbose };
@@ -582803,6 +582857,7 @@ Rationale: ${proposal.rationale}${provenanceNote}`;
582803
582857
  backendType,
582804
582858
  ...apiKey !== void 0 ? { apiKey } : {}
582805
582859
  };
582860
+ statusBar.setBackendInfo(backendType, url);
582806
582861
  const newProvider = detectProvider(url);
582807
582862
  costTracker.setProvider(newProvider.id);
582808
582863
  const isPeer = url.startsWith("peer://");
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "open-agents-ai",
3
- "version": "0.187.392",
3
+ "version": "0.187.393",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "open-agents-ai",
9
- "version": "0.187.392",
9
+ "version": "0.187.393",
10
10
  "hasInstallScript": true,
11
11
  "license": "CC-BY-NC-4.0",
12
12
  "dependencies": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "open-agents-ai",
3
- "version": "0.187.392",
3
+ "version": "0.187.393",
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",