opentui(phase3): launcher integration — HERMES_TUI_ENGINE dual-engine

hermes --tui launches the native OpenTUI engine (Bun) when
HERMES_TUI_ENGINE=opentui (env) or display.tui_engine=opentui (config);
Ink stays the default and the shipping path is untouched.

- _resolve_tui_engine() (env > config > ink); refuses opentui on
  Windows/Termux (no Bun) -> falls back to ink with a notice.
- _make_opentui_argv() -> [bun, src/entry.real.tsx] (no build step).
- _bun_bin() with HERMES_BUN override.
- Branch at top of _make_tui_argv BEFORE _ensure_tui_node (Bun-only host
  must not bootstrap Node).
- Gate _launch_tui NODE_OPTIONS/--max-old-space-size on engine==ink (Bun
  is JSC; the V8 flag errors/ignores).

Verified end-to-end via tmux: real hermes --tui -> Bun -> OpenTUI ->
real Python gateway streamed a real reply. No-flag default still ink.
This commit is contained in:
alt-glitch 2026-06-08 11:11:54 +00:00
parent 24f74eb888
commit 2bd9c9b881
741 changed files with 17733 additions and 79889 deletions

View file

@ -1,44 +0,0 @@
from hermes_cli.web_server import _display_system_platform
def test_windows_11_build_displays_as_windows_11():
info = _display_system_platform(
system="Windows",
release="10",
version="10.0.26200",
platform_label="Windows-10-10.0.26200-SP0",
)
assert info["os"] == "Windows"
assert info["os_release"] == "11"
assert info["os_version"] == "10.0.26200"
assert info["platform"] == "Windows-11-10.0.26200-SP0"
def test_windows_10_build_keeps_windows_10_label():
info = _display_system_platform(
system="Windows",
release="10",
version="10.0.19045",
platform_label="Windows-10-10.0.19045-SP0",
)
assert info["os"] == "Windows"
assert info["os_release"] == "10"
assert info["platform"] == "Windows-10-10.0.19045-SP0"
def test_non_windows_platform_unchanged():
info = _display_system_platform(
system="Linux",
release="6.8.0",
version="#1 SMP",
platform_label="Linux-6.8.0-x86_64-with-glibc2.39",
)
assert info == {
"os": "Linux",
"os_release": "6.8.0",
"os_version": "#1 SMP",
"platform": "Linux-6.8.0-x86_64-with-glibc2.39",
}