route.ts 988 B

123456789101112131415161718192021222324252627282930313233343536
  1. import { agent } from "@/lib/agent";
  2. import {
  3. convertToModelMessages,
  4. createUIMessageStream,
  5. createUIMessageStreamResponse,
  6. type UIMessage,
  7. } from "ai";
  8. import { pipeJsonRender } from "@json-render/core";
  9. export const maxDuration = 60;
  10. export async function POST(req: Request) {
  11. const body = await req.json();
  12. const uiMessages: UIMessage[] = body.messages;
  13. if (!uiMessages || !Array.isArray(uiMessages) || uiMessages.length === 0) {
  14. return new Response(
  15. JSON.stringify({ error: "messages array is required" }),
  16. {
  17. status: 400,
  18. headers: { "Content-Type": "application/json" },
  19. },
  20. );
  21. }
  22. const modelMessages = await convertToModelMessages(uiMessages);
  23. const result = await agent.stream({ messages: modelMessages });
  24. const stream = createUIMessageStream({
  25. execute: async ({ writer }) => {
  26. writer.merge(pipeJsonRender(result.toUIMessageStream()));
  27. },
  28. });
  29. return createUIMessageStreamResponse({ stream });
  30. }