mirror of
https://github.com/vercel-labs/json-render.git
synced 2026-10-25 07:03:32 +08:00
* ai sdk * chat * move more to lib * fixes * refactor * fixes * streamdown * fixes * fixes * fixes * fixes * fixes * fixes * fixes * fixes * fixes * fixes * data-spec * fixes * sortable * github * tools * fixes * fixes * fixes * fixes * fixes * fixes * fixes * fixes * fixes * fixes * fixes * fixes * fixes * fixes * fixes * tables * fixes * fixes * rename to chat * fixes docs * fixes * fixes * fixes * fixes * fixes * fixes * fixes * fixes * fixes * fixes * fix lint * fixes * fixes * fixes * fixes * fixes * fixes * fixes * fixes * fixes * fixes * fixes
37 lines
988 B
TypeScript
37 lines
988 B
TypeScript
import { agent } from "@/lib/agent";
|
|
import {
|
|
convertToModelMessages,
|
|
createUIMessageStream,
|
|
createUIMessageStreamResponse,
|
|
type UIMessage,
|
|
} from "ai";
|
|
import { pipeJsonRender } from "@json-render/core";
|
|
|
|
export const maxDuration = 60;
|
|
|
|
export async function POST(req: Request) {
|
|
const body = await req.json();
|
|
const uiMessages: UIMessage[] = body.messages;
|
|
|
|
if (!uiMessages || !Array.isArray(uiMessages) || uiMessages.length === 0) {
|
|
return new Response(
|
|
JSON.stringify({ error: "messages array is required" }),
|
|
{
|
|
status: 400,
|
|
headers: { "Content-Type": "application/json" },
|
|
},
|
|
);
|
|
}
|
|
|
|
const modelMessages = await convertToModelMessages(uiMessages);
|
|
const result = await agent.stream({ messages: modelMessages });
|
|
|
|
const stream = createUIMessageStream({
|
|
execute: async ({ writer }) => {
|
|
writer.merge(pipeJsonRender(result.toUIMessageStream()));
|
|
},
|
|
});
|
|
|
|
return createUIMessageStreamResponse({ stream });
|
|
}
|