const express = require("express"); const OpenAI = require("openai"); const path = require("path"); const app = express(); const PORT = process.env.PORT || 3000; app.use(express.json({ limit: "2mb" })); // Serve frontend app.use(express.static(path.join(__dirname, "public"))); /* ================================================== CHAT ENDPOINT ================================================== */ app.post("/api/chat", async (req, res) => { try { const { apiKey, model, messages } = req.body; if (!apiKey) { return res.status(400).json({ error: { message: "AgentRouter API key is required." } }); } if (!Array.isArray(messages)) { return res.status(400).json({ error: { message: "messages must be an array." } }); } /* ============================================== AgentRouter through OpenAI Node SDK ============================================== */ const client = new OpenAI({ apiKey: apiKey, baseURL: "https://agentrouter.org/v1" }); /* ============================================== STREAMING ============================================== */ const stream = await client.chat.completions.create({ model: model || "gpt-5.6-sol", messages: messages, stream: true }); /* ============================================== SSE RESPONSE ============================================== */ res.setHeader( "Content-Type", "text/event-stream" ); res.setHeader( "Cache-Control", "no-cache" ); res.setHeader( "Connection", "keep-alive" ); res.flushHeaders(); try { for await (const chunk of stream) { const content = chunk.choices?.[0]?.delta?.content; if (content) { res.write( `data: ${JSON.stringify({ content: content })}\n\n` ); } } res.write( "data: [DONE]\n\n" ); } catch (streamError) { console.error( "Stream error:", streamError ); res.write( `data: ${JSON.stringify({ error: streamError.message })}\n\n` ); } res.end(); } catch (error) { console.error( "AgentRouter error:", error ); if (res.headersSent) { res.end(); return; } const status = error.status || 500; res.status(status).json({ error: { message: error.message || "AgentRouter request failed." } }); } }); /* ================================================== START SERVER ================================================== */ app.listen(PORT, () => { console.log(""); console.log("======================================"); console.log(" AgentRouter Chat"); console.log("======================================"); console.log(""); console.log( `Open http://localhost:${PORT}` ); console.log(""); });