const DEFAULT_TAGLINE = "All your chats, one ClawdBot."; const TAGLINES: string[] = []; type HolidayRule = (date: Date) => boolean; const HOLIDAY_RULES = new Map(); function isTaglineActive(tagline: string, date: Date): boolean { const rule = HOLIDAY_RULES.get(tagline); if (!rule) return true; return rule(date); } export interface TaglineOptions { env?: NodeJS.ProcessEnv; random?: () => number; now?: () => Date; } export function activeTaglines(options: TaglineOptions = {}): string[] { if (TAGLINES.length === 0) return [DEFAULT_TAGLINE]; const today = options.now ? options.now() : new Date(); const filtered = TAGLINES.filter((tagline) => isTaglineActive(tagline, today), ); return filtered.length > 0 ? filtered : TAGLINES; } export function pickTagline(options: TaglineOptions = {}): string { const env = options.env ?? process.env; const override = env?.CLAWDBOT_TAGLINE_INDEX; if (override !== undefined) { const parsed = Number.parseInt(override, 10); if (!Number.isNaN(parsed) && parsed >= 0) { const pool = TAGLINES.length > 0 ? TAGLINES : [DEFAULT_TAGLINE]; return pool[parsed % pool.length]; } } const pool = activeTaglines(options); const rand = options.random ?? Math.random; const index = Math.floor(rand() * pool.length) % pool.length; return pool[index]; } export { TAGLINES, HOLIDAY_RULES, DEFAULT_TAGLINE };