fix: keep ACP stdout protocol-clean
Route AIAgent print output to stderr via _print_fn for ACP stdio sessions. Gate quiet-mode spinner startup on _should_start_quiet_spinner() so JSON-RPC on stdout isn't corrupted. Child agents inherit the redirect. Co-authored-by: Git-on-my-level <Git-on-my-level@users.noreply.github.com>
This commit is contained in:
@@ -2612,6 +2612,24 @@ def test_aiagent_uses_copilot_acp_client():
|
||||
assert mock_acp_client.call_args.kwargs["args"] == ["--acp", "--stdio"]
|
||||
|
||||
|
||||
def test_quiet_spinner_allowed_with_explicit_print_fn(agent):
|
||||
agent._print_fn = lambda *_a, **_kw: None
|
||||
with patch.object(run_agent.sys.stdout, "isatty", return_value=False):
|
||||
assert agent._should_start_quiet_spinner() is True
|
||||
|
||||
|
||||
def test_quiet_spinner_allowed_on_real_tty(agent):
|
||||
agent._print_fn = None
|
||||
with patch.object(run_agent.sys.stdout, "isatty", return_value=True):
|
||||
assert agent._should_start_quiet_spinner() is True
|
||||
|
||||
|
||||
def test_quiet_spinner_suppressed_on_non_tty_without_print_fn(agent):
|
||||
agent._print_fn = None
|
||||
with patch.object(run_agent.sys.stdout, "isatty", return_value=False):
|
||||
assert agent._should_start_quiet_spinner() is False
|
||||
|
||||
|
||||
def test_is_openai_client_closed_honors_custom_client_flag():
|
||||
assert AIAgent._is_openai_client_closed(SimpleNamespace(is_closed=True)) is True
|
||||
assert AIAgent._is_openai_client_closed(SimpleNamespace(is_closed=False)) is False
|
||||
|
||||
Reference in New Issue
Block a user