From 1bcc87a1535cd4c17dc2bfe45fd198863404e892 Mon Sep 17 00:00:00 2001 From: Yao <364939526@qq.com> Date: Fri, 10 Apr 2026 18:45:36 +0800 Subject: [PATCH] fix(acp): declare session load and resume capabilities in initialize response (#6985) The resume_session and load_session handlers were implemented but undiscoverable by ACP clients because the capabilities weren't declared in the initialize response. Adds load_session=True and resume=SessionResumeCapabilities() plus wire-format tests. Fixes #6633. Contributed by @luyao618. --- acp_adapter/server.py | 3 +++ tests/acp/test_server.py | 13 +++++++++++++ 2 files changed, 16 insertions(+) diff --git a/acp_adapter/server.py b/acp_adapter/server.py index a5a9fa822..29f9a10e8 100644 --- a/acp_adapter/server.py +++ b/acp_adapter/server.py @@ -36,6 +36,7 @@ from acp.schema import ( SessionCapabilities, SessionForkCapabilities, SessionListCapabilities, + SessionResumeCapabilities, SessionInfo, TextContentBlock, UnstructuredCommandInput, @@ -245,9 +246,11 @@ class HermesACPAgent(acp.Agent): protocol_version=acp.PROTOCOL_VERSION, agent_info=Implementation(name="hermes-agent", version=HERMES_VERSION), agent_capabilities=AgentCapabilities( + load_session=True, session_capabilities=SessionCapabilities( fork=SessionForkCapabilities(), list=SessionListCapabilities(), + resume=SessionResumeCapabilities(), ), ), auth_methods=auth_methods, diff --git a/tests/acp/test_server.py b/tests/acp/test_server.py index f256f9896..e3baee1c1 100644 --- a/tests/acp/test_server.py +++ b/tests/acp/test_server.py @@ -68,9 +68,22 @@ class TestInitialize: resp = await agent.initialize(protocol_version=1) caps = resp.agent_capabilities assert isinstance(caps, AgentCapabilities) + assert caps.load_session is True assert caps.session_capabilities is not None assert caps.session_capabilities.fork is not None assert caps.session_capabilities.list is not None + assert caps.session_capabilities.resume is not None + + @pytest.mark.asyncio + async def test_initialize_capabilities_wire_format(self, agent): + """Verify the JSON wire format uses correct aliases so ACP clients see the right keys.""" + resp = await agent.initialize(protocol_version=1) + payload = resp.agent_capabilities.model_dump(by_alias=True, exclude_none=True) + assert payload["loadSession"] is True + session_caps = payload["sessionCapabilities"] + assert "fork" in session_caps + assert "list" in session_caps + assert "resume" in session_caps # ---------------------------------------------------------------------------