From be626dff057de9cd63d0b4274d176cbfccb65414 Mon Sep 17 00:00:00 2001 From: Anish Sarkar <104695310+AnishSarkar22@users.noreply.github.com> Date: Sun, 12 Jul 2026 20:29:47 +0530 Subject: [PATCH] feat(contracts): add llmSetupStatus schema and llm_setup on create response --- surfsense_web/contracts/types/model-connections.types.ts | 7 +++++++ surfsense_web/contracts/types/workspace.types.ts | 5 ++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/surfsense_web/contracts/types/model-connections.types.ts b/surfsense_web/contracts/types/model-connections.types.ts index 74c31b66e..7771d2b93 100644 --- a/surfsense_web/contracts/types/model-connections.types.ts +++ b/surfsense_web/contracts/types/model-connections.types.ts @@ -111,6 +111,12 @@ export const globalLlmConfigStatus = z.object({ exists: z.boolean(), }); +export const llmSetupStatus = z.object({ + status: z.enum(["ready", "needs_setup"]), + source: z.enum(["global_config", "models", "none"]), + can_configure: z.boolean(), +}); + export const modelProviderRead = z.object({ provider: z.string(), transport: z.string(), @@ -140,5 +146,6 @@ export type ModelUpdateRequest = z.infer; export type ModelsBulkUpdateRequest = z.infer; export type ModelRoles = z.infer; export type GlobalLlmConfigStatus = z.infer; +export type LlmSetupStatus = z.infer; export type VerifyConnectionResponse = z.infer; export type ModelProviderRead = z.infer; diff --git a/surfsense_web/contracts/types/workspace.types.ts b/surfsense_web/contracts/types/workspace.types.ts index 9b4541b1e..a777f810a 100644 --- a/surfsense_web/contracts/types/workspace.types.ts +++ b/surfsense_web/contracts/types/workspace.types.ts @@ -1,5 +1,6 @@ import { z } from "zod"; import { paginationQueryParams } from "."; +import { llmSetupStatus } from "./model-connections.types"; export const workspace = z.object({ id: z.number(), @@ -36,7 +37,9 @@ export const createWorkspaceRequest = workspace.pick({ name: true, description: qna_custom_instructions: z.string().nullable().optional(), }); -export const createWorkspaceResponse = workspace.omit({ member_count: true, is_owner: true }); +export const createWorkspaceResponse = workspace + .omit({ member_count: true, is_owner: true }) + .extend({ llm_setup: llmSetupStatus.nullable().optional() }); /** * Get workspace