import type { UserType } from "@/app/(auth)/auth"; import type { ChatModel } from "@/lib/ai/models"; type Entitlements = { maxMessagesPerDay: number; availableChatModelIds: ChatModel["id"][]; }; const gatewayEnabled = Boolean(process.env.AI_GATEWAY_API_KEY) && process.env.AI_GATEWAY_API_KEY !== "change-me-ai-gateway-key"; const qwenEnabled = Boolean(process.env.DASHSCOPE_API_KEY); const gtp5Enabled = Boolean(process.env.GTP5_API_KEY); const baseModels: ChatModel["id"][] = gatewayEnabled ? (["chat-model"] as ChatModel["id"][]) : []; const reasoningModels: ChatModel["id"][] = gatewayEnabled ? (["chat-model-reasoning"] as ChatModel["id"][]) : []; const extraModels: ChatModel["id"][] = [ ...(qwenEnabled ? (["qwen3-vl-plus"] as ChatModel["id"][]) : []), ...(gtp5Enabled ? (["gpt-5-nano"] as ChatModel["id"][]) : []), ]; export const entitlementsByUserType: Record = { /* * For users without an account */ guest: { maxMessagesPerDay: 20, availableChatModelIds: [...baseModels, ...extraModels, ...reasoningModels], }, /* * For users with an account */ regular: { maxMessagesPerDay: 1000, availableChatModelIds: [...baseModels, ...extraModels, ...reasoningModels], }, /* * For administrators */ admin: { maxMessagesPerDay: Number.POSITIVE_INFINITY, availableChatModelIds: [...baseModels, ...extraModels, ...reasoningModels], }, /* * For agent administrators */ agent_admin: { maxMessagesPerDay: Number.POSITIVE_INFINITY, availableChatModelIds: [...baseModels, ...extraModels, ...reasoningModels], }, };