45 lines
1.2 KiB
Python
45 lines
1.2 KiB
Python
#!/usr/bin/env python3
|
|
"""Print the conversation summary for a specific user's session."""
|
|
|
|
import asyncio
|
|
|
|
from google.cloud.firestore_v1.async_client import AsyncClient
|
|
from rich.console import Console
|
|
from rich.markdown import Markdown
|
|
from rich.panel import Panel
|
|
|
|
from adk_firestore_sessionmanager import FirestoreSessionService
|
|
|
|
APP_NAME = "test_agent"
|
|
USER_ID = "dev_user"
|
|
|
|
console = Console()
|
|
|
|
|
|
async def main() -> None:
|
|
db = AsyncClient()
|
|
session_service = FirestoreSessionService(db=db)
|
|
|
|
resp = await session_service.list_sessions(
|
|
app_name=APP_NAME, user_id=USER_ID
|
|
)
|
|
|
|
if not resp.sessions:
|
|
console.print("[dim]No sessions found.[/]")
|
|
return
|
|
|
|
for s in resp.sessions:
|
|
ref = session_service._session_ref(APP_NAME, USER_ID, s.id)
|
|
snap = await ref.get()
|
|
data = snap.to_dict() or {}
|
|
summary = data.get("conversation_summary")
|
|
|
|
if summary:
|
|
console.print(Panel(Markdown(summary), title=f"Session {s.id}", border_style="cyan"))
|
|
else:
|
|
console.print(Panel("[dim]No summary yet.[/]", title=f"Session {s.id}", border_style="yellow"))
|
|
|
|
|
|
if __name__ == "__main__":
|
|
asyncio.run(main())
|