diff --git a/src/google/adk/integrations/firestore/firestore_session_service.py b/src/google/adk/integrations/firestore/firestore_session_service.py index 83b97c33c2..4096dfcdf3 100644 --- a/src/google/adk/integrations/firestore/firestore_session_service.py +++ b/src/google/adk/integrations/firestore/firestore_session_service.py @@ -410,6 +410,16 @@ async def list_sessions( s_state = data.get("state", {}) u_state = user_states_map.get(u_id, {}) merged = self._merge_state(app_state, u_state, s_state) + update_time = data.get("updateTime") + last_update_time = 0.0 + if update_time: + if isinstance(update_time, datetime): + last_update_time = update_time.timestamp() + else: + try: + last_update_time = float(update_time) + except (ValueError, TypeError): + pass sessions.append( Session( @@ -418,7 +428,7 @@ async def list_sessions( user_id=data["userId"], state=merged, events=[], - last_update_time=0.0, + last_update_time=last_update_time, ) ) diff --git a/tests/unittests/integrations/firestore/test_firestore_session_service.py b/tests/unittests/integrations/firestore/test_firestore_session_service.py index 1445bfe0ef..ecfb40b63b 100644 --- a/tests/unittests/integrations/firestore/test_firestore_session_service.py +++ b/tests/unittests/integrations/firestore/test_firestore_session_service.py @@ -399,6 +399,7 @@ async def test_list_sessions_with_user_id(mock_firestore_client): "appName": app_name, "userId": user_id, "state": {"session_key": "session_val"}, + "updateTime": 1234567890.0, } app_state_coll = mock.MagicMock() @@ -454,6 +455,7 @@ def collection_side_effect(name): assert session.state["session_key"] == "session_val" assert session.state["app:app_key"] == "app_val" assert session.state["user:user_key"] == "user_val" + assert session.last_update_time == 1234567890.0 @pytest.mark.asyncio @@ -467,6 +469,7 @@ async def test_list_sessions_without_user_id(mock_firestore_client): "appName": app_name, "userId": "user1", "state": {"session_key": "session_val"}, + "updateTime": 1234567890.0, } mock_firestore_client.collection_group.return_value.where.return_value.get = ( @@ -508,6 +511,7 @@ def collection_side_effect(name): assert session.id == "session1" assert session.state["app:app_key"] == "app_val" assert session.state["user:user_key"] == "user_val" + assert session.last_update_time == 1234567890.0 mock_firestore_client.collection_group.assert_called_once_with("sessions") mock_firestore_client.collection_group.return_value.where.assert_called_once_with(