From 4ef0683c7c508390e0fa8ad36fcf46c8bcc2ae38 Mon Sep 17 00:00:00 2001 From: chrischristiansen-glitch Date: Sat, 23 May 2026 20:45:50 +0200 Subject: [PATCH] fix: use try/except to create session if get_session raises in ADK 1.x --- agents/core-logic/app.py | 40 ++++++++++++++++++++++++---------------- 1 file changed, 24 insertions(+), 16 deletions(-) diff --git a/agents/core-logic/app.py b/agents/core-logic/app.py index d0babe8..9a7aa37 100644 --- a/agents/core-logic/app.py +++ b/agents/core-logic/app.py @@ -52,6 +52,28 @@ class RunResponse(BaseModel): response: str +def _ensure_session(user_id: str, session_id: str): + """Get existing session or create a new one. Handles both ADK 1.x and 2.x.""" + try: + session = session_service.get_session( + app_name=APP_NAME, + user_id=user_id, + session_id=session_id, + ) + if session is not None: + return session + except Exception: + pass # session doesn't exist — fall through to create + + session = session_service.create_session( + app_name=APP_NAME, + user_id=user_id, + session_id=session_id, + ) + logger.info(f"Created new session: {session_id} for user: {user_id}") + return session + + @app.get("/health") async def health(): return JSONResponse({"status": "ok", "service": APP_NAME}) @@ -60,19 +82,7 @@ async def health(): @app.post("/run", response_model=RunResponse) async def run(req: RunRequest): try: - # Always ensure session exists — create if missing - session = session_service.get_session( - app_name=APP_NAME, - user_id=req.user_id, - session_id=req.session_id, - ) - if session is None: - session = session_service.create_session( - app_name=APP_NAME, - user_id=req.user_id, - session_id=req.session_id, - ) - logger.info(f"Created new session: {req.session_id}") + _ensure_session(req.user_id, req.session_id) runner = Runner( agent=root_agent, @@ -96,9 +106,7 @@ async def run(req: RunRequest): if part.text: final_response += part.text - logger.info( - f"[{req.user_id}/{req.session_id}] Response length: {len(final_response)}" - ) + logger.info(f"[{req.user_id}/{req.session_id}] Response length: {len(final_response)}") return RunResponse( user_id=req.user_id, session_id=req.session_id,