From 69ffec10c265ed79fa5ba2ed06b0c45f46b3d9ed Mon Sep 17 00:00:00 2001 From: guillaume blaquiere Date: Wed, 10 Sep 2025 13:19:46 +0200 Subject: [PATCH 01/16] feat: add endpoint to generate memory from session --- src/google/adk/cli/adk_web_server.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/google/adk/cli/adk_web_server.py b/src/google/adk/cli/adk_web_server.py index 4adce296a6..a262e95972 100644 --- a/src/google/adk/cli/adk_web_server.py +++ b/src/google/adk/cli/adk_web_server.py @@ -1017,6 +1017,16 @@ async def delete_artifact( filename=artifact_name, ) + # Add to memory the current session + @app.post("/apps/{app_name}/users/{user_id}/sessions/{session_id}/add_to_memory") + async def custom_dummy_endpoint( app_name: str, user_id: str, session_id: str): + session = await self.session_service.get_session( + app_name=app_name, + user_id=user_id, + session_id=session_id + ) + await self.memory_service.add_session_to_memory(session) + @app.post("/run", response_model_exclude_none=True) async def run_agent(req: RunAgentRequest) -> list[Event]: session = await self.session_service.get_session( From 58238d44e6e2a2b76129650f250574559ce2e991 Mon Sep 17 00:00:00 2001 From: guillaume blaquiere Date: Wed, 10 Sep 2025 13:22:42 +0200 Subject: [PATCH 02/16] chore: renaming function --- src/google/adk/cli/adk_web_server.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/google/adk/cli/adk_web_server.py b/src/google/adk/cli/adk_web_server.py index a262e95972..dda77f3878 100644 --- a/src/google/adk/cli/adk_web_server.py +++ b/src/google/adk/cli/adk_web_server.py @@ -1019,7 +1019,7 @@ async def delete_artifact( # Add to memory the current session @app.post("/apps/{app_name}/users/{user_id}/sessions/{session_id}/add_to_memory") - async def custom_dummy_endpoint( app_name: str, user_id: str, session_id: str): + async def add_session_to_memory( app_name: str, user_id: str, session_id: str): session = await self.session_service.get_session( app_name=app_name, user_id=user_id, From 69571ea7bd8833ef982133294a68b1d0bdf94957 Mon Sep 17 00:00:00 2001 From: guillaume blaquiere Date: Wed, 10 Sep 2025 13:26:05 +0200 Subject: [PATCH 03/16] fix: session missing handling --- src/google/adk/cli/adk_web_server.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/google/adk/cli/adk_web_server.py b/src/google/adk/cli/adk_web_server.py index dda77f3878..91fa7cefc6 100644 --- a/src/google/adk/cli/adk_web_server.py +++ b/src/google/adk/cli/adk_web_server.py @@ -1019,12 +1019,14 @@ async def delete_artifact( # Add to memory the current session @app.post("/apps/{app_name}/users/{user_id}/sessions/{session_id}/add_to_memory") - async def add_session_to_memory( app_name: str, user_id: str, session_id: str): + async def add_session_to_memory(app_name: str, user_id: str, session_id: str): session = await self.session_service.get_session( app_name=app_name, user_id=user_id, session_id=session_id ) + if not session: + raise HTTPException(status_code=404, detail="Session not found") await self.memory_service.add_session_to_memory(session) @app.post("/run", response_model_exclude_none=True) From e69cac4d1136bff119a826c605e12406d07c04a2 Mon Sep 17 00:00:00 2001 From: guillaume blaquiere Date: Wed, 10 Sep 2025 13:35:08 +0200 Subject: [PATCH 04/16] chore: Improvement based on Gemini recommendation --- src/google/adk/cli/adk_web_server.py | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/src/google/adk/cli/adk_web_server.py b/src/google/adk/cli/adk_web_server.py index 91fa7cefc6..0b2b201658 100644 --- a/src/google/adk/cli/adk_web_server.py +++ b/src/google/adk/cli/adk_web_server.py @@ -1017,13 +1017,27 @@ async def delete_artifact( filename=artifact_name, ) - # Add to memory the current session - @app.post("/apps/{app_name}/users/{user_id}/sessions/{session_id}/add_to_memory") - async def add_session_to_memory(app_name: str, user_id: str, session_id: str): + @app.post( + "/apps/{app_name}/users/{user_id}/sessions/{session_id}/add_to_memory", + status_code=204, + ) + async def add_session_to_memory( + app_name: str, user_id: str, session_id: str + ) -> None: + """Adds all events from a given session to the memory service. + + Args: + app_name: The name of the application. + user_id: The ID of the user. + session_id: The ID of the session to add to memory. + + Raises: + HTTPException: If the session with the given IDs is not found. + """ session = await self.session_service.get_session( app_name=app_name, user_id=user_id, - session_id=session_id + session_id=session_id, ) if not session: raise HTTPException(status_code=404, detail="Session not found") From a7a7d03121c9e1af3eed3c975fc60074b6bb9c5d Mon Sep 17 00:00:00 2001 From: guillaume blaquiere Date: Wed, 10 Sep 2025 21:25:58 +0200 Subject: [PATCH 05/16] fix: make API path more RESTful --- src/google/adk/cli/adk_web_server.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/google/adk/cli/adk_web_server.py b/src/google/adk/cli/adk_web_server.py index 0b2b201658..7feee566e8 100644 --- a/src/google/adk/cli/adk_web_server.py +++ b/src/google/adk/cli/adk_web_server.py @@ -1018,7 +1018,7 @@ async def delete_artifact( ) @app.post( - "/apps/{app_name}/users/{user_id}/sessions/{session_id}/add_to_memory", + "/apps/{app_name}/users/{user_id}/sessions/{session_id}/add-to-memory", status_code=204, ) async def add_session_to_memory( From 6b4d9473c58de85fdcab1f59753c0791e81ca08e Mon Sep 17 00:00:00 2001 From: Shangjie Chen Date: Wed, 10 Sep 2025 13:04:36 -0700 Subject: [PATCH 06/16] Update adk_web_server.py --- src/google/adk/cli/adk_web_server.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/google/adk/cli/adk_web_server.py b/src/google/adk/cli/adk_web_server.py index 46810bb254..b784e1b9c9 100644 --- a/src/google/adk/cli/adk_web_server.py +++ b/src/google/adk/cli/adk_web_server.py @@ -1032,7 +1032,7 @@ async def add_session_to_memory( session_id: The ID of the session to add to memory. Raises: - HTTPException: If the session with the given IDs is not found. + HTTPException: If the session with the given ID is not found. """ session = await self.session_service.get_session( app_name=app_name, From 68bb32981a566debd2accb96e07f2438b35e9f95 Mon Sep 17 00:00:00 2001 From: guillaume blaquiere Date: Wed, 10 Sep 2025 22:51:59 +0200 Subject: [PATCH 07/16] Chore: pyink formatting --- src/google/adk/cli/adk_web_server.py | 34 ++++++++++++++-------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/src/google/adk/cli/adk_web_server.py b/src/google/adk/cli/adk_web_server.py index 7feee566e8..1fb976a2b8 100644 --- a/src/google/adk/cli/adk_web_server.py +++ b/src/google/adk/cli/adk_web_server.py @@ -1022,26 +1022,26 @@ async def delete_artifact( status_code=204, ) async def add_session_to_memory( - app_name: str, user_id: str, session_id: str + app_name: str, user_id: str, session_id: str ) -> None: - """Adds all events from a given session to the memory service. + """Adds all events from a given session to the memory service. - Args: - app_name: The name of the application. - user_id: The ID of the user. - session_id: The ID of the session to add to memory. + Args: + app_name: The name of the application. + user_id: The ID of the user. + session_id: The ID of the session to add to memory. - Raises: - HTTPException: If the session with the given IDs is not found. - """ - session = await self.session_service.get_session( - app_name=app_name, - user_id=user_id, - session_id=session_id, - ) - if not session: - raise HTTPException(status_code=404, detail="Session not found") - await self.memory_service.add_session_to_memory(session) + Raises: + HTTPException: If the session with the given IDs is not found. + """ + session = await self.session_service.get_session( + app_name=app_name, + user_id=user_id, + session_id=session_id, + ) + if not session: + raise HTTPException(status_code=404, detail="Session not found") + await self.memory_service.add_session_to_memory(session) @app.post("/run", response_model_exclude_none=True) async def run_agent(req: RunAgentRequest) -> list[Event]: From a1a7fd830838e80c559acc28f64efcd0aa0d31de Mon Sep 17 00:00:00 2001 From: guillaume blaquiere Date: Wed, 10 Sep 2025 22:57:40 +0200 Subject: [PATCH 08/16] Chore: typo --- src/google/adk/cli/adk_web_server.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/google/adk/cli/adk_web_server.py b/src/google/adk/cli/adk_web_server.py index e87f3b0402..acbf0fc2ac 100644 --- a/src/google/adk/cli/adk_web_server.py +++ b/src/google/adk/cli/adk_web_server.py @@ -1032,7 +1032,7 @@ async def add_session_to_memory( session_id: The ID of the session to add to memory. Raises: - HTTPException: If the session with the given IDs is not found. + HTTPException: If the session with the given ID is not found. """ session = await self.session_service.get_session( app_name=app_name, From 08c19eb1cf8dc8d381d8b8310a53965868e85a0c Mon Sep 17 00:00:00 2001 From: guillaume blaquiere Date: Thu, 11 Sep 2025 09:08:56 +0200 Subject: [PATCH 09/16] fix: None body return --- src/google/adk/cli/adk_web_server.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/google/adk/cli/adk_web_server.py b/src/google/adk/cli/adk_web_server.py index acbf0fc2ac..5358382436 100644 --- a/src/google/adk/cli/adk_web_server.py +++ b/src/google/adk/cli/adk_web_server.py @@ -1042,6 +1042,7 @@ async def add_session_to_memory( if not session: raise HTTPException(status_code=404, detail="Session not found") await self.memory_service.add_session_to_memory(session) + return None @app.post("/run", response_model_exclude_none=True) async def run_agent(req: RunAgentRequest) -> list[Event]: From aecb0f04e847d1113e8338d131248fe71e03e27b Mon Sep 17 00:00:00 2001 From: guillaume blaquiere Date: Thu, 11 Sep 2025 09:17:16 +0200 Subject: [PATCH 10/16] fix: test improvement --- src/google/adk/cli/adk_web_server.py | 5 +++-- tests/unittests/cli/test_fast_api.py | 10 ++++++++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/google/adk/cli/adk_web_server.py b/src/google/adk/cli/adk_web_server.py index 5358382436..39f30c9d79 100644 --- a/src/google/adk/cli/adk_web_server.py +++ b/src/google/adk/cli/adk_web_server.py @@ -30,6 +30,7 @@ from fastapi import FastAPI from fastapi import HTTPException from fastapi import Query +from fastapi import Response from fastapi.middleware.cors import CORSMiddleware from fastapi.responses import RedirectResponse from fastapi.responses import StreamingResponse @@ -1023,7 +1024,7 @@ async def delete_artifact( ) async def add_session_to_memory( app_name: str, user_id: str, session_id: str - ) -> None: + ) -> Response: """Adds all events from a given session to the memory service. Args: @@ -1042,7 +1043,7 @@ async def add_session_to_memory( if not session: raise HTTPException(status_code=404, detail="Session not found") await self.memory_service.add_session_to_memory(session) - return None + return Response(status_code=204) @app.post("/run", response_model_exclude_none=True) async def run_agent(req: RunAgentRequest) -> list[Event]: diff --git a/tests/unittests/cli/test_fast_api.py b/tests/unittests/cli/test_fast_api.py index d1e8dcabc2..213ee4f3aa 100755 --- a/tests/unittests/cli/test_fast_api.py +++ b/tests/unittests/cli/test_fast_api.py @@ -938,6 +938,16 @@ def test_a2a_disabled_by_default(test_app): assert response.status_code == 200 logger.info("A2A disabled by default test passed") +def test_add_session_to_memory(test_app, create_test_session, mock_memory_service): + """Test adding a session to memory.""" + info = create_test_session + url = f"/apps/{info['app_name']}/users/{info['user_id']}/sessions/{info['session_id']}/add-to-memory" + response = test_app.post(url) + + # Verify the response + assert response.status_code == 204 + mock_memory_service.add_session_to_memory.assert_called_once() + logger.info("Add session to memory test completed successfully") if __name__ == "__main__": pytest.main(["-xvs", __file__]) From 5d9dc6ba3853aeca15d72d5a82cd5d22e142ba99 Mon Sep 17 00:00:00 2001 From: guillaume blaquiere Date: Thu, 11 Sep 2025 09:32:35 +0200 Subject: [PATCH 11/16] fix: test improvement --- tests/unittests/cli/test_fast_api.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/unittests/cli/test_fast_api.py b/tests/unittests/cli/test_fast_api.py index 213ee4f3aa..15c96c7156 100755 --- a/tests/unittests/cli/test_fast_api.py +++ b/tests/unittests/cli/test_fast_api.py @@ -22,6 +22,7 @@ import time from typing import Any from typing import Optional +from unittest.mock import AsyncMock from unittest.mock import MagicMock from unittest.mock import patch @@ -344,7 +345,7 @@ async def delete_artifact(self, app_name, user_id, session_id, filename): @pytest.fixture def mock_memory_service(): """Create a mock memory service.""" - return MagicMock() + return AsyncMock() @pytest.fixture @@ -938,7 +939,7 @@ def test_a2a_disabled_by_default(test_app): assert response.status_code == 200 logger.info("A2A disabled by default test passed") -def test_add_session_to_memory(test_app, create_test_session, mock_memory_service): +def test_add_session_to_memory(test_app, create_test_session): """Test adding a session to memory.""" info = create_test_session url = f"/apps/{info['app_name']}/users/{info['user_id']}/sessions/{info['session_id']}/add-to-memory" @@ -946,8 +947,7 @@ def test_add_session_to_memory(test_app, create_test_session, mock_memory_servic # Verify the response assert response.status_code == 204 - mock_memory_service.add_session_to_memory.assert_called_once() logger.info("Add session to memory test completed successfully") - + if __name__ == "__main__": pytest.main(["-xvs", __file__]) From 85cc59471ac3ff2b559c7503d52b6fac40e82bb4 Mon Sep 17 00:00:00 2001 From: guillaume blaquiere Date: Thu, 11 Sep 2025 21:17:16 +0200 Subject: [PATCH 12/16] chore: pyink fix --- tests/unittests/cli/test_fast_api.py | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/tests/unittests/cli/test_fast_api.py b/tests/unittests/cli/test_fast_api.py index 15c96c7156..06ddeca68e 100755 --- a/tests/unittests/cli/test_fast_api.py +++ b/tests/unittests/cli/test_fast_api.py @@ -939,15 +939,17 @@ def test_a2a_disabled_by_default(test_app): assert response.status_code == 200 logger.info("A2A disabled by default test passed") + def test_add_session_to_memory(test_app, create_test_session): - """Test adding a session to memory.""" - info = create_test_session - url = f"/apps/{info['app_name']}/users/{info['user_id']}/sessions/{info['session_id']}/add-to-memory" - response = test_app.post(url) - - # Verify the response - assert response.status_code == 204 - logger.info("Add session to memory test completed successfully") - + """Test adding a session to memory.""" + info = create_test_session + url = f"/apps/{info['app_name']}/users/{info['user_id']}/sessions/{info['session_id']}/add-to-memory" + response = test_app.post(url) + + # Verify the response + assert response.status_code == 204 + logger.info("Add session to memory test completed successfully") + + if __name__ == "__main__": pytest.main(["-xvs", __file__]) From 1527493c1b21c84a5e5d2f491c322148832257c5 Mon Sep 17 00:00:00 2001 From: guillaume blaquiere Date: Sat, 13 Sep 2025 11:40:23 +0200 Subject: [PATCH 13/16] feat: update add session to memory endpoint structure --- src/google/adk/cli/adk_web_server.py | 42 +++++++++++++++++++++++----- tests/unittests/cli/test_fast_api.py | 8 ++++-- 2 files changed, 40 insertions(+), 10 deletions(-) diff --git a/src/google/adk/cli/adk_web_server.py b/src/google/adk/cli/adk_web_server.py index 39f30c9d79..20b8db50e2 100644 --- a/src/google/adk/cli/adk_web_server.py +++ b/src/google/adk/cli/adk_web_server.py @@ -208,6 +208,13 @@ class RunEvalRequest(common.BaseModel): eval_metrics: list[EvalMetric] +class UpdateMemoryRequest(common.BaseModel): + """Request to add a session to the memory service.""" + + session_id: str + """The ID of the session to add to memory.""" + + class RunEvalResult(common.BaseModel): eval_set_file: str eval_set_id: str @@ -1018,27 +1025,48 @@ async def delete_artifact( filename=artifact_name, ) - @app.post( - "/apps/{app_name}/users/{user_id}/sessions/{session_id}/add-to-memory", + @app.patch( + "/apps/{app_name}/users/{user_id}/memory", status_code=204, ) - async def add_session_to_memory( - app_name: str, user_id: str, session_id: str + async def patch_memory( + app_name: str, user_id: str, memory_request: UpdateMemoryRequest ) -> Response: """Adds all events from a given session to the memory service. Args: app_name: The name of the application. user_id: The ID of the user. - session_id: The ID of the session to add to memory. + memory_request: The request containing the session ID to add to memory. Raises: - HTTPException: If the session with the given ID is not found. + HTTPException( + status_code=400, detail="Memory service is not configured." + ) + HTTPException( + status_code=400, detail="Memory request cannot be empty" + ) + HTTPException( + status_code=400, detail="Session ID cannot be empty" + ) """ + if not self.memory_service: + raise HTTPException( + status_code=400, detail="Memory service is not configured." + ) + if memory_request is None: + raise HTTPException( + status_code=400, detail="Memory request cannot be empty" + ) + if memory_request.session_id is None: + raise HTTPException( + status_code=400, detail="Session ID cannot be empty" + ) + session = await self.session_service.get_session( app_name=app_name, user_id=user_id, - session_id=session_id, + session_id=memory_request.session_id, ) if not session: raise HTTPException(status_code=404, detail="Session not found") diff --git a/tests/unittests/cli/test_fast_api.py b/tests/unittests/cli/test_fast_api.py index 06ddeca68e..777196c48e 100755 --- a/tests/unittests/cli/test_fast_api.py +++ b/tests/unittests/cli/test_fast_api.py @@ -940,14 +940,16 @@ def test_a2a_disabled_by_default(test_app): logger.info("A2A disabled by default test passed") -def test_add_session_to_memory(test_app, create_test_session): +def test_patch_memory(test_app, create_test_session, mock_memory_service): """Test adding a session to memory.""" info = create_test_session - url = f"/apps/{info['app_name']}/users/{info['user_id']}/sessions/{info['session_id']}/add-to-memory" - response = test_app.post(url) + url = f"/apps/{info['app_name']}/users/{info['user_id']}/memory" + payload = {"session_id": info["session_id"]} + response = test_app.patch(url, json=payload) # Verify the response assert response.status_code == 204 + mock_memory_service.add_session_to_memory.assert_called_once() logger.info("Add session to memory test completed successfully") From 830da141c222584d8d7927b7601257ba8e548781 Mon Sep 17 00:00:00 2001 From: guillaume blaquiere Date: Thu, 18 Sep 2025 11:17:02 +0200 Subject: [PATCH 14/16] feat: change return code of patch_memory fix: update_memory_request variable name --- src/google/adk/cli/adk_web_server.py | 20 ++++++++------------ tests/unittests/cli/test_fast_api.py | 2 +- 2 files changed, 9 insertions(+), 13 deletions(-) diff --git a/src/google/adk/cli/adk_web_server.py b/src/google/adk/cli/adk_web_server.py index 2524a1dd57..1642dd26d1 100644 --- a/src/google/adk/cli/adk_web_server.py +++ b/src/google/adk/cli/adk_web_server.py @@ -1152,19 +1152,16 @@ async def delete_artifact( filename=artifact_name, ) - @app.patch( - "/apps/{app_name}/users/{user_id}/memory", - status_code=204, - ) + @app.patch("/apps/{app_name}/users/{user_id}/memory") async def patch_memory( - app_name: str, user_id: str, memory_request: UpdateMemoryRequest - ) -> Response: + app_name: str, user_id: str, update_memory_request: UpdateMemoryRequest + ) -> None: """Adds all events from a given session to the memory service. Args: app_name: The name of the application. user_id: The ID of the user. - memory_request: The request containing the session ID to add to memory. + update_memory_request: The memory request for the update Raises: HTTPException( @@ -1181,11 +1178,11 @@ async def patch_memory( raise HTTPException( status_code=400, detail="Memory service is not configured." ) - if memory_request is None: + if update_memory_request is None: raise HTTPException( - status_code=400, detail="Memory request cannot be empty" + status_code=400, detail="Update memory request cannot be empty" ) - if memory_request.session_id is None: + if update_memory_request.session_id is None: raise HTTPException( status_code=400, detail="Session ID cannot be empty" ) @@ -1193,12 +1190,11 @@ async def patch_memory( session = await self.session_service.get_session( app_name=app_name, user_id=user_id, - session_id=memory_request.session_id, + session_id=update_memory_request.session_id, ) if not session: raise HTTPException(status_code=404, detail="Session not found") await self.memory_service.add_session_to_memory(session) - return Response(status_code=204) @app.post("/run", response_model_exclude_none=True) async def run_agent(req: RunAgentRequest) -> list[Event]: diff --git a/tests/unittests/cli/test_fast_api.py b/tests/unittests/cli/test_fast_api.py index 777196c48e..4bcf2f119f 100755 --- a/tests/unittests/cli/test_fast_api.py +++ b/tests/unittests/cli/test_fast_api.py @@ -948,7 +948,7 @@ def test_patch_memory(test_app, create_test_session, mock_memory_service): response = test_app.patch(url, json=payload) # Verify the response - assert response.status_code == 204 + assert response.status_code == 200 mock_memory_service.add_session_to_memory.assert_called_once() logger.info("Add session to memory test completed successfully") From 6e2f09b2072fe68ccee1f88876e08852c35b9287 Mon Sep 17 00:00:00 2001 From: guillaume blaquiere Date: Thu, 18 Sep 2025 11:30:11 +0200 Subject: [PATCH 15/16] doc: merge the exceptions description --- src/google/adk/cli/adk_web_server.py | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/src/google/adk/cli/adk_web_server.py b/src/google/adk/cli/adk_web_server.py index 1642dd26d1..12f5f96179 100644 --- a/src/google/adk/cli/adk_web_server.py +++ b/src/google/adk/cli/adk_web_server.py @@ -1164,15 +1164,7 @@ async def patch_memory( update_memory_request: The memory request for the update Raises: - HTTPException( - status_code=400, detail="Memory service is not configured." - ) - HTTPException( - status_code=400, detail="Memory request cannot be empty" - ) - HTTPException( - status_code=400, detail="Session ID cannot be empty" - ) + HTTPException: If the memory service is not configured or the request is invalid. """ if not self.memory_service: raise HTTPException( From c831d87c7b3dd0e2c0e1dff4ed45e48b90a637ee Mon Sep 17 00:00:00 2001 From: guillaume blaquiere Date: Thu, 18 Sep 2025 11:33:35 +0200 Subject: [PATCH 16/16] refactor: merge the memory request check and exceptions --- src/google/adk/cli/adk_web_server.py | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/google/adk/cli/adk_web_server.py b/src/google/adk/cli/adk_web_server.py index 12f5f96179..3a81d2ae02 100644 --- a/src/google/adk/cli/adk_web_server.py +++ b/src/google/adk/cli/adk_web_server.py @@ -1170,13 +1170,12 @@ async def patch_memory( raise HTTPException( status_code=400, detail="Memory service is not configured." ) - if update_memory_request is None: - raise HTTPException( - status_code=400, detail="Update memory request cannot be empty" - ) - if update_memory_request.session_id is None: + if ( + update_memory_request is None + or update_memory_request.session_id is None + ): raise HTTPException( - status_code=400, detail="Session ID cannot be empty" + status_code=400, detail="Update memory request is invalid." ) session = await self.session_service.get_session(