"""display.bell_on_prompt / bell_on_complete also drive OSC 9 + Warp OSC 777 via _ring_bell.""" import json from cli import HermesCLI from hermes_cli import terminal_notify _WARP_OK = { "TERM_PROGRAM": "WarpTerminal", "WARP_CLI_AGENT_PROTOCOL_VERSION": "1", "WARP_CLIENT_VERSION": "v0.2026.08.01.00.00.stable_01", } def _ring(monkeypatch, *, flag_on, env, **kwargs): for key in _WARP_OK: monkeypatch.delenv(key, raising=False) for key, value in env.items(): monkeypatch.setenv(key, value) written = [] monkeypatch.setattr(terminal_notify, "_write_tty", written.append) cli = HermesCLI.__new__(HermesCLI) cli.bell_on_prompt = flag_on cli.session_id = "sess-1" cli._ring_bell(prompt=True, **kwargs) return "".join(written) def test_osc9_body_emitted_and_sanitized_only_when_flag_on(monkeypatch): out = _ring(monkeypatch, flag_on=True, env={}, context="approval\x1b\x07\x00\x7f!") assert out == "\x1b]9;Hermes: approval!\x07" assert _ring(monkeypatch, flag_on=False, env={}, context="approval") == "" def test_warp_osc777_only_under_supported_warp_build(monkeypatch): out = _ring(monkeypatch, flag_on=True, env=_WARP_OK, context="approval", detail="rm -rf build") prefix = "\x1b]777;notify;warp://cli-agent;" assert out.count(prefix) == 1 payload = json.loads(out.split(prefix, 1)[1].rstrip("\x07")) assert payload["agent"] == "hermes" assert payload["event"] == "permission_request" assert payload["summary"] == "rm -rf build" assert payload["session_id"] == "sess-1" assert payload["v"] == 1 # Broken build (advertises the protocol var but can't render) → OSC 9 only. broken = dict(_WARP_OK, WARP_CLIENT_VERSION="v0.2026.03.25.08.24.stable_05") assert prefix not in _ring(monkeypatch, flag_on=True, env=broken, context="approval") # Not Warp at all → OSC 9 only. not_warp = dict(_WARP_OK, TERM_PROGRAM="ghostty") assert prefix not in _ring(monkeypatch, flag_on=True, env=not_warp, context="approval")