const { Router } = require('express') const { chat, chatStream } = require('../chat/index'); const memory = require('../services/memory') const logger = require('@nexusai/shared'); const router = Router(); router.post('/', async (req, res) => { const { sessionId, message } = req.body; if (!sessionId) return res.status(400).json({ error: 'sessionId is required'}); if (!message) return res.status(400).json({ error: 'message is required'}); try { const result = await chat(sessionId, message, { model: req.body.model, temperature: req.body.temperature, }); res.json(result) } catch (err) { logger.error(`[orchestration] chat error: `, err.message) res.status(500).json ({ error: 'Chat failed', detail: err.message }) } }); router.post('/stream', async (req, res) => { const {sessionId, message} = req.body; if(!sessionId || !message) { return res.status(400).json({ error: 'sessionId and message are required' }); } res.setHeader('Content-Type', 'text/event-stream'); res.setHeader('Cache-Control', 'no-cache'); res.setHeader('Connection', 'keep-alive'); res.flushHeaders(); try { const { model, tokenCount } = await chatStream( sessionId, message, (delta) => { res.write(`data: ${JSON.stringify({ text: delta })}\n\n`) }, { model: req.body.model, temperature: req.body.temperature } ); res.write(`data: ${JSON.stringify({ done: true, model, tokenCount })}\n\n`); } catch (err) { res.write(`data: ${JSON.stringify({error: err.message})}\n\n`); } finally { res.end(); } }); module.exports = router;