import { auth } from "@/lib/auth"; import { pipelineEvents } from "@/lib/claude"; export async function GET( request: Request, { params }: { params: Promise<{ id: string }> } ) { const session = await auth(); if (!session) return new Response("Unauthorized", { status: 401 }); const { id } = await params; const encoder = new TextEncoder(); const stream = new ReadableStream({ start(controller) { const handler = (event: Record) => { controller.enqueue( encoder.encode(`data: ${JSON.stringify(event)}\n\n`) ); }; pipelineEvents.on(id, handler); // Keep connection alive const keepAlive = setInterval(() => { controller.enqueue(encoder.encode(`: keepalive\n\n`)); }, 15000); request.signal.addEventListener("abort", () => { pipelineEvents.off(id, handler); clearInterval(keepAlive); controller.close(); }); }, }); return new Response(stream, { headers: { "Content-Type": "text/event-stream", "Cache-Control": "no-cache", Connection: "keep-alive", }, }); }