From a52a6228de038aa7b85169e20ef779d89c2d61a4 Mon Sep 17 00:00:00 2001 From: Yufeng He <40085740+he-yufeng@users.noreply.github.com> Date: Thu, 11 Jun 2026 02:50:41 +0800 Subject: [PATCH] fix(sessions): persist event custom metadata --- src/google/adk/events/event.py | 4 ++-- tests/unittests/sessions/test_session_service.py | 12 +++++++----- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/google/adk/events/event.py b/src/google/adk/events/event.py index daa7a0bff8..5709f4b3a7 100644 --- a/src/google/adk/events/event.py +++ b/src/google/adk/events/event.py @@ -20,13 +20,11 @@ from google.adk.platform import time as platform_time from google.adk.platform import uuid as platform_uuid -from google.genai import types from pydantic import alias_generators from pydantic import BaseModel from pydantic import ConfigDict from pydantic import Field from pydantic import model_validator -from pydantic import PrivateAttr from ..models.llm_response import LlmResponse from .event_actions import EventActions @@ -148,6 +146,8 @@ class Event(LlmResponse): may change without notice. External code should not read, write, or rely on its semantics. """ + custom_metadata: dict[str, Any] | None = None + """Application metadata that should stay attached to this event.""" # The following are computed fields. # Do not assign the ID. It will be assigned by the session. diff --git a/tests/unittests/sessions/test_session_service.py b/tests/unittests/sessions/test_session_service.py index d9679b9cd8..d5341367f1 100644 --- a/tests/unittests/sessions/test_session_service.py +++ b/tests/unittests/sessions/test_session_service.py @@ -726,12 +726,14 @@ async def test_append_event_complete(session_service): ) await session_service.append_event(session=session, event=event) - assert ( - await session_service.get_session( - app_name=app_name, user_id=user_id, session_id=session.id - ) - == session + restored_session = await session_service.get_session( + app_name=app_name, user_id=user_id, session_id=session.id ) + assert restored_session is not None + assert restored_session == session + assert restored_session.events[0].custom_metadata == { + 'custom_key': 'custom_value' + } @pytest.mark.asyncio