diff --git a/src/agentarts/sdk/memory/async_client.py b/src/agentarts/sdk/memory/async_client.py index 38649e6c..1fdf9611 100644 --- a/src/agentarts/sdk/memory/async_client.py +++ b/src/agentarts/sdk/memory/async_client.py @@ -196,6 +196,10 @@ async def delete_session(self, space_id: str, session_id: str) -> None: """Delete a session (soft delete) - identical to sync version.""" await self._async_data_plane.delete_session(space_id, session_id) + async def get_session(self, space_id: str, session_id: str) -> SessionInfo: + """Get session details - identical to sync version.""" + return await self._async_data_plane.get_session(space_id, session_id) + # ==================== Data Plane - Message Management (Async) ==================== async def get_last_k_messages( diff --git a/src/agentarts/sdk/memory/async_session.py b/src/agentarts/sdk/memory/async_session.py index 84e40dca..254cb9ac 100644 --- a/src/agentarts/sdk/memory/async_session.py +++ b/src/agentarts/sdk/memory/async_session.py @@ -18,6 +18,7 @@ MessageInfo, MessageListResponse, SessionCreateRequest, + SessionInfo, TextMessage, ToolCallMessage, ToolResultMessage, @@ -136,6 +137,12 @@ async def delete(self) -> None: await self._async_data_plane.delete_session(self.space_id, self.session_id) logger.info(f"Session deleted: {self.session_id} in space: {self.space_id}") + async def get_info(self) -> SessionInfo: + """Get details of this session - identical to sync version.""" + await self._ensure_initialized() + logger.info(f"Getting session info: {self.session_id} in space: {self.space_id}") + return await self._async_data_plane.get_session(self.space_id, self.session_id) + # ==================== Message Management (Async) ==================== async def get_last_k_messages( diff --git a/src/agentarts/sdk/memory/client.py b/src/agentarts/sdk/memory/client.py index 26721f54..aa8a2928 100644 --- a/src/agentarts/sdk/memory/client.py +++ b/src/agentarts/sdk/memory/client.py @@ -513,6 +513,22 @@ def delete_session(self, space_id: str, session_id: str) -> None: """ self._data_plane.delete_session(space_id, session_id) + def get_session(self, space_id: str, session_id: str) -> SessionInfo: + """ + Get session details. + + Args: + space_id: Space ID + session_id: Session ID + + Returns: + SessionInfo: Session details + + Examples: + >>> session_info = client.get_session("space-123", "session-456") + """ + return self._data_plane.get_session(space_id, session_id) + # ==================== Data Plane - Message Management ==================== def get_last_k_messages( diff --git a/src/agentarts/sdk/memory/inner/dataplane.py b/src/agentarts/sdk/memory/inner/dataplane.py index 88cc2eb8..15b27fcf 100644 --- a/src/agentarts/sdk/memory/inner/dataplane.py +++ b/src/agentarts/sdk/memory/inner/dataplane.py @@ -115,6 +115,28 @@ def delete_session(self, space_id: str, session_id: str) -> None: self.client.delete_session(space_id, session_id) logger.info(f"Session deleted: {session_id} in space: {space_id}") + def get_session(self, space_id: str, session_id: str) -> SessionInfo: + """ + Get session details. + + Args: + space_id: Space ID + session_id: Session ID + + Returns: + SessionInfo: Session details + """ + if not space_id: + msg = "space_id is required for data plane operations" + raise ValueError(msg) + if not session_id: + msg = "session_id is required for get_session" + raise ValueError(msg) + + result = self.client.get_session(space_id, session_id) + logger.info(f"Session retrieved: {session_id} in space: {space_id}") + return SessionInfo.from_dict(result) + def add_messages( self, space_id: str, diff --git a/src/agentarts/sdk/memory/inner/dataplane_async.py b/src/agentarts/sdk/memory/inner/dataplane_async.py index 6fd783f7..57dadde3 100644 --- a/src/agentarts/sdk/memory/inner/dataplane_async.py +++ b/src/agentarts/sdk/memory/inner/dataplane_async.py @@ -103,6 +103,19 @@ async def delete_session(self, space_id: str, session_id: str) -> None: await self.client.delete_session(space_id, session_id) logger.info(f"Session deleted: {session_id} in space: {space_id}") + async def get_session(self, space_id: str, session_id: str) -> SessionInfo: + """Get session details - identical to sync version.""" + if not space_id: + msg = "space_id is required for data plane operations" + raise ValueError(msg) + if not session_id: + msg = "session_id is required for get_session" + raise ValueError(msg) + + result = await self.client.get_session(space_id, session_id) + logger.info(f"Session retrieved: {session_id} in space: {space_id}") + return SessionInfo.from_dict(result) + async def add_messages( self, space_id: str, diff --git a/src/agentarts/sdk/memory/session.py b/src/agentarts/sdk/memory/session.py index b0236544..21ea5a5e 100644 --- a/src/agentarts/sdk/memory/session.py +++ b/src/agentarts/sdk/memory/session.py @@ -15,6 +15,7 @@ MessageInfo, MessageListResponse, SessionCreateRequest, + SessionInfo, TextMessage, ToolCallMessage, ToolResultMessage, @@ -215,6 +216,16 @@ def delete(self) -> None: self._data_plane.delete_session(self.space_id, self.session_id) logger.info(f"Session deleted: {self.session_id} in space: {self.space_id}") + def get_info(self) -> SessionInfo: + """ + Get details of this session. + + Returns: + SessionInfo: Session details including id, space_id, actor_id, etc. + """ + logger.info(f"Getting session info: {self.session_id} in space: {self.space_id}") + return self._data_plane.get_session(self.space_id, self.session_id) + # ==================== Message Management ==================== def get_last_k_messages(