first commit

This commit is contained in:
2026-07-17 21:48:37 +05:30
commit f85599dac5
124 changed files with 10775 additions and 0 deletions
+35
View File
@@ -0,0 +1,35 @@
import { NextRequest, NextResponse } from "next/server";
import { geminiGenerate } from "@/lib/gemini";
export const dynamic = "force-dynamic";
/**
* AI assistant. The UI sends a user prompt plus optional message context
* (e.g. a copied message to summarize / draft a reply to). The Gemini key
* never leaves the server.
*/
export async function POST(req: NextRequest) {
const body = await req.json().catch(() => ({}));
const prompt: string = (body.prompt ?? "").toString().trim();
const context: string | undefined = body.context ? String(body.context) : undefined;
if (!prompt && !context) {
return NextResponse.json({ ok: false, error: "Nothing to ask." }, { status: 400 });
}
const parts: string[] = [];
if (context) parts.push(`Here is a chat message for context:\n"""\n${context}\n"""`);
parts.push(prompt || "Summarize the message above.");
const result = await geminiGenerate(parts.join("\n\n"), {
system:
"You are a concise, helpful assistant embedded in a team-messaging app. " +
"Answer directly in a professional but friendly tone. When drafting a reply, write it in first person, ready to send. Keep responses tight.",
temperature: 0.5,
});
if (!result.ok) {
return NextResponse.json({ ok: false, error: result.error, retryable: result.retryable }, { status: result.status || 502 });
}
return NextResponse.json({ ok: true, text: result.text });
}