omnius 1.0.164 → 1.0.166

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
@@ -570619,8 +570619,8 @@ function layout() {
570619
570619
  const headerContent = 2;
570620
570620
  const headerBottom = hh;
570621
570621
  const contentTop = headerBottom + 1;
570622
- const footerMetrics = rows;
570623
- const footerBoxBottom = footerMetrics - 1;
570622
+ const footerMetrics = _footerMetricsVisible ? rows : -1;
570623
+ const footerBoxBottom = _footerMetricsVisible ? rows - 1 : rows;
570624
570624
  const footerBoxTop = rows - fh + 1;
570625
570625
  const footerInput = footerBoxTop + 1;
570626
570626
  const FOOTER_SPACER_ROWS = 1;
@@ -570653,6 +570653,7 @@ function layout() {
570653
570653
  footerInput,
570654
570654
  footerBoxBottom,
570655
570655
  footerMetrics,
570656
+ footerMetricsVisible: _footerMetricsVisible,
570656
570657
  scrollRegionTop: contentTop,
570657
570658
  scrollRegionBottom: contentBottom,
570658
570659
  footerHeight: fh,
@@ -570664,7 +570665,12 @@ function setTermSize(rows, cols) {
570664
570665
  _termCols = cols;
570665
570666
  }
570666
570667
  function setFooterHeight(height) {
570667
- _footerHeight = Math.max(FOOTER_MIN_ROWS, height);
570668
+ const minRows = _footerMetricsVisible ? FOOTER_MIN_ROWS : FOOTER_NO_METRICS_MIN_ROWS;
570669
+ _footerHeight = Math.max(minRows, height);
570670
+ }
570671
+ function setFooterMetricsVisible(visible) {
570672
+ _footerMetricsVisible = visible;
570673
+ setFooterHeight(_footerHeight);
570668
570674
  }
570669
570675
  function setHeaderHeight(height) {
570670
570676
  _headerHeight = Math.max(1, height);
@@ -570693,17 +570699,19 @@ function notifyLayoutResize() {
570693
570699
  }
570694
570700
  }
570695
570701
  }
570696
- var HEADER_ROWS, FOOTER_MIN_ROWS, CONTENT_SPACER_ROWS, _termRows, _termCols, _footerHeight, _headerHeight, _tasksHeight, _resizeListeners;
570702
+ var HEADER_ROWS, FOOTER_MIN_ROWS, FOOTER_NO_METRICS_MIN_ROWS, CONTENT_SPACER_ROWS, _termRows, _termCols, _footerHeight, _headerHeight, _footerMetricsVisible, _tasksHeight, _resizeListeners;
570697
570703
  var init_layout2 = __esm({
570698
570704
  "packages/cli/src/tui/layout.ts"() {
570699
570705
  "use strict";
570700
570706
  HEADER_ROWS = 3;
570701
570707
  FOOTER_MIN_ROWS = 4;
570708
+ FOOTER_NO_METRICS_MIN_ROWS = 3;
570702
570709
  CONTENT_SPACER_ROWS = 1;
570703
570710
  _termRows = 24;
570704
570711
  _termCols = 80;
570705
570712
  _footerHeight = FOOTER_MIN_ROWS;
570706
570713
  _headerHeight = HEADER_ROWS;
570714
+ _footerMetricsVisible = true;
570707
570715
  _tasksHeight = 0;
570708
570716
  _resizeListeners = [];
570709
570717
  }
@@ -582854,9 +582862,11 @@ var init_status_bar = __esm({
582854
582862
  _brailleSpinner = new BrailleSpinner();
582855
582863
  /** Slow refresh timer for monitoring bar when braille spinner is off */
582856
582864
  _monitorTimer = null;
582857
- /** Current dynamic footer height (min 5: buffer + topSep + 1 input line + bottomSep + metrics) */
582865
+ /** Current dynamic footer height: box top + input rows + box bottom + optional metrics. */
582858
582866
  _currentFooterHeight = 4;
582859
582867
  // box-top(1) + input(1) + box-bottom(1) + metrics(1)
582868
+ /** Whether the bottom metrics row is visible. Ctrl+I toggles this. */
582869
+ _footerMetricsVisible = true;
582860
582870
  /** Timestamp when streaming started (for token rate calculation) */
582861
582871
  _streamStartTime = 0;
582862
582872
  /** Current package version (shown in metrics row, rightmost) */
@@ -583972,6 +583982,7 @@ var init_status_bar = __esm({
583972
583982
  });
583973
583983
  }
583974
583984
  setTermSize(process.stdout.rows ?? 24, process.stdout.columns ?? 80);
583985
+ setFooterMetricsVisible(this._footerMetricsVisible);
583975
583986
  this._prevTermRows = termRows();
583976
583987
  this._prevTermCols = termCols();
583977
583988
  this.applyScrollRegion(true);
@@ -584222,6 +584233,23 @@ var init_status_bar = __esm({
584222
584233
  this.renderFooterAndPositionInput();
584223
584234
  }
584224
584235
  }
584236
+ toggleFooterMetrics() {
584237
+ this.setFooterMetricsVisible(!this._footerMetricsVisible);
584238
+ return this._footerMetricsVisible;
584239
+ }
584240
+ setFooterMetricsVisible(visible) {
584241
+ if (this._footerMetricsVisible === visible) return;
584242
+ this._footerMetricsVisible = visible;
584243
+ setFooterMetricsVisible(visible);
584244
+ if (!this.active) {
584245
+ this.updateFooterHeight();
584246
+ return;
584247
+ }
584248
+ this.renderFooterAndPositionInput(true);
584249
+ }
584250
+ isFooterMetricsVisible() {
584251
+ return this._footerMetricsVisible;
584252
+ }
584225
584253
  /** Set/get COHERE participation state — shows 🌐 in metrics when active */
584226
584254
  setCohereActive(active) {
584227
584255
  this._cohereActive = active;
@@ -584386,7 +584414,8 @@ var init_status_bar = __esm({
584386
584414
  this.repaintContent();
584387
584415
  const pos = this.rowPositions(termRows());
584388
584416
  const writer = this._origWrite ?? process.stdout.write.bind(process.stdout);
584389
- if (ok3) {
584417
+ if (pos.metricsRow <= 0) {
584418
+ } else if (ok3) {
584390
584419
  writer(
584391
584420
  `\x1B[${pos.metricsRow};1H\x1B[2K\x1B[38;5;${TEXT_PRIMARY}m ✓ Copied to clipboard\x1B[0m`
584392
584421
  );
@@ -584408,9 +584437,11 @@ var init_status_bar = __esm({
584408
584437
  this._textSelection.armBlockMode();
584409
584438
  const pos = this.rowPositions(termRows());
584410
584439
  const writer = this._origWrite ?? process.stdout.write.bind(process.stdout);
584411
- writer(
584412
- `\x1B[${pos.metricsRow};1H\x1B[2K\x1B[38;5;${TEXT_PRIMARY}m ■ Block selection mode — click and drag\x1B[0m`
584413
- );
584440
+ if (pos.metricsRow > 0) {
584441
+ writer(
584442
+ `\x1B[${pos.metricsRow};1H\x1B[2K\x1B[38;5;${TEXT_PRIMARY}m ■ Block selection mode — click and drag\x1B[0m`
584443
+ );
584444
+ }
584414
584445
  setTimeout(() => {
584415
584446
  if (this.active) this.renderFooterAndPositionInput();
584416
584447
  }, 1500);
@@ -584471,6 +584502,17 @@ var init_status_bar = __esm({
584471
584502
  this.repaintContent();
584472
584503
  this.renderAgentTabs();
584473
584504
  }
584505
+ cycleAgentView(direction) {
584506
+ if (this._agentViews.size <= 1) return;
584507
+ const ids = Array.from(this._agentViews.keys());
584508
+ const currentIdx = Math.max(0, ids.indexOf(this._activeViewId));
584509
+ const delta = direction === "next" ? 1 : -1;
584510
+ const nextIdx = (currentIdx + delta + ids.length) % ids.length;
584511
+ const nextId2 = ids[nextIdx];
584512
+ if (!nextId2 || nextId2 === this._activeViewId) return;
584513
+ this.switchToView(nextId2);
584514
+ this.refreshHeaderContent();
584515
+ }
584474
584516
  /** Write content to a specific agent's buffer (called from sub-agent event handler) */
584475
584517
  writeToAgentView(id, text) {
584476
584518
  const view = this._agentViews.get(id);
@@ -584643,7 +584685,10 @@ var init_status_bar = __esm({
584643
584685
  buf += `${PANEL_BG_SEQ}\x1B[K\x1B[${row};${w}H${BOX_FG}${BOX_V3}${RESET4}${PANEL_BG_SEQ}`;
584644
584686
  }
584645
584687
  buf += `\x1B[${pos.bufferRow};1H${PANEL_BG_SEQ}\x1B[2K${BOX_FG}${BOX_BL3}${BOX_H3.repeat(Math.max(0, boxInnerP))}${BOX_BR3}${RESET4}${PANEL_BG_SEQ}`;
584646
- buf += `\x1B[${pos.metricsRow};1H${PANEL_BG_SEQ}\x1B[2K${this.buildMetricsLine()}${RESET4}${PANEL_BG_SEQ}\x1B[?7h\x1B[${pos.inputStartRow + 1};1H`;
584688
+ if (pos.metricsRow > 0) {
584689
+ buf += `\x1B[${pos.metricsRow};1H${PANEL_BG_SEQ}\x1B[2K${this.buildMetricsLine()}${RESET4}${PANEL_BG_SEQ}`;
584690
+ }
584691
+ buf += `\x1B[?7h\x1B[${pos.inputStartRow + 1};1H`;
584647
584692
  this.termWrite(buf);
584648
584693
  this.rememberFooterPaint(pos.inputStartRow);
584649
584694
  if (this._bannerRefresh) this._bannerRefresh();
@@ -585773,7 +585818,8 @@ ${CONTENT_BG_SEQ}`);
585773
585818
  this._updateSuggestions();
585774
585819
  const inputLines = this.computeInputLineCount(termWidth);
585775
585820
  const suggestionRows = this._suggestions.length > 0 ? this._suggestions.length + 1 : 1;
585776
- const newHeight = 1 + 1 + inputLines + suggestionRows;
585821
+ const metricsRows = this._footerMetricsVisible ? 1 : 0;
585822
+ const newHeight = metricsRows + 1 + inputLines + suggestionRows;
585777
585823
  if (newHeight !== this._currentFooterHeight) {
585778
585824
  this._currentFooterHeight = newHeight;
585779
585825
  setTermSize(process.stdout.rows ?? 24, process.stdout.columns ?? 80);
@@ -585787,7 +585833,8 @@ ${CONTENT_BG_SEQ}`);
585787
585833
  this._updateSuggestions();
585788
585834
  const inputLines = this.computeInputLineCount(termWidth);
585789
585835
  const suggestionRows = this._suggestions.length > 0 ? this._suggestions.length + 1 : 1;
585790
- return 1 + 1 + inputLines + suggestionRows !== this._currentFooterHeight;
585836
+ const metricsRows = this._footerMetricsVisible ? 1 : 0;
585837
+ return metricsRows + 1 + inputLines + suggestionRows !== this._currentFooterHeight;
585791
585838
  }
585792
585839
  /** Compute absolute row positions for all footer elements.
585793
585840
  * DELEGATES TO layout() — the centralized layout manager.
@@ -585971,7 +586018,9 @@ ${CONTENT_BG_SEQ}`);
585971
586018
  } else {
585972
586019
  buf += `\x1B[${pos.bufferRow};1H${PANEL_BG_SEQ}\x1B[2K${BOX_FG}${BOX_BL3}${BOX_H3.repeat(Math.max(0, boxInner))}${BOX_BR3}${RESET4}${PANEL_BG_SEQ}`;
585973
586020
  }
585974
- buf += `\x1B[${pos.metricsRow};1H${PANEL_BG_SEQ}\x1B[2K${this.buildMetricsLine()}${RESET4}${PANEL_BG_SEQ}`;
586021
+ if (pos.metricsRow > 0) {
586022
+ buf += `\x1B[${pos.metricsRow};1H${PANEL_BG_SEQ}\x1B[2K${this.buildMetricsLine()}${RESET4}${PANEL_BG_SEQ}`;
586023
+ }
585975
586024
  buf += "\x1B[?7h";
585976
586025
  if (this.writeDepth === 0) {
585977
586026
  buf += `\x1B[${cursorTermRow};${inputWrap.cursorCol}H${CURSOR_BLINK_BLOCK}\x1B[?25h`;
@@ -586022,7 +586071,10 @@ ${CONTENT_BG_SEQ}`);
586022
586071
  } else {
586023
586072
  buf += `\x1B[${pos.bufferRow};1H${PANEL_BG_SEQ}\x1B[2K${BOX_FG}${BOX_BL3}${BOX_H3.repeat(Math.max(0, boxInnerR))}${BOX_BR3}${RESET4}`;
586024
586073
  }
586025
- buf += `\x1B[${pos.metricsRow};1H${PANEL_BG_SEQ}\x1B[2K${this.buildMetricsLine()}${RESET4}${PANEL_BG_SEQ}\x1B[?7h\x1B8` + // DEC restore cursor
586074
+ if (pos.metricsRow > 0) {
586075
+ buf += `\x1B[${pos.metricsRow};1H${PANEL_BG_SEQ}\x1B[2K${this.buildMetricsLine()}${RESET4}${PANEL_BG_SEQ}`;
586076
+ }
586077
+ buf += "\x1B[?7h\x1B8" + // DEC restore cursor
586026
586078
  (this.writeDepth === 0 ? `${CURSOR_BLINK_BLOCK}\x1B[?25h` : "");
586027
586079
  this.termWrite(buf);
586028
586080
  this.rememberFooterPaint(pos.inputStartRow);
@@ -586089,7 +586141,9 @@ ${CONTENT_BG_SEQ}`);
586089
586141
  }
586090
586142
  const boxInnerS = w - 2;
586091
586143
  buf += `\x1B[${pos.bufferRow};1H${PANEL_BG_SEQ}\x1B[2K${BOX_FG}${BOX_BL3}${BOX_H3.repeat(Math.max(0, boxInnerS))}${BOX_BR3}${RESET4}`;
586092
- buf += `\x1B[${pos.metricsRow};1H${PANEL_BG_SEQ}\x1B[2K${this.buildMetricsLine()}${RESET4}`;
586144
+ if (pos.metricsRow > 0) {
586145
+ buf += `\x1B[${pos.metricsRow};1H${PANEL_BG_SEQ}\x1B[2K${this.buildMetricsLine()}${RESET4}`;
586146
+ }
586093
586147
  buf += "\x1B[?7h";
586094
586148
  buf += "\x1B8";
586095
586149
  if (heightDelta > 0) {
@@ -586128,7 +586182,9 @@ ${CONTENT_BG_SEQ}`);
586128
586182
  }
586129
586183
  }
586130
586184
  buf += `\x1B[${pos.bufferRow};1H${PANEL_BG_SEQ}\x1B[2K${BOX_FG}${BOX_BL3}${BOX_H3.repeat(Math.max(0, boxInnerH))}${BOX_BR3}${RESET4}${PANEL_BG_SEQ}`;
586131
- buf += `\x1B[${pos.metricsRow};1H${PANEL_BG_SEQ}\x1B[2K${this.buildMetricsLine()}${RESET4}${PANEL_BG_SEQ}`;
586185
+ if (pos.metricsRow > 0) {
586186
+ buf += `\x1B[${pos.metricsRow};1H${PANEL_BG_SEQ}\x1B[2K${this.buildMetricsLine()}${RESET4}${PANEL_BG_SEQ}`;
586187
+ }
586132
586188
  buf += "\x1B[?7h\x1B8\x1B[?25l";
586133
586189
  this.termWrite(buf);
586134
586190
  this.rememberFooterPaint(pos.inputStartRow);
@@ -586331,6 +586387,9 @@ ${CONTENT_BG_SEQ}`);
586331
586387
  if (onEscape) di.on("escape", () => onEscape());
586332
586388
  if (onCtrlO) di.on("ctrl-o", () => onCtrlO());
586333
586389
  if (onCtrlL) di.on("ctrl-l", () => onCtrlL());
586390
+ di.on("ctrl-i", () => self2.toggleFooterMetrics());
586391
+ di.on("ctrl-left", () => self2.cycleAgentView("prev"));
586392
+ di.on("ctrl-right", () => self2.cycleAgentView("next"));
586334
586393
  di.on("pageup", () => self2.pageUpContent());
586335
586394
  di.on("pagedown", () => self2.pageDownContent());
586336
586395
  di.on("shiftup", () => self2.scrollContentUp(3));
@@ -624800,10 +624859,11 @@ function iso(ts) {
624800
624859
  return "";
624801
624860
  }
624802
624861
  }
624803
- var TELEGRAM_SOCIAL_LIMITS;
624862
+ var DEFAULT_TELEGRAM_REPLY_MODE, TELEGRAM_SOCIAL_LIMITS;
624804
624863
  var init_telegram_social_state_types = __esm({
624805
624864
  "packages/cli/src/tui/telegram-social-state-types.ts"() {
624806
624865
  "use strict";
624866
+ DEFAULT_TELEGRAM_REPLY_MODE = "reply_then_notes";
624807
624867
  TELEGRAM_SOCIAL_LIMITS = {
624808
624868
  relationships: 240,
624809
624869
  salience: 180,
@@ -624848,7 +624908,7 @@ function formatTelegramSocialStateContext(state, input) {
624848
624908
  `Current actor node: ${senderKey3} [${participant?.actorKind || telegramSocialActorKind(input)}] messages=${participant?.messageCount ?? 0}${participant?.lastText ? ` last=${jsonLine(participant.lastText, 140)}` : ""}`,
624849
624909
  thread ? `Active channel/thread: ${thread.key}; messages=${thread.messageCount}; participants=${thread.participantKeys.slice(-8).join(", ") || "none"}; last_outcomes=${thread.lastOutcomeIds.slice(-5).join(", ") || "none"}` : "",
624850
624910
  delivery ? `Telegram text delivery raw warning stream: ${delivery.status}; key=${telegramTextDeliveryCapabilityKey({ chatId: input.chatId, messageThreadId: input.messageThreadId })}${delivery.reason ? `; raw=${jsonLine(delivery.reason, 180)}` : ""}` : "Telegram text delivery raw warning stream: none recorded",
624851
- resolvedReplyMode ? `Resolved reply mode: ${resolvedReplyMode.item.mode} from ${resolvedReplyMode.item.scope} (${resolvedReplyMode.key}); confidence=${resolvedReplyMode.item.confidence.toFixed(2)}${resolvedReplyMode.item.note ? ` note=${jsonLine(resolvedReplyMode.item.note, 120)}` : ""}` : "Resolved reply mode: notes_then_reply (system default)",
624911
+ resolvedReplyMode ? `Resolved reply mode: ${resolvedReplyMode.item.mode} from ${resolvedReplyMode.item.scope} (${resolvedReplyMode.key}); confidence=${resolvedReplyMode.item.confidence.toFixed(2)}${resolvedReplyMode.item.note ? ` note=${jsonLine(resolvedReplyMode.item.note, 120)}` : ""}` : `Resolved reply mode: ${DEFAULT_TELEGRAM_REPLY_MODE} (system default)`,
624852
624912
  preferences.length ? `Relevant preference vector for ${senderKey3}:
624853
624913
  ${preferences.join("\n")}` : `Relevant preference vector for ${senderKey3}: no durable preferences yet`,
624854
624914
  scopedPreferences.length ? `Scoped reply preferences:
@@ -625733,6 +625793,11 @@ function telegramDecisionNumber(parsed, keys, nestedKeys = ["internal_notes", "i
625733
625793
  function parseTelegramReplyMode(raw) {
625734
625794
  return raw === "reply_then_notes" || raw === "notes_then_reply" || raw === "reply_only" ? raw : void 0;
625735
625795
  }
625796
+ function formatTelegramPipelineDuration(ms) {
625797
+ if (!Number.isFinite(ms) || ms < 0) return "?";
625798
+ if (ms < 1e3) return `${Math.round(ms)}ms`;
625799
+ return `${(ms / 1e3).toFixed(1)}s`;
625800
+ }
625736
625801
  function parseTelegramReplyPreferenceToolScope(raw) {
625737
625802
  return raw === "current_user_in_chat" || raw === "current_user_global" || raw === "current_group" ? raw : void 0;
625738
625803
  }
@@ -628309,6 +628374,7 @@ External acquisition contract:
628309
628374
  ].filter(Boolean).join(" or ");
628310
628375
  const lines = [
628311
628376
  `decision: ${route} (${decision2.source}, confidence ${decision2.confidence.toFixed(2)})`,
628377
+ decision2.routerLatencyMs !== void 0 ? `timing: ${decision2.routerMode ?? "router"} attention pipeline ${formatTelegramPipelineDuration(decision2.routerLatencyMs)}` : "",
628312
628378
  attention ? `attention: ${attention}` : "",
628313
628379
  `reason: ${decision2.reason}`,
628314
628380
  decision2.diagnosticNote ? `router diagnostic: ${decision2.diagnosticNote}` : "",
@@ -629659,9 +629725,9 @@ ${mediaContext}` : ""
629659
629725
  return resolveTelegramReplyModePreference(this.telegramSocialStateForSession(sessionKey), {
629660
629726
  chatId: msg.chatId,
629661
629727
  actor: this.telegramMessageSocialActorInput(msg)
629662
- })?.mode ?? "notes_then_reply";
629728
+ })?.mode ?? DEFAULT_TELEGRAM_REPLY_MODE;
629663
629729
  } catch {
629664
- return "notes_then_reply";
629730
+ return DEFAULT_TELEGRAM_REPLY_MODE;
629665
629731
  }
629666
629732
  }
629667
629733
  stripTelegramDecisionNotes(decision2) {
@@ -632589,9 +632655,14 @@ ${stimulationProbe.context}`,
632589
632655
  "",
632590
632656
  context2
632591
632657
  ].filter(Boolean).join("\n");
632592
- const brokerSnap = getModelBroker().snapshot();
632593
- const idleSlotRatio = brokerSnap.slots.capacity > 0 ? 1 - brokerSnap.slots.inUse / brokerSnap.slots.capacity : 1;
632594
- const consolidatedMode = idleSlotRatio < 0.5 || process.env["OMNIUS_TG_FORCE_CONSOLIDATED"] === "1";
632658
+ const routerPipelineStartMs = Date.now();
632659
+ const consolidatedMode = process.env["OMNIUS_TG_DELIBERATIVE_ROUTER"] !== "1";
632660
+ const routerMode = consolidatedMode ? "consolidated" : "deliberative";
632661
+ const withRouterTelemetry = (decision2) => ({
632662
+ ...decision2,
632663
+ routerMode,
632664
+ routerLatencyMs: Date.now() - routerPipelineStartMs
632665
+ });
632595
632666
  let reflectionNotes;
632596
632667
  let reflectionContext;
632597
632668
  if (consolidatedMode) {
@@ -632747,7 +632818,7 @@ ${this.quoteTelegramContextBlock(msg.text, 1200)}`
632747
632818
  defaultShouldReply: false
632748
632819
  });
632749
632820
  if (parsed) {
632750
- return this.applyTelegramSilentReflectionNotes(parsed, reflectionNotes);
632821
+ return withRouterTelemetry(this.applyTelegramSilentReflectionNotes(parsed, reflectionNotes));
632751
632822
  }
632752
632823
  if (isLikelyTruncatedRouterJson(text)) {
632753
632824
  if (diagnostics) diagnostics.repairStatus = "skipped-truncation-rerun";
@@ -632771,7 +632842,7 @@ ${this.quoteTelegramContextBlock(msg.text, 1200)}`
632771
632842
  defaultShouldReply: false
632772
632843
  });
632773
632844
  if (reparsed) {
632774
- return this.applyTelegramSilentReflectionNotes(reparsed, reflectionNotes);
632845
+ return withRouterTelemetry(this.applyTelegramSilentReflectionNotes(reparsed, reflectionNotes));
632775
632846
  }
632776
632847
  } catch {
632777
632848
  }
@@ -632785,7 +632856,7 @@ ${this.quoteTelegramContextBlock(msg.text, 1200)}`
632785
632856
  sessionKey
632786
632857
  );
632787
632858
  if (repaired) {
632788
- return this.applyTelegramSilentReflectionNotes(repaired, reflectionNotes);
632859
+ return withRouterTelemetry(this.applyTelegramSilentReflectionNotes(repaired, reflectionNotes));
632789
632860
  }
632790
632861
  const strictRetry = await this.retryTelegramInteractionDecisionStrict(
632791
632862
  backend,
@@ -632797,7 +632868,7 @@ ${this.quoteTelegramContextBlock(msg.text, 1200)}`
632797
632868
  sessionKey
632798
632869
  );
632799
632870
  if (strictRetry) {
632800
- return this.applyTelegramSilentReflectionNotes(strictRetry, reflectionNotes);
632871
+ return withRouterTelemetry(this.applyTelegramSilentReflectionNotes(strictRetry, reflectionNotes));
632801
632872
  }
632802
632873
  const invalidRouterPreview = telegramRouterRawPreview(text);
632803
632874
  const failureNarrative = this.summarizeTelegramRouterFailure(diagnostics);
@@ -632815,7 +632886,7 @@ ${this.quoteTelegramContextBlock(msg.text, 1200)}`
632815
632886
  ),
632816
632887
  raw: text
632817
632888
  }, reflectionNotes);
632818
- return fallback;
632889
+ return withRouterTelemetry(fallback);
632819
632890
  } catch (err) {
632820
632891
  const failureNarrative = this.summarizeTelegramRouterFailure(diagnostics);
632821
632892
  const errMsg = err instanceof Error ? err.message : String(err);
@@ -632832,7 +632903,7 @@ ${this.quoteTelegramContextBlock(msg.text, 1200)}`
632832
632903
  `router failed before live notes were generated: ${errMsg.slice(0, 160)}`
632833
632904
  )
632834
632905
  }, reflectionNotes);
632835
- return fallback;
632906
+ return withRouterTelemetry(fallback);
632836
632907
  }
632837
632908
  }
632838
632909
  /**
@@ -633726,6 +633797,10 @@ Join: ${newUrl}`);
633726
633797
  }
633727
633798
  const rapidContext = this.formatTelegramQueuedSessionContext(work);
633728
633799
  const attentionViewId = this.registerTelegramAttentionView(msg, toolContext);
633800
+ this.subAgentViewCallbacks?.onWrite(
633801
+ attentionViewId || this.viewIdForMessage(msg),
633802
+ `pipeline: queued ${formatTelegramPipelineDuration(Date.now() - work.enqueuedAtMs)}; bundled ${work.messageCount} message${work.messageCount === 1 ? "" : "s"}; entering attention router`
633803
+ );
633729
633804
  let decision2;
633730
633805
  try {
633731
633806
  decision2 = await this.inferTelegramInteractionDecisionCoalesced(msg, toolContext);
@@ -639439,14 +639514,14 @@ var init_direct_input = __esm({
639439
639514
  return;
639440
639515
  case "C":
639441
639516
  if (params === "1;5") {
639442
- this._wordRight();
639517
+ this.emit("ctrl-right");
639443
639518
  return;
639444
639519
  }
639445
639520
  if (this.cursor < this.line.length) this.cursor++;
639446
639521
  return;
639447
639522
  case "D":
639448
639523
  if (params === "1;5") {
639449
- this._wordLeft();
639524
+ this.emit("ctrl-left");
639450
639525
  return;
639451
639526
  }
639452
639527
  if (this.cursor > 0) this.cursor--;
@@ -639501,6 +639576,10 @@ var init_direct_input = __esm({
639501
639576
  return;
639502
639577
  }
639503
639578
  }
639579
+ if (hasCtrl && !hasShift && (codepoint === 73 || codepoint === 105)) {
639580
+ this.emit("ctrl-i");
639581
+ return;
639582
+ }
639504
639583
  return;
639505
639584
  }
639506
639585
  }
@@ -639612,7 +639691,7 @@ var init_direct_input = __esm({
639612
639691
  /** Handle Tab completion */
639613
639692
  _handleTab() {
639614
639693
  if (this.line.length === 0) {
639615
- this.emit("tab-empty");
639694
+ this.emit("ctrl-i");
639616
639695
  return;
639617
639696
  }
639618
639697
  if (!this._completer) return;
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "omnius",
3
- "version": "1.0.164",
3
+ "version": "1.0.166",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "omnius",
9
- "version": "1.0.164",
9
+ "version": "1.0.166",
10
10
  "bundleDependencies": [
11
11
  "image-to-ascii"
12
12
  ],
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "omnius",
3
- "version": "1.0.164",
3
+ "version": "1.0.166",
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",