UNPKG

contaigents

Version:

Modular AI Content Ecosystem with Audio Generation

195 lines (194 loc) 6.35 kB
import { Router } from 'express'; import { ChatService } from '../services/chatService.js'; const router = Router(); const chatService = new ChatService(process.cwd()); // POST /api/chat/session - Create a new chat session router.post('/chat/session', async (req, res) => { try { const options = req.body; console.log("Creating chat session with options:", options); const session = chatService.createSession(options); res.status(201).json({ success: true, session: { id: session.id, createdAt: session.createdAt, systemPrompt: session.systemPrompt } }); } catch (error) { console.error('Error creating chat session:', error); res.status(500).json({ success: false, error: 'Failed to create chat session', message: error.message }); } }); // POST /api/chat/message - Send a message to a chat session router.post('/chat/message', async (req, res) => { try { const { sessionId, message, options } = req.body; if (!sessionId || !message) { return res.status(400).json({ success: false, error: 'Session ID and message are required' }); } console.log(`Sending message to session ${sessionId}:`, message); const response = await chatService.sendMessage(sessionId, message, options); res.json({ success: true, message: response }); } catch (error) { console.error('Error sending message:', error); res.status(500).json({ success: false, error: 'Failed to send message', message: error.message }); } }); // GET /api/chat/session/:sessionId/messages - Get all messages from a session router.get('/chat/session/:sessionId/messages', async (req, res) => { try { const { sessionId } = req.params; const messages = chatService.getMessages(sessionId); if (messages.length === 0) { const session = chatService.getSession(sessionId); if (!session) { return res.status(404).json({ success: false, error: 'Chat session not found' }); } } res.json({ success: true, messages }); } catch (error) { console.error('Error getting messages:', error); res.status(500).json({ success: false, error: 'Failed to get messages', message: error.message }); } }); // GET /api/chat/session/:sessionId - Get session details router.get('/chat/session/:sessionId', async (req, res) => { try { const { sessionId } = req.params; const session = chatService.getSession(sessionId); if (!session) { return res.status(404).json({ success: false, error: 'Chat session not found' }); } res.json({ success: true, session: { id: session.id, createdAt: session.createdAt, updatedAt: session.updatedAt, messageCount: session.messages.filter(msg => msg.role !== 'system').length, systemPrompt: session.systemPrompt } }); } catch (error) { console.error('Error getting session:', error); res.status(500).json({ success: false, error: 'Failed to get session', message: error.message }); } }); // GET /api/chat/sessions - List all active sessions router.get('/chat/sessions', async (req, res) => { try { const sessions = chatService.listSessions(); const sessionSummaries = sessions.map(session => ({ id: session.id, createdAt: session.createdAt, updatedAt: session.updatedAt, messageCount: session.messages.filter(msg => msg.role !== 'system').length })); res.json({ success: true, sessions: sessionSummaries }); } catch (error) { console.error('Error listing sessions:', error); res.status(500).json({ success: false, error: 'Failed to list sessions', message: error.message }); } }); // DELETE /api/chat/session/:sessionId - Clear/delete a chat session router.delete('/chat/session/:sessionId', async (req, res) => { try { const { sessionId } = req.params; const deleted = chatService.clearSession(sessionId); if (!deleted) { return res.status(404).json({ success: false, error: 'Chat session not found' }); } res.json({ success: true, message: 'Chat session deleted successfully' }); } catch (error) { console.error('Error deleting session:', error); res.status(500).json({ success: false, error: 'Failed to delete session', message: error.message }); } }); // POST /api/chat/quick - Quick chat endpoint for single message/response router.post('/chat/quick', async (req, res) => { try { const { message, options } = req.body; if (!message) { return res.status(400).json({ success: false, error: 'Message is required' }); } console.log("Quick chat message:", message); // Create a temporary session for quick chat const session = chatService.createSession(options); // Send message and get response const response = await chatService.sendMessage(session.id, message, options); // Clean up the temporary session chatService.clearSession(session.id); res.json({ success: true, message: response }); } catch (error) { console.error('Error in quick chat:', error); res.status(500).json({ success: false, error: 'Failed to process quick chat', message: error.message }); } }); export default router;