From 561bc76a9a331bea31cbd30cc2defd688178b73e Mon Sep 17 00:00:00 2001 From: Anish Sarkar <104695310+AnishSarkar22@users.noreply.github.com> Date: Sun, 12 Jul 2026 20:29:31 +0530 Subject: [PATCH] feat(workspaces): return llm_setup on workspace create --- surfsense_backend/app/routes/workspaces_routes.py | 8 +++++++- surfsense_backend/app/schemas/workspace.py | 4 ++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/surfsense_backend/app/routes/workspaces_routes.py b/surfsense_backend/app/routes/workspaces_routes.py index 4f36ef62b..9dd3f196c 100644 --- a/surfsense_backend/app/routes/workspaces_routes.py +++ b/surfsense_backend/app/routes/workspaces_routes.py @@ -14,6 +14,7 @@ from app.db import ( get_async_session, get_default_roles_config, ) +from app.routes.model_connections_routes import compute_llm_setup_status from app.schemas import ( WorkspaceApiAccessUpdate, WorkspaceCreate, @@ -93,7 +94,12 @@ async def create_workspace( await session.commit() await session.refresh(db_workspace) - return db_workspace + + response = WorkspaceRead.model_validate(db_workspace) + response.llm_setup = await compute_llm_setup_status( + session, auth, db_workspace.id + ) + return response except HTTPException: raise except Exception as e: diff --git a/surfsense_backend/app/schemas/workspace.py b/surfsense_backend/app/schemas/workspace.py index 57b7e0a52..b804e6d5b 100644 --- a/surfsense_backend/app/schemas/workspace.py +++ b/surfsense_backend/app/schemas/workspace.py @@ -4,6 +4,7 @@ from datetime import datetime from pydantic import BaseModel, ConfigDict from .base import IDModel, TimestampModel +from .model_connections import LlmSetupStatusRead class WorkspaceBase(BaseModel): @@ -35,6 +36,9 @@ class WorkspaceRead(WorkspaceBase, IDModel, TimestampModel): api_access_enabled: bool = False qna_custom_instructions: str | None = None shared_memory_md: str | None = None + # Populated only by create_workspace so the client can route straight to + # onboarding vs. new-chat on the first hop. Null everywhere else. + llm_setup: LlmSetupStatusRead | None = None model_config = ConfigDict(from_attributes=True)