ai-sdk-next-openai/app/api/use-chat-resume/[id]/stream/route.ts
2025-09-26 15:46:29 +00:00

44 lines
1.0 KiB
TypeScript

import { loadStreams } from '@/util/chat-store';
import { createUIMessageStream, JsonToSseTransformStream } from 'ai';
import { after } from 'next/server';
import { createResumableStreamContext } from 'resumable-stream';
// Allow streaming responses up to 30 seconds
export const maxDuration = 30;
export async function GET(
request: Request,
{ params }: { params: Promise<{ id: string }> },
) {
const { id } = await params;
if (!id) {
return new Response('id is required', { status: 400 });
}
const streamIds = await loadStreams(id);
if (!streamIds.length) {
return new Response(null, { status: 204 });
}
const recentStreamId = streamIds.at(-1);
if (!recentStreamId) {
return new Response(null, { status: 204 });
}
const streamContext = createResumableStreamContext({
waitUntil: after,
});
const resumedStream =
await streamContext.resumeExistingStream(recentStreamId);
if (!resumedStream) {
return new Response(null, { status: 204 });
}
return new Response(resumedStream);
}