From 739aa84886f977cba85c21342c0dd357ab282c61 Mon Sep 17 00:00:00 2001 From: kyzhang-melo Date: Wed, 1 Apr 2026 09:23:20 +0800 Subject: [PATCH] fix(acp): return invalid params for unsupported session mode --- src/kimi_cli/acp/server.py | 6 +++++- tests/acp/test_protocol_v1.py | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/src/kimi_cli/acp/server.py b/src/kimi_cli/acp/server.py index 31852d036..ec7d557dd 100644 --- a/src/kimi_cli/acp/server.py +++ b/src/kimi_cli/acp/server.py @@ -311,7 +311,11 @@ async def list_sessions( ) async def set_session_mode(self, mode_id: str, session_id: str, **kwargs: Any) -> None: - assert mode_id == "default", "Only default mode is supported" + if session_id not in self.sessions: + raise acp.RequestError.invalid_params({"session_id": "Session not found"}) + + if mode_id != "default": + raise acp.RequestError.invalid_params({"mode_id": "Only default mode is supported"}) async def set_session_model(self, model_id: str, session_id: str, **kwargs: Any) -> None: logger.info( diff --git a/tests/acp/test_protocol_v1.py b/tests/acp/test_protocol_v1.py index 70e413caa..a66fcca2c 100644 --- a/tests/acp/test_protocol_v1.py +++ b/tests/acp/test_protocol_v1.py @@ -162,3 +162,37 @@ async def test_cancel_session( # cancel should not raise await conn.cancel(session_id=session_resp.session_id) + + +@pytest.mark.asyncio +async def test_set_session_mode_rejects_non_default_mode(acp_client, tmp_path): + conn, _ = acp_client + await conn.initialize(protocol_version=1) + + work_dir = tmp_path / "workdir" + work_dir.mkdir(exist_ok=True) + session = await conn.new_session(cwd=str(work_dir)) + + with pytest.raises(acp.RequestError) as exc_info: + await conn.set_session_mode( + mode_id="non-default", + session_id=session.session_id, + ) + + assert exc_info.value.code == -32602 + assert exc_info.value.data == {"mode_id": "Only default mode is supported"} + + +@pytest.mark.asyncio +async def test_set_session_mode_rejects_unknown_session(acp_client): + conn, _ = acp_client + await conn.initialize(protocol_version=1) + + with pytest.raises(acp.RequestError) as exc_info: + await conn.set_session_mode( + mode_id="default", + session_id="missing-session", + ) + + assert exc_info.value.code == -32602 + assert exc_info.value.data == {"session_id": "Session not found"}