fix(audit): prototypes Gemini server-side + retire metrics-token du dépôt
All checks were successful
CI / Lint, Unit Tests & Build (push) Successful in 5m30s
CI / Deploy production (on server) (push) Successful in 54s

Proxy Gemini côté serveur (plus de clé dans le bundle Vite), port prototype 4000,
et suppression du token métriques placeholder versionné.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Antigravity
2026-06-20 17:11:32 +00:00
parent eab4b3e27b
commit 31e882856c
5 changed files with 152 additions and 19 deletions

View File

@@ -170,6 +170,38 @@ async function startServer() {
res.json(ideas[index]);
});
app.post('/api/gemini/embed', async (req, res) => {
const key = process.env.GEMINI_API_KEY;
if (!key) {
return res.status(503).json({ error: 'GEMINI_API_KEY not configured on server' });
}
try {
const { GoogleGenAI } = await import('@google/genai');
const ai = new GoogleGenAI({ apiKey: key });
const response = await ai.models.embedContent(req.body);
res.json(response);
} catch (error) {
console.error('Gemini embed error:', error);
res.status(500).json({ error: 'Gemini embed failed' });
}
});
app.post('/api/gemini/generate', async (req, res) => {
const key = process.env.GEMINI_API_KEY;
if (!key) {
return res.status(503).json({ error: 'GEMINI_API_KEY not configured on server' });
}
try {
const { GoogleGenAI } = await import('@google/genai');
const ai = new GoogleGenAI({ apiKey: key });
const response = await ai.models.generateContent(req.body);
res.json({ text: response.text ?? '' });
} catch (error) {
console.error('Gemini proxy error:', error);
res.status(500).json({ error: 'Gemini request failed' });
}
});
// Vite middleware for development
if (process.env.NODE_ENV !== "production") {
const vite = await createViteServer({