mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-07-10 13:31:38 +00:00
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.
27 lines
1.3 KiB
Python
27 lines
1.3 KiB
Python
import pytest
|
|
from agent.model_metadata import parse_available_output_tokens_from_error
|
|
|
|
|
|
class TestParseOpenRouterOutputCap:
|
|
"""OpenRouter/Nous phrase the output-cap error as a context breakdown."""
|
|
|
|
def test_openrouter_breakdown_format(self):
|
|
msg = ("This endpoint's maximum context length is 200000 tokens. "
|
|
"However, you requested about 195000 tokens "
|
|
"(150000 of text input, 40000 of tool input, 5000 in the output).")
|
|
# available output = 200000 - 150000 - 40000 = 10000
|
|
assert parse_available_output_tokens_from_error(msg) == 10000
|
|
|
|
def test_anthropic_format_still_works(self):
|
|
msg = ("max_tokens: 32768 > context_window: 200000 - "
|
|
"input_tokens: 190000 = available_tokens: 10000")
|
|
assert parse_available_output_tokens_from_error(msg) == 10000
|
|
|
|
def test_non_output_cap_error_returns_none(self):
|
|
assert parse_available_output_tokens_from_error("some unrelated 400 error") is None
|
|
|
|
def test_breakdown_with_no_room_returns_none(self):
|
|
# ctx - text - tool <= 0 -> None (don't return a non-positive cap)
|
|
msg = ("maximum context length is 1000 tokens "
|
|
"(900 of text input, 200 of tool input, 0 in the output)")
|
|
assert parse_available_output_tokens_from_error(msg) is None
|