import { createServerSupabase } from "./supabase"; import { resolveModel, DEFAULT_MAIN_MODEL, type UserApiKeys, } from "./llm"; import { isOperatorUser, normalizeModelForAccess } from "./modelAccess"; export type UserModelSettings = { model: string; title_model: string; tabular_model: string; api_keys: UserApiKeys; }; export async function getUserModelSettings( userId: string, db?: ReturnType, ): Promise { const client = db ?? createServerSupabase(); const { data } = await client .from("user_profiles") .select("model, gemini_api_key, openai_api_key") .eq("user_id", userId) .single(); const api_keys: UserApiKeys = { gemini: data?.gemini_api_key?.trim() || process.env.GEMINI_API_KEY || null, openai: data?.openai_api_key?.trim() || process.env.OPENAI_API_KEY || null, }; const isOperator = await isOperatorUser(userId); const model = normalizeModelForAccess( resolveModel(data?.model, DEFAULT_MAIN_MODEL), isOperator, ); return { model, title_model: model, tabular_model: model, api_keys, }; } export async function getUserApiKeys( userId: string, db?: ReturnType, ): Promise { const client = db ?? createServerSupabase(); const { data } = await client .from("user_profiles") .select("gemini_api_key, openai_api_key") .eq("user_id", userId) .single(); return { gemini: data?.gemini_api_key?.trim() || process.env.GEMINI_API_KEY || null, openai: data?.openai_api_key?.trim() || process.env.OPENAI_API_KEY || null, }; }