Files
TJWaterAgent/src/config.ts
T
jiang 883faa2d54 LLM 请求透明化
Co-authored-by: Copilot <copilot@github.com>
2026-05-18 17:12:33 +08:00

32 lines
1.5 KiB
TypeScript

import dotenv from "dotenv";
import { z } from "zod";
// 本地开发可在项目根目录放 .local.env;已存在的系统环境变量优先级更高。
dotenv.config({ path: ".local.env", override: false });
// 统一在启动时解析环境变量,避免业务代码里散落字符串默认值。
const envSchema = z.object({
NODE_ENV: z.string().default("development"),
PORT: z.coerce.number().int().positive().default(8787),
HOST: z.string().default("0.0.0.0"),
LOG_LEVEL: z.string().default("info"),
LLM_REQUEST_AUDIT_LOG_PATH: z.string().default("./logs/llm-request-audit.log"),
AGENT_INTERNAL_TOKEN: z.string().optional(),
OPENCODE_HOSTNAME: z.string().default("127.0.0.1"),
OPENCODE_PORT: z.coerce.number().int().positive().default(4096),
OPENCODE_TIMEOUT_MS: z.coerce.number().int().positive().default(5000),
OPENCODE_MODEL: z.string().default("deepseek/deepseek-v4-pro"),
OPENCODE_BASE_URL: z.string().optional(),
OPENCODE_SERVER_PASSWORD: z.string().optional(),
OPENCODE_SERVER_USERNAME: z.string().default("opencode"),
SESSION_TTL_SECONDS: z.coerce.number().int().positive().default(1800),
TJWATER_API_BASE_URL: z.string().default("http://127.0.0.1:8000"),
TJWATER_API_TIMEOUT_MS: z.coerce.number().int().positive().default(30000),
MAX_INLINE_RESULT_BYTES: z.coerce.number().int().positive().default(12000),
MAX_PREVIEW_SAMPLE_ITEMS: z.coerce.number().int().positive().default(3),
});
export type AppConfig = z.infer<typeof envSchema>;
export const config: AppConfig = envSchema.parse(process.env);