Skip to main content
Glama

meMCP - Memory-Enhanced Model Context Protocol

MIT License
23
2
test-corruption-fixes.jsโ€ข4.87 kB
#!/usr/bin/env node import { SequentialGraphitiIntegration } from './src/core/SequentialGraphitiIntegration.js'; console.log('๐Ÿ”ง Testing JSON Storage Corruption Fixes\n'); async function testCorruptionFixes() { const integration = new SequentialGraphitiIntegration(); try { console.log('๐Ÿš€ Initializing system (this will repair any corrupted files)...'); await integration.initialize(); console.log('โœ… System initialized successfully\n'); // Test that the file repair functionality worked console.log('๐Ÿ“Š Checking system stats after repair...'); const stats = await integration.factStore.getStats(); console.log(`โœ… Total facts loaded: ${stats.totalFacts}`); console.log(`โœ… Facts by type: ${Object.keys(stats.factsByType).length} types`); console.log(`โœ… Facts by domain: ${Object.keys(stats.factsByDomain).length} domains\n`); // Test safe file writing console.log('๐Ÿ’พ Testing safe file writing...'); const testInsights = [ { content: 'FileManager implements atomic writes to prevent JSON corruption', type: 'verified_pattern', domain: 'file-systems', tags: ['atomic-write', 'corruption-prevention'] }, { content: 'JSON validation and backup creation ensure data integrity', type: 'optimization', domain: 'data-integrity', tags: ['validation', 'backup', 'integrity'] }, { content: 'Concurrent write protection prevents race conditions in file storage', type: 'debugging_solution', domain: 'concurrency', tags: ['race-condition', 'file-locking', 'concurrent-write'] } ]; // Test storing multiple insights rapidly (this would previously cause corruption) console.log('โšก Testing rapid concurrent writes...'); const writePromises = testInsights.map(insight => integration.memoryTools.storeInsight(insight) ); const results = await Promise.all(writePromises); console.log(`โœ… Successfully stored ${results.length} insights concurrently`); for (const result of results) { console.log(` - ${result.factId}: Quality ${result.qualityScore}`); } console.log(); // Test file repair functionality console.log('๐Ÿ”ง Testing file repair functionality...'); const repairResults = await integration.factStore.repairStorage(); console.log(`โœ… Storage repair scan results:`); console.log(` - Files scanned: ${repairResults.scanned}`); console.log(` - Corrupted files found: ${repairResults.corrupted}`); console.log(` - Files repaired: ${repairResults.repaired}`); console.log(` - Files quarantined: ${repairResults.quarantined}\n`); // Test semantic index integrity after repairs console.log('๐Ÿง  Testing semantic index integrity...'); const semanticStats = integration.factStore.getSemanticStats(); console.log(`โœ… Semantic index: ${semanticStats.totalDocuments} documents, ${semanticStats.vocabularySize} terms`); // Test search functionality const searchResult = await integration.factStore.queryFacts({ query: 'corruption prevention', limit: 5 }); console.log(`โœ… Search functionality: Found ${searchResult.facts.length} relevant facts\n`); // Test backup and cleanup console.log('๐Ÿงน Testing backup cleanup...'); const factsDir = integration.factStore.storageDir + '/facts'; await integration.factStore.fileManager.cleanupBackups(factsDir, 0); // Clean all backups console.log('โœ… Backup cleanup completed\n'); // Final verification console.log('๐Ÿ” Final verification...'); const finalStats = await integration.factStore.getStats(); console.log(`โœ… Final system state:`); console.log(` - Total facts: ${finalStats.totalFacts}`); console.log(` - Average quality: ${finalStats.averageQualityScore}`); console.log(` - System healthy: ${finalStats.totalFacts > 0 ? 'Yes' : 'No'}\n`); console.log('๐ŸŽ‰ All corruption fix tests completed successfully!'); console.log('\n๐Ÿ“‹ Summary of fixes implemented:'); console.log(' โœ… Atomic file writes to prevent corruption'); console.log(' โœ… JSON validation before and after writing'); console.log(' โœ… Automatic backup creation and restoration'); console.log(' โœ… Concurrent write protection with queuing'); console.log(' โœ… Corrupted file detection and repair'); console.log(' โœ… Automatic quarantine of unrepairable files'); console.log(' โœ… Backup cleanup to prevent disk bloat'); } catch (error) { console.error('โŒ Error in corruption fix test:', error); console.error('Stack trace:', error.stack); } finally { await integration.shutdown(); } } testCorruptionFixes().catch(console.error);

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/mixelpixx/meMCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server