import { NOTIFY_ENV } from "./constants.ts"; export type Toggle = "on" | "off"; function parseToggle(value: unknown): Toggle | undefined { if (typeof value !== "string") return undefined; const normalized = value.trim().toLowerCase(); return normalized === "on" || normalized === "1" || normalized === "true" ? "on" : normalized === "off" || normalized === "0" || normalized === "false" ? "off" : undefined; } export interface FlagReader { getFlag(name: string): boolean | string | undefined; } export function resolveToggle( flag: unknown, env: unknown, fallback: Toggle, ): Toggle { return parseToggle(flag) ?? parseToggle(env) ?? fallback; } export function resolveNotificationConfig( flags: FlagReader, env: Readonly> = process.env, ): { completion: Toggle; error: Toggle; tool: Toggle } { return { completion: resolveToggle(flags.getFlag("notify-completion"), env[NOTIFY_ENV.completion], "on"), error: resolveToggle(flags.getFlag("notify-error"), env[NOTIFY_ENV.error], "on"), tool: resolveToggle(flags.getFlag("notify-tool"), env[NOTIFY_ENV.tool], "off"), }; }