diff --git a/src/adk_firestore_sessionmanager/firestore_session_service.py b/src/adk_firestore_sessionmanager/firestore_session_service.py index a9d5b4c..07f61d2 100644 --- a/src/adk_firestore_sessionmanager/firestore_session_service.py +++ b/src/adk_firestore_sessionmanager/firestore_session_service.py @@ -417,6 +417,8 @@ class FirestoreSessionService(BaseSessionService): if event.partial: return event + t0 = time.monotonic() + app_name = session.app_name user_id = session.user_id session_id = session.id @@ -463,6 +465,19 @@ class FirestoreSessionService(BaseSessionService): else: await session_ref.update({"last_update_time": event.timestamp}) + # Log token usage + if event.usage_metadata: + meta = event.usage_metadata + logger.info( + "Token usage for session %s event %s: " + "prompt=%s, candidates=%s, total=%s", + session_id, + event.id, + meta.prompt_token_count, + meta.candidates_token_count, + meta.total_token_count, + ) + # Trigger compaction if total token count exceeds threshold if ( self._compaction_threshold is not None @@ -471,6 +486,21 @@ class FirestoreSessionService(BaseSessionService): and event.usage_metadata.total_token_count >= self._compaction_threshold ): + logger.info( + "Compaction triggered for session %s: " + "total_token_count=%d >= threshold=%d", + session_id, + event.usage_metadata.total_token_count, + self._compaction_threshold, + ) await self._compact_session(session) + elapsed = time.monotonic() - t0 + logger.info( + "append_event completed for session %s event %s in %.3fs", + session_id, + event.id, + elapsed, + ) + return event