import Redis from "ioredis"; export const redis = new Redis(process.env.REDIS_URL ?? "redis://localhost:6379", { maxRetriesPerRequest: 3, }); export const CAMERA_FRAMES_STREAM = "stream:camera_frames"; export interface FrameIngestionTask { farmId: string; printerId: string; printJobId: string | null; r2ObjectKey: string; capturedAt: string; } /** Pushes a frame-ingestion task for continuum-ai-worker to pick up via XREADGROUP. */ export async function enqueueFrameIngestion(task: FrameIngestionTask): Promise { return redis.xadd( CAMERA_FRAMES_STREAM, "*", "farmId", task.farmId, "printerId", task.printerId, "printJobId", task.printJobId ?? "", "r2ObjectKey", task.r2ObjectKey, "capturedAt", task.capturedAt, ) as Promise; }