import Anthropic from "@anthropic-ai/sdk";
export const runtime = "nodejs";
export const dynamic = "force-dynamic";
export async function POST(req: Request) {
const { problem } = await req.json();
const client = new Anthropic({ apiKey: process.env.ANTHROPIC_API_KEY! });
const encoder = new TextEncoder();
const stream = new ReadableStream<Uint8Array>({
async start(controller) {
const send = (event: string, data: unknown) =>
controller.enqueue(encoder.encode(`event: ${event}\ndata: ${JSON.stringify(data)}\n\n`));
try {
const response = await client.messages.stream({
model: "claude-sonnet-4-6",
max_tokens: 400,
system: "You are a solution architect...",
messages: [{ role: "user", content: problem }],
});
let full = "";
for await (const event of response) {
if (event.type === "content_block_delta" && event.delta.type === "text_delta") {
full += event.delta.text;
send("delta", { text: event.delta.text, total: full });
}
}
send("done", JSON.parse(full));
} catch (err) {
send("error", { message: "Briefly unavailable" });
} finally {
controller.close();
}
},
});
return new Response(stream, {
headers: {
"content-type": "text/event-stream; charset=utf-8",
"cache-control": "no-cache, no-transform",
},
});
}