import { Router } from 'express'; import { v4 as uuidv4 } from 'uuid'; import db from '../db.js'; import { authenticateToken } from '../middleware/auth.js'; import { processTrainingPrompt, generateCharacterSuggestion, DEFAULT_KNOWLEDGE } from '../ai/trainer.js'; const router = Router(); router.post('/suggest', authenticateToken, async (req, res) => { const { prompt } = req.body; if (!prompt) return res.status(400).json({ error: 'Prompt is required' }); const suggestion = await processTrainingPrompt(prompt, req.userId); res.json({ suggestion }); }); router.post('/generate-name', authenticateToken, (req, res) => { const { style } = req.body; const name = generateCharacterSuggestion('generate name', req.userId).name; res.json({ name }); }); router.post('/train', authenticateToken, (req, res) => { const { prompt, response, category } = req.body; if (!prompt || !response) return res.status(400).json({ error: 'Prompt and response are required' }); const id = uuidv4(); db.prepare('INSERT INTO ai_training_data (id, user_id, prompt, response, category) VALUES (?, ?, ?, ?, ?)') .run(id, req.userId, prompt, response, category || 'general'); res.status(201).json({ message: 'Training data added', id }); }); router.get('/training-data', authenticateToken, (req, res) => { const data = db.prepare('SELECT id, prompt, response, category, created_at FROM ai_training_data WHERE user_id = ? ORDER BY created_at DESC').all(req.userId); res.json({ training_data: data }); }); router.delete('/training-data/:id', authenticateToken, (req, res) => { const existing = db.prepare('SELECT * FROM ai_training_data WHERE id = ? AND user_id = ?').get(req.params.id, req.userId); if (!existing) return res.status(404).json({ error: 'Training data not found' }); db.prepare('DELETE FROM ai_training_data WHERE id = ?').run(req.params.id); res.json({ message: 'Training data deleted' }); }); router.get('/knowledge', authenticateToken, (req, res) => { const archetypes = DEFAULT_KNOWLEDGE.character_archetypes.map(a => ({ name: a.name, traits: a.traits, needs_priority: a.needs_priority })); res.json({ archetypes, name_styles: Object.keys(DEFAULT_KNOWLEDGE.name_generators) }); }); export default router;