diff --git a/app/plugins/builtins/ai_assistant/routes.py b/app/plugins/builtins/ai_assistant/routes.py index 6a2ace4..258982e 100644 --- a/app/plugins/builtins/ai_assistant/routes.py +++ b/app/plugins/builtins/ai_assistant/routes.py @@ -578,10 +578,15 @@ async def chat_stream( } async def event_stream(): - async for chunk in stream_chat( - db, session, agent, data.content, user_context, tenant_id - ): - yield chunk + # Use a fresh DB session — the Depends(get_db) session closes after response + from app.core.db import get_session_factory + factory = get_session_factory() + async with factory() as stream_db: + await set_tenant_context(stream_db, tenant_id) + async for chunk in stream_chat( + stream_db, session, agent, data.content, user_context, tenant_id + ): + yield chunk yield "data: [DONE]\n\n" return StreamingResponse( diff --git a/app/services/contact_folder_service.py b/app/services/contact_folder_service.py index 2198d7f..924fd04 100644 --- a/app/services/contact_folder_service.py +++ b/app/services/contact_folder_service.py @@ -111,9 +111,9 @@ async def create_folder( sort_order=max_order + 1, ) db.add(folder) + result = _serialize_folder(folder) await db.commit() - await db.refresh(folder) - return _serialize_folder(folder) + return result async def update_folder( @@ -143,9 +143,9 @@ async def update_folder( if "sort_order" in data and data["sort_order"] is not None: folder.sort_order = data["sort_order"] + result = _serialize_folder(folder) await db.commit() - await db.refresh(folder) - return _serialize_folder(folder) + return result async def delete_folder( @@ -195,9 +195,9 @@ async def move_contact( raise ValueError("Contact not found") contact.folder_id = uuid.UUID(folder_id) if folder_id else None + result = {"id": str(contact.id), "folder_id": str(contact.folder_id) if contact.folder_id else None} await db.commit() - await db.refresh(contact) - return {"id": str(contact.id), "folder_id": str(contact.folder_id) if contact.folder_id else None} + return result async def reorder_folders(