Spaces:
Paused
Paused
| /** | |
| * Cognitive Error Intelligence API Routes | |
| * ======================================== | |
| * Advanced AI-powered error handling endpoints | |
| */ | |
| import express from 'express'; | |
| import { cognitiveErrorIntelligence } from '../services/CognitiveErrorIntelligence.js'; | |
| const router = express.Router(); | |
| // βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| // INTELLIGENT ERROR PROCESSING | |
| // βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| /** | |
| * POST /api/intelligence/process | |
| * Process an error with full cognitive analysis | |
| */ | |
| router.post('/process', async (req, res) => { | |
| try { | |
| const { error, service, context, stackTrace } = req.body; | |
| if (!error || typeof error !== 'string') { | |
| return res.status(400).json({ error: 'error message is required' }); | |
| } | |
| const result = await cognitiveErrorIntelligence.processError( | |
| error, | |
| service || 'unknown', | |
| context || {}, | |
| stackTrace | |
| ); | |
| res.json({ | |
| success: true, | |
| ...result, | |
| solutionCount: result.solutions.length, | |
| correlationCount: result.correlatedErrors.length, | |
| hasAutoRemediation: result.autoRemediation?.queued || false | |
| }); | |
| } catch (error) { | |
| console.error('Error processing with CEI:', error); | |
| res.status(500).json({ error: 'Failed to process error' }); | |
| } | |
| }); | |
| /** | |
| * GET /api/intelligence/stats | |
| * Get CEI system statistics | |
| */ | |
| router.get('/stats', (_req, res) => { | |
| try { | |
| const stats = cognitiveErrorIntelligence.getStats(); | |
| res.json(stats); | |
| } catch (error) { | |
| console.error('Error getting CEI stats:', error); | |
| res.status(500).json({ error: 'Failed to get stats' }); | |
| } | |
| }); | |
| /** | |
| * GET /api/intelligence/correlations | |
| * Get learned error correlations | |
| */ | |
| router.get('/correlations', (_req, res) => { | |
| try { | |
| const correlations = cognitiveErrorIntelligence.getCorrelations(); | |
| res.json({ | |
| total: correlations.length, | |
| correlations: correlations.slice(0, 50) // Limit to top 50 | |
| }); | |
| } catch (error) { | |
| console.error('Error getting correlations:', error); | |
| res.status(500).json({ error: 'Failed to get correlations' }); | |
| } | |
| }); | |
| /** | |
| * POST /api/intelligence/metric | |
| * Record a metric for predictive analysis | |
| */ | |
| router.post('/metric', (req, res) => { | |
| try { | |
| const { metric, value } = req.body; | |
| if (!metric || typeof value !== 'number') { | |
| return res.status(400).json({ error: 'metric and numeric value required' }); | |
| } | |
| cognitiveErrorIntelligence.recordMetric(metric, value); | |
| res.json({ success: true, metric, value }); | |
| } catch (error) { | |
| console.error('Error recording metric:', error); | |
| res.status(500).json({ error: 'Failed to record metric' }); | |
| } | |
| }); | |
| /** | |
| * POST /api/intelligence/persist-correlations | |
| * Persist learned correlations to Neo4j | |
| */ | |
| router.post('/persist-correlations', async (_req, res) => { | |
| try { | |
| const count = await cognitiveErrorIntelligence.persistCorrelationsToNeo4j(); | |
| res.json({ | |
| success: true, | |
| persisted: count, | |
| message: `Persisted ${count} correlations to Neo4j` | |
| }); | |
| } catch (error) { | |
| console.error('Error persisting correlations:', error); | |
| res.status(500).json({ error: 'Failed to persist correlations' }); | |
| } | |
| }); | |
| /** | |
| * POST /api/intelligence/approve-remediation/:actionId | |
| * Approve a pending remediation action | |
| */ | |
| router.post('/approve-remediation/:actionId', (req, res) => { | |
| try { | |
| const { actionId } = req.params; | |
| const approved = cognitiveErrorIntelligence.approveRemediation(actionId); | |
| if (approved) { | |
| res.json({ success: true, message: `Remediation ${actionId} approved` }); | |
| } else { | |
| res.status(404).json({ error: 'Remediation action not found' }); | |
| } | |
| } catch (error) { | |
| console.error('Error approving remediation:', error); | |
| res.status(500).json({ error: 'Failed to approve remediation' }); | |
| } | |
| }); | |
| /** | |
| * POST /api/intelligence/context | |
| * Update system context for better recommendations | |
| */ | |
| router.post('/context', (req, res) => { | |
| try { | |
| const { load, services } = req.body; | |
| const updates: any = {}; | |
| if (load) updates.load = load; | |
| if (services) { | |
| updates.services = new Map(Object.entries(services)); | |
| } | |
| cognitiveErrorIntelligence.updateSystemContext(updates); | |
| res.json({ success: true, message: 'Context updated' }); | |
| } catch (error) { | |
| console.error('Error updating context:', error); | |
| res.status(500).json({ error: 'Failed to update context' }); | |
| } | |
| }); | |
| export default router; | |