From 81d6341f9db3f452491bc42782681a29fc38d331 Mon Sep 17 00:00:00 2001 From: Engel Nyst Date: Thu, 4 Sep 2025 16:49:54 +0200 Subject: [PATCH] chore(server): rename Session to WebSession (#10565) --- .../docker_nested_conversation_manager.py | 2 +- .../standalone_conversation_manager.py | 2 +- openhands/server/session/__init__.py | 7 +++-- openhands/server/session/session.py | 28 ++++++++++++++++++- 4 files changed, 34 insertions(+), 5 deletions(-) diff --git a/openhands/server/conversation_manager/docker_nested_conversation_manager.py b/openhands/server/conversation_manager/docker_nested_conversation_manager.py index eb46d3b313..3bf889565a 100644 --- a/openhands/server/conversation_manager/docker_nested_conversation_manager.py +++ b/openhands/server/conversation_manager/docker_nested_conversation_manager.py @@ -34,7 +34,7 @@ from openhands.server.data_models.agent_loop_info import AgentLoopInfo from openhands.server.monitoring import MonitoringListener from openhands.server.session.conversation import ServerConversation from openhands.server.session.conversation_init_data import ConversationInitData -from openhands.server.session.session import Session +from openhands.server.session.session import WebSession as Session from openhands.storage.conversation.conversation_store import ConversationStore from openhands.storage.data_models.conversation_metadata import ConversationMetadata from openhands.storage.data_models.conversation_status import ConversationStatus diff --git a/openhands/server/conversation_manager/standalone_conversation_manager.py b/openhands/server/conversation_manager/standalone_conversation_manager.py index 7668a6a036..5da4e323cd 100644 --- a/openhands/server/conversation_manager/standalone_conversation_manager.py +++ b/openhands/server/conversation_manager/standalone_conversation_manager.py @@ -23,7 +23,7 @@ from openhands.server.data_models.agent_loop_info import AgentLoopInfo from openhands.server.monitoring import MonitoringListener from openhands.server.session.agent_session import WAIT_TIME_BEFORE_CLOSE, AgentSession from openhands.server.session.conversation import ServerConversation -from openhands.server.session.session import Session +from openhands.server.session.session import WebSession as Session from openhands.storage.conversation.conversation_store import ConversationStore from openhands.storage.data_models.conversation_metadata import ConversationMetadata from openhands.storage.data_models.conversation_status import ConversationStatus diff --git a/openhands/server/session/__init__.py b/openhands/server/session/__init__.py index 52ded7b73f..205cf3068a 100644 --- a/openhands/server/session/__init__.py +++ b/openhands/server/session/__init__.py @@ -1,3 +1,6 @@ -from openhands.server.session.session import Session +# Backward-compatible import for the web server-bound session wrapper. +# The canonical name is WebSession; Session is an alias to be removed later. +from openhands.server.session.session import WebSession +from openhands.server.session.session import WebSession as Session -__all__ = ['Session'] +__all__ = ['WebSession', 'Session'] diff --git a/openhands/server/session/session.py b/openhands/server/session/session.py index 2b830e4ca5..c38bba2122 100644 --- a/openhands/server/session/session.py +++ b/openhands/server/session/session.py @@ -37,7 +37,28 @@ from openhands.storage.data_models.settings import Settings from openhands.storage.files import FileStore -class Session: +class WebSession: + """Web server-bound session wrapper. + + This was previously named `Session`. We keep `Session` as a compatibility alias + (see openhands.server.session.__init__) so downstream imports/tests continue to + work. The class manages a single web client connection and orchestrates the + AgentSession lifecycle for that conversation. + + Attributes: + sid: Stable conversation id across transports. + sio: Socket.IO server used to emit events to the web client. + last_active_ts: Unix timestamp of last successful send. + is_alive: Whether the web connection is still alive. + agent_session: Core agent session coordinating runtime/LLM. + loop: The asyncio loop associated with the session. + config: Effective OpenHands configuration for this conversation. + llm_registry: Registry responsible for LLM access and retry hooks. + file_store: File storage interface for this conversation. + user_id: Optional multi-tenant user identifier. + logger: Logger with session context. + """ + sid: str sio: socketio.AsyncServer | None last_active_ts: int = 0 @@ -427,3 +448,8 @@ class Session: asyncio.run_coroutine_threadsafe( self._send_status_message(msg_type, runtime_status, message), self.loop ) + + +# Backward-compatible alias for external imports that still reference +# openhands.server.session.session import Session +Session = WebSession