pluralchat / src /lib /server /usageLimits.ts
victor's picture
victor HF Staff
HuggingChat 2026 (#1875)
7bf1507 unverified
import { z } from "zod";
import { config } from "$lib/server/config";
import JSON5 from "json5";
const sanitizeJSONEnv = (val: string, fallback: string) => {
const raw = (val ?? "").trim();
const unquoted = raw.startsWith("`") && raw.endsWith("`") ? raw.slice(1, -1) : raw;
return unquoted || fallback;
};
// RATE_LIMIT is the legacy way to define messages per minute limit
export const usageLimitsSchema = z
.object({
conversations: z.coerce.number().optional(), // how many conversations
messages: z.coerce.number().optional(), // how many messages in a conversation
messageLength: z.coerce.number().optional(), // how long can a message be before we cut it off
messagesPerMinute: z
.preprocess((val) => {
if (val === undefined) {
return config.RATE_LIMIT;
}
return val;
}, z.coerce.number().optional())
.optional(), // how many messages per minute
})
.optional();
export const usageLimits = usageLimitsSchema.parse(
JSON5.parse(sanitizeJSONEnv(config.USAGE_LIMITS, "{}"))
);