ui / src /app /api /iterate /route.ts
ZuhairAhmed's picture
api fix
92dea51
Raw
History Blame Contribute Delete
2.05 kB
import { NextRequest, NextResponse } from "next/server";
import { promises as fs } from "fs";
import path from "path";
import { v4 as uuidv4 } from "uuid";
export const runtime = "nodejs";
const url =
"https://web-zero-web-zero.hf.space/api/v1/run/iterate?stream=false";
export async function POST(req: NextRequest) {
try {
const body = await req.json();
const { previousDescription, newUpdate, currentCode } = body;
const response = await fetch(url, {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
input_value: `
## Previous Description
${previousDescription}
## New Update
${newUpdate}
## Earlier Component Code
${currentCode}
`,
output_type: "chat",
input_type: "chat",
tweaks: {},
}),
});
if (!response.ok) {
const errorText = await response.text();
console.error("API Response Error:", errorText);
throw new Error(`API request failed with status ${response.status}`);
}
const data = await response.json();
const code =
data?.outputs?.[0]?.outputs?.[0]?.outputs?.message?.message?.text || "";
if (!code) {
throw new Error("No code generated from the API response");
}
const formattedCode = code.replace(/^```tsx\n|\n```$/g, "");
const id = uuidv4();
const generatedDir = path.resolve(
process.cwd(),
"src",
"components",
"generated"
);
const filename = path.join(generatedDir, `${id}.tsx`);
await fs.mkdir(generatedDir, { recursive: true });
await fs.writeFile(filename, formattedCode, "utf8");
return NextResponse.json({
id,
from: "ai",
content: formattedCode,
});
} catch (error) {
console.error("Error in iterate API:", error);
return NextResponse.json(
{
error:
error instanceof Error
? error.message
: "Failed to process the iteration request",
},
{ status: 500 }
);
}
}