hermes-agent/ui-tui/src/lib
brooklyn! 88f5186d35
fix(tui): anchor splitReasoning unclosed-tag regex to start of input (#29426)
`splitReasoning()` strips paired `<think>…</think>` blocks first, then runs
an unclosed-trailing regex to catch reasoning that hasn't yet streamed its
closer. That second regex was unanchored and greedy:

    new RegExp(`<${tag}>([\\s\\S]*)$`, 'i')

So any literal `<think>` somewhere in prose — a model quoting the tag, a
code example, or a stream-mid-tag before the closer arrives — consumed
every paragraph after it to EOF. User-visible symptom: "TUI eats last
paragraph of output," both during streaming and on settled turns.

Real reasoning streams always lead the message (that's the only place an
unclosed opener can legitimately appear during streaming). Anchor the
regex to `^\s*` so mid-prose mentions of the tag are preserved.

Empirical repro before the fix:

    splitReasoning('final answer paragraph one.\n\n<think>internal note\n\nfinal answer paragraph two.')
    → text: 'final answer paragraph one.'        ← paragraph two GONE

After:

    → text: 'final answer paragraph one.\n\n<think>internal note\n\nfinal answer paragraph two.'

Updated the existing trailing-unclosed test to lead with `<think>` (the
real-world shape) and added a regression test pinning the mid-text case.

ui-tui type-check clean, 808/808 vitest pass.
2026-05-20 14:09:38 -05:00
..
circularBuffer.ts fix(tui): address PR #13231 review comments 2026-04-20 19:09:09 -05:00
clipboard.ts fix(tui): improve clipboard copy fallbacks 2026-05-05 03:59:00 -07:00
editor.test.ts fix(tui): address Copilot review on editor handoff 2026-04-25 20:34:24 -05:00
editor.ts fix(tui): address Copilot review on editor handoff 2026-04-25 20:34:24 -05:00
emoji.ts fix(tui): inject VS16 so text-default emoji render as color glyphs 2026-04-21 15:52:39 -05:00
externalCli.ts feat(tui): /model and /setup slash commands with in-place CLI handoff 2026-04-17 10:58:18 -05:00
externalLink.ts fix(tui): keep x status citation fallbacks link-like 2026-05-18 20:01:58 -07:00
forceTruecolor.ts fix(tui): harden Terminal.app render behavior 2026-05-16 22:51:51 -05:00
fpsStore.ts chore(tui): /clean recent perf work — KISS/DRY pass 2026-04-26 20:38:47 -05:00
gracefulExit.ts refactor(tui): /clean pass on memory + resize helpers 2026-04-20 18:58:44 -05:00
history.ts refactor(tui): /clean pass across ui-tui — 49 files, −217 LOC 2026-04-16 22:32:53 -05:00
inputMetrics.ts review(tui): update stale comment refs to renamed visualLines helper 2026-05-17 12:32:29 -05:00
liveProgress.test.ts chore(tui): /clean recent perf work — KISS/DRY pass 2026-04-26 20:38:47 -05:00
liveProgress.ts chore(tui): /clean recent perf work — KISS/DRY pass 2026-04-26 20:38:47 -05:00
mathUnicode.ts docs: clarify wrapForFrac and streaming math-fence rationale 2026-04-28 21:43:32 -04:00
memory.ts fix(tui): address PR #13231 review comments 2026-04-20 19:09:09 -05:00
memoryMonitor.ts chore(salvage): strip duplicated/merge-corrupted blocks from PR #17664 2026-04-29 21:56:51 -07:00
messages.test.ts fix(tui): stabilize live todo progress 2026-04-26 15:55:38 -05:00
messages.ts fix(tui): stabilize live todo progress 2026-04-26 15:55:38 -05:00
openExternalUrl.test.ts tui: make URLs clickable + hover-highlight in any terminal (#25071) 2026-05-13 13:52:10 -07:00
openExternalUrl.ts tui: make URLs clickable + hover-highlight in any terminal (#25071) 2026-05-13 13:52:10 -07:00
osc52.ts fix(tui): raise picker selection contrast with inverse + bold 2026-04-21 14:31:21 -05:00
perfPane.tsx fix(tui): address virtual row and perf log review notes 2026-04-26 21:37:43 -05:00
platform.ts fix(tui): respect voice.record_key config (supersedes #19028, #19339) (#19835) 2026-05-04 15:49:28 -07:00
precisionWheel.ts fix(tui): steady transcript scrollbar (#20917) 2026-05-06 14:50:31 -07:00
prompt.ts fix(cli): show active profile in TUI prompt 2026-05-19 00:05:20 -07:00
reasoning.ts fix(tui): anchor splitReasoning unclosed-tag regex to start of input (#29426) 2026-05-20 14:09:38 -05:00
rpc.ts fix(goals): make /goal work in TUI and fix gateway verdict delivery (#19209) 2026-05-03 05:49:12 -07:00
subagentTree.ts refactor(tui): consolidate agents overlay — share duration/root helpers via lib 2026-04-22 12:10:21 -05:00
syntax.ts fix(tui): restore macOS copy behavior and theme polish (#17131) 2026-04-28 18:47:14 -05:00
terminalModes.ts fix(tui): tighten SGR fragment matching 2026-04-30 17:50:49 -05:00
terminalParity.ts fix(tui): raise picker selection contrast with inverse + bold 2026-04-21 14:31:21 -05:00
terminalSetup.ts style(tui): apply npm run fix 2026-04-28 22:18:26 -05:00
termux.ts fix(tui): termux-gate scrollback preservation, touch-friendly defaults 2026-05-19 12:49:23 -07:00
text.test.ts fix: clean newline paste thingy 2026-04-13 12:54:48 -05:00
text.ts Merge pull request #28829 from NousResearch/bb/tui-no-history-truncation 2026-05-19 12:17:35 -05:00
todo.test.ts fix(tui): pin todo panel above live output 2026-04-26 15:27:31 -05:00
todo.ts fix(tui): pin todo panel above live output 2026-04-26 15:27:31 -05:00
viewportStore.ts fix(tui): steady transcript scrollbar (#20917) 2026-05-06 14:50:31 -07:00
virtualHeights.ts Merge pull request #28829 from NousResearch/bb/tui-no-history-truncation 2026-05-19 12:17:35 -05:00
wheelAccel.ts chore(tui): /clean recent perf work — KISS/DRY pass 2026-04-26 20:38:47 -05:00