import { z } from 'zod';

// Variables de entorno de integraciones externas, validadas con zod (lo exige CLAUDE.md).
// Son OPCIONALES a propósito: sin ellas el funnel sigue en modo simulado, y ni el build ni
// la demo dependen de tener claves cargadas.
const opcional = z.preprocess(
  (v) => (v === '' || v === undefined ? undefined : v),
  z.string().min(1).optional(),
);

const schema = z.object({
  RETELL_API_KEY: opcional,
  RETELL_AGENT_ID: opcional,
  RETELL_FROM_NUMBER: opcional,
});

export const env = schema.parse({
  RETELL_API_KEY: process.env.RETELL_API_KEY,
  RETELL_AGENT_ID: process.env.RETELL_AGENT_ID,
  RETELL_FROM_NUMBER: process.env.RETELL_FROM_NUMBER,
});

// Mínimo para lanzar una llamada saliente: clave de API + número de origen. El agente puede
// ir ligado al número en el panel; si además se define RETELL_AGENT_ID, se manda como
// override_agent_id en cada llamada.
export function retellConfigurado(): boolean {
  return Boolean(env.RETELL_API_KEY && env.RETELL_FROM_NUMBER);
}
