UNPKG

universal-ai-brain

Version:

🧠 UNIVERSAL AI BRAIN 3.3 - The world's most advanced cognitive architecture with 24 specialized systems, MongoDB 8.1 $rankFusion hybrid search, latest Voyage 3.5 embeddings, and framework-agnostic design. Works with Mastra, Vercel AI, LangChain, OpenAI A

462 lines (376 loc) • 16.5 kB
/** * @file Universal AI Brain Integration Tests * Comprehensive integration tests for the complete Universal AI Brain system */ import { UniversalAIBrain } from '../UniversalAIBrain'; import { SemanticMemoryEngine } from '../intelligence/SemanticMemoryEngine'; import { ContextInjectionEngine } from '../intelligence/ContextInjectionEngine'; import { VectorSearchEngine } from '../intelligence/VectorSearchEngine'; import { VercelAIAdapter } from '../adapters/VercelAIAdapter'; import { MastraAdapter } from '../adapters/MastraAdapter'; import { SafetyGuardrailsEngine } from '../safety/SafetyGuardrailsEngine'; import { HybridSearchEngine } from '../features/hybridSearch'; // Mock MongoDB and external dependencies jest.mock('mongodb'); jest.mock('../embeddings/OpenAIEmbeddingProvider'); describe('Universal AI Brain Integration', () => { let universalAIBrain: UniversalAIBrain; let mockConfig: any; beforeEach(() => { mockConfig = { mongoUri: 'mongodb://localhost:27017', databaseName: 'test_ai_brain', openaiApiKey: 'test_key', enableSafety: true, enableTracing: true, enableSelfImprovement: true }; // Mock console methods to reduce test noise jest.spyOn(console, 'log').mockImplementation(); jest.spyOn(console, 'warn').mockImplementation(); jest.spyOn(console, 'error').mockImplementation(); }); afterEach(() => { jest.restoreAllMocks(); }); describe('Brain Initialization', () => { it('should initialize Universal AI Brain with all components', async () => { universalAIBrain = new UniversalAIBrain(mockConfig); expect(universalAIBrain).toBeInstanceOf(UniversalAIBrain); expect(universalAIBrain.isInitialized()).toBe(false); }); it('should handle initialization with minimal config', async () => { const minimalConfig = { mongoUri: 'mongodb://localhost:27017', databaseName: 'test_db' }; universalAIBrain = new UniversalAIBrain(minimalConfig); expect(universalAIBrain).toBeInstanceOf(UniversalAIBrain); }); it('should validate required configuration', () => { expect(() => { new UniversalAIBrain({} as any); }).toThrow(); }); }); describe('Framework Integration', () => { beforeEach(async () => { universalAIBrain = new UniversalAIBrain(mockConfig); }); it('should integrate with Vercel AI SDK', async () => { const vercelAdapter = new VercelAIAdapter(); // Mock the integration process const mockIntegration = jest.fn().mockResolvedValue({ generateText: jest.fn(), streamText: jest.fn() }); jest.spyOn(universalAIBrain, 'integrate').mockImplementation(mockIntegration); const enhancedVercelAI = await universalAIBrain.integrate(vercelAdapter); expect(mockIntegration).toHaveBeenCalledWith(vercelAdapter); expect(enhancedVercelAI).toBeDefined(); }); it('should integrate with Mastra', async () => { const mastraAdapter = new MastraAdapter(); const mockIntegration = jest.fn().mockResolvedValue({ createAgent: jest.fn(), enhanceAgent: jest.fn() }); jest.spyOn(universalAIBrain, 'integrate').mockImplementation(mockIntegration); const enhancedMastra = await universalAIBrain.integrate(mastraAdapter); expect(mockIntegration).toHaveBeenCalledWith(mastraAdapter); expect(enhancedMastra).toBeDefined(); }); it('should handle framework integration errors gracefully', async () => { const faultyAdapter = { frameworkName: 'faulty-framework', integrate: jest.fn().mockRejectedValue(new Error('Integration failed')) }; const mockIntegration = jest.fn().mockRejectedValue(new Error('Integration failed')); jest.spyOn(universalAIBrain, 'integrate').mockImplementation(mockIntegration); await expect(universalAIBrain.integrate(faultyAdapter as any)).rejects.toThrow('Integration failed'); }); }); describe('Intelligence Layer Integration', () => { beforeEach(() => { universalAIBrain = new UniversalAIBrain(mockConfig); }); it('should coordinate semantic memory and context injection', async () => { // Mock the intelligence components const mockSemanticMemory = { storeMemory: jest.fn().mockResolvedValue('memory_123'), retrieveRelevantMemories: jest.fn().mockResolvedValue([ { id: 'memory_1', content: 'User prefers morning meetings', metadata: { type: 'preference', importance: 0.8 } } ]) }; const mockContextInjection = { enhancePrompt: jest.fn().mockResolvedValue({ originalPrompt: 'Schedule a meeting', enhancedPrompt: 'Based on your preference for morning meetings, schedule a meeting', injectedContext: [{ content: 'User prefers morning meetings' }], optimizationMetrics: { contextRelevance: 0.85 } }) }; // Mock the brain's intelligence components jest.spyOn(universalAIBrain as any, 'getSemanticMemoryEngine').mockReturnValue(mockSemanticMemory); jest.spyOn(universalAIBrain as any, 'getContextInjectionEngine').mockReturnValue(mockContextInjection); // Test the coordination const userInput = 'Schedule a meeting'; const sessionId = 'session_123'; // This would be called internally during framework integration const memories = await mockSemanticMemory.retrieveRelevantMemories(userInput); const enhanced = await mockContextInjection.enhancePrompt(userInput); expect(memories).toHaveLength(1); expect(enhanced.enhancedPrompt).toContain('morning meetings'); expect(enhanced.optimizationMetrics.contextRelevance).toBeGreaterThan(0.8); }); it('should handle vector search integration', async () => { const mockVectorSearch = { semanticSearch: jest.fn().mockResolvedValue([ { id: 'doc_1', content: 'Meeting best practices', score: 0.9, metadata: { source: 'knowledge_base' } } ]), createEmbedding: jest.fn().mockResolvedValue([0.1, 0.2, 0.3]) }; jest.spyOn(universalAIBrain as any, 'getVectorSearchEngine').mockReturnValue(mockVectorSearch); const query = 'How to run effective meetings?'; const results = await mockVectorSearch.semanticSearch(query); expect(results).toHaveLength(1); expect(results[0].score).toBe(0.9); expect(mockVectorSearch.createEmbedding).toHaveBeenCalledWith(query); }); }); describe('Safety Integration', () => { beforeEach(() => { universalAIBrain = new UniversalAIBrain(mockConfig); }); it('should integrate safety systems with intelligence layer', async () => { const mockSafetyEngine = { validateInput: jest.fn().mockResolvedValue({ isValid: true, sanitizedInput: 'Clean input', detectedIssues: [] }), validateOutput: jest.fn().mockResolvedValue({ isValid: true, sanitizedOutput: 'Safe output', detectedIssues: [] }) }; jest.spyOn(universalAIBrain as any, 'getSafetyEngine').mockReturnValue(mockSafetyEngine); const userInput = 'Tell me about user@example.com'; const aiOutput = 'Here is information about the user'; const inputValidation = await mockSafetyEngine.validateInput(userInput); const outputValidation = await mockSafetyEngine.validateOutput(aiOutput); expect(inputValidation.isValid).toBe(true); expect(outputValidation.isValid).toBe(true); expect(mockSafetyEngine.validateInput).toHaveBeenCalledWith(userInput); expect(mockSafetyEngine.validateOutput).toHaveBeenCalledWith(aiOutput); }); it('should handle safety violations appropriately', async () => { const mockSafetyEngine = { validateInput: jest.fn().mockResolvedValue({ isValid: false, sanitizedInput: '[REDACTED]', detectedIssues: ['PII_DETECTED'] }) }; jest.spyOn(universalAIBrain as any, 'getSafetyEngine').mockReturnValue(mockSafetyEngine); const unsafeInput = 'My SSN is 123-45-6789'; const validation = await mockSafetyEngine.validateInput(unsafeInput); expect(validation.isValid).toBe(false); expect(validation.detectedIssues).toContain('PII_DETECTED'); expect(validation.sanitizedInput).toBe('[REDACTED]'); }); }); describe('End-to-End Workflow', () => { beforeEach(() => { universalAIBrain = new UniversalAIBrain(mockConfig); }); it('should execute complete AI enhancement workflow', async () => { // Mock all components for end-to-end test const mockWorkflow = { // 1. Safety validation validateInput: jest.fn().mockResolvedValue({ isValid: true, sanitizedInput: 'Schedule a team meeting', detectedIssues: [] }), // 2. Memory retrieval retrieveMemories: jest.fn().mockResolvedValue([ { id: 'memory_1', content: 'Team prefers afternoon meetings', metadata: { type: 'preference', importance: 0.8 } } ]), // 3. Context injection enhancePrompt: jest.fn().mockResolvedValue({ originalPrompt: 'Schedule a team meeting', enhancedPrompt: 'Based on team preference for afternoon meetings, schedule a team meeting', injectedContext: [{ content: 'Team prefers afternoon meetings' }], optimizationMetrics: { contextRelevance: 0.9 } }), // 4. AI processing (mocked) processWithAI: jest.fn().mockResolvedValue({ response: 'I\'ll schedule the team meeting for 2 PM tomorrow', metadata: { model: 'gpt-4', tokens: 150 } }), // 5. Output validation validateOutput: jest.fn().mockResolvedValue({ isValid: true, sanitizedOutput: 'I\'ll schedule the team meeting for 2 PM tomorrow', detectedIssues: [] }), // 6. Learning and improvement recordInteraction: jest.fn().mockResolvedValue({ traceId: 'trace_123', stored: true }) }; // Execute the workflow const userInput = 'Schedule a team meeting'; // 1. Safety validation const inputValidation = await mockWorkflow.validateInput(userInput); expect(inputValidation.isValid).toBe(true); // 2. Memory retrieval const memories = await mockWorkflow.retrieveMemories(inputValidation.sanitizedInput); expect(memories).toHaveLength(1); // 3. Context injection const enhanced = await mockWorkflow.enhancePrompt(inputValidation.sanitizedInput); expect(enhanced.enhancedPrompt).toContain('afternoon meetings'); // 4. AI processing const aiResponse = await mockWorkflow.processWithAI(enhanced.enhancedPrompt); expect(aiResponse.response).toContain('2 PM'); // 5. Output validation const outputValidation = await mockWorkflow.validateOutput(aiResponse.response); expect(outputValidation.isValid).toBe(true); // 6. Learning const trace = await mockWorkflow.recordInteraction({ input: userInput, output: aiResponse.response, context: enhanced.injectedContext, metrics: enhanced.optimizationMetrics }); expect(trace.stored).toBe(true); }); it('should handle workflow failures gracefully', async () => { const mockFailingWorkflow = { validateInput: jest.fn().mockRejectedValue(new Error('Safety system unavailable')), fallbackProcess: jest.fn().mockResolvedValue({ response: 'I apologize, but I cannot process your request right now', fallback: true }) }; // Test graceful degradation try { await mockFailingWorkflow.validateInput('test input'); } catch (error) { const fallbackResponse = await mockFailingWorkflow.fallbackProcess(); expect(fallbackResponse.fallback).toBe(true); expect(fallbackResponse.response).toContain('cannot process'); } }); }); describe('Performance and Scalability', () => { beforeEach(() => { universalAIBrain = new UniversalAIBrain(mockConfig); }); it('should handle concurrent requests efficiently', async () => { const mockProcessor = { processRequest: jest.fn().mockImplementation(async (input: string) => { // Simulate processing time await new Promise(resolve => setTimeout(resolve, 10)); return { response: `Processed: ${input}`, timestamp: Date.now() }; }) }; // Simulate concurrent requests const requests = Array.from({ length: 10 }, (_, i) => `Request ${i + 1}`); const startTime = Date.now(); const results = await Promise.all( requests.map(request => mockProcessor.processRequest(request)) ); const endTime = Date.now(); const totalTime = endTime - startTime; expect(results).toHaveLength(10); expect(totalTime).toBeLessThan(200); // Should process concurrently, not sequentially results.forEach((result, index) => { expect(result.response).toBe(`Processed: Request ${index + 1}`); }); }); it('should implement proper caching for performance', async () => { const mockCache = { get: jest.fn(), set: jest.fn(), processWithCache: jest.fn().mockImplementation(async (key: string) => { const cached = mockCache.get(key); if (cached) { return cached; } const result = { data: `Processed ${key}`, timestamp: Date.now() }; mockCache.set(key, result); return result; }) }; const cacheKey = 'test_query'; // First call - should process and cache mockCache.get.mockReturnValueOnce(null); const result1 = await mockCache.processWithCache(cacheKey); // Second call - should return cached result mockCache.get.mockReturnValueOnce(result1); const result2 = await mockCache.processWithCache(cacheKey); expect(result1).toEqual(result2); expect(mockCache.set).toHaveBeenCalledTimes(1); }); }); describe('Error Recovery and Resilience', () => { beforeEach(() => { universalAIBrain = new UniversalAIBrain(mockConfig); }); it('should recover from database connection failures', async () => { const mockResilience = { connectWithRetry: jest.fn() .mockRejectedValueOnce(new Error('Connection failed')) .mockRejectedValueOnce(new Error('Connection failed')) .mockResolvedValueOnce({ connected: true }), processWithFallback: jest.fn().mockImplementation(async () => { try { await mockResilience.connectWithRetry(); return { success: true, source: 'database' }; } catch (error) { return { success: true, source: 'fallback', message: 'Using cached data' }; } }) }; const result = await mockResilience.processWithFallback(); expect(mockResilience.connectWithRetry).toHaveBeenCalledTimes(3); expect(result.success).toBe(true); expect(result.source).toBe('database'); }); it('should handle component failures with graceful degradation', async () => { const mockComponents = { primaryService: jest.fn().mockRejectedValue(new Error('Service unavailable')), fallbackService: jest.fn().mockResolvedValue({ result: 'fallback response' }), processWithFallback: jest.fn().mockImplementation(async () => { try { return await mockComponents.primaryService(); } catch (error) { console.warn('Primary service failed, using fallback'); return await mockComponents.fallbackService(); } }) }; const result = await mockComponents.processWithFallback(); expect(result.result).toBe('fallback response'); expect(mockComponents.primaryService).toHaveBeenCalled(); expect(mockComponents.fallbackService).toHaveBeenCalled(); }); }); });