2
import { createEnv } from '@t3-oss/env-nextjs';
3
import { z } from 'zod';
5
import { isServerMode } from '@/const/version';
10
interface ProcessEnv {
15
const isInVercel = process.env.VERCEL === '1';
17
const vercelUrl = `https://${process.env.VERCEL_URL}`;
19
const APP_URL = process.env.APP_URL ? process.env.APP_URL : isInVercel ? vercelUrl : undefined;
22
if (typeof window === 'undefined' && isServerMode && !APP_URL) {
23
throw new Error('`APP_URL` is required in server mode');
26
export const getAppConfig = () => {
27
const ACCESS_CODES = process.env.ACCESS_CODE?.split(',').filter(Boolean) || [];
31
NEXT_PUBLIC_BASE_PATH: z.string(),
32
NEXT_PUBLIC_ENABLE_SENTRY: z.boolean(),
35
ACCESS_CODES: z.any(z.string()).optional(),
37
AGENTS_INDEX_URL: z.string().url(),
39
DEFAULT_AGENT_CONFIG: z.string(),
40
SYSTEM_AGENT: z.string().optional(),
42
PLUGINS_INDEX_URL: z.string().url(),
43
PLUGIN_SETTINGS: z.string().optional(),
45
APP_URL: z.string().optional(),
46
CDN_USE_GLOBAL: z.boolean().optional(),
49
NEXT_PUBLIC_BASE_PATH: process.env.NEXT_PUBLIC_BASE_PATH || '',
52
NEXT_PUBLIC_ENABLE_SENTRY: !!process.env.NEXT_PUBLIC_SENTRY_DSN,
54
ACCESS_CODES: ACCESS_CODES as any,
56
AGENTS_INDEX_URL: !!process.env.AGENTS_INDEX_URL
57
? process.env.AGENTS_INDEX_URL
58
: 'https://chat-agents.lobehub.com',
60
DEFAULT_AGENT_CONFIG: process.env.DEFAULT_AGENT_CONFIG || '',
61
SYSTEM_AGENT: process.env.SYSTEM_AGENT,
63
PLUGINS_INDEX_URL: !!process.env.PLUGINS_INDEX_URL
64
? process.env.PLUGINS_INDEX_URL
65
: 'https://chat-plugins.lobehub.com',
67
PLUGIN_SETTINGS: process.env.PLUGIN_SETTINGS,
71
CDN_USE_GLOBAL: process.env.CDN_USE_GLOBAL === '1',
76
export const appEnv = getAppConfig();