/** * Structured logger — writes newline-delimited JSON to stdout/stderr. */ type LogLevel = 'info' | 'warn' | 'error'; interface LogEntry { level: LogLevel; time: string; msg: string; [key: string]: unknown; } function write(stream: typeof process.stdout | typeof process.stderr, entry: LogEntry): void { stream.write(JSON.stringify(entry) + '\n'); } export const logger = { info(msg: string, data?: Record): void { write(process.stdout, { level: 'info', time: new Date().toISOString(), msg, ...data }); }, warn(msg: string, data?: Record): void { write(process.stderr, { level: 'warn', time: new Date().toISOString(), msg, ...data }); }, error(msg: string, data?: Record): void { write(process.stderr, { level: 'error', time: new Date().toISOString(), msg, ...data }); }, };