-
released this
2025-10-16 21:09:03 +02:00 | 767 commits to main since this release🧠 Brainy v3.49.0 - Real-time Relationship Building Progress
Production-ready progress callbacks for the relationship building phase, eliminating the 1-2 minute silent period during large imports.
✨ New Features
Real-time Progress Tracking
- Two-Phase Progress: Separate tracking for
extractionandrelationshipsphases - Live Updates: Progress callbacks fire during
brain.relateMany()operations - Chunk-based Emission: Minimal overhead (<0.01%) using 100-relationship batches
- Universal Support: Works across all import paths and storage adapters
Enhanced Progress Interface
{ stage: 'storing-graph', phase: 'relationships', // NEW: extraction | relationships message: 'Building relationships: 100/573', current: 100, // NEW: Current count (alias for processed) processed: 100, total: 573, entities: 150, relationships: 100 }🔧 API Enhancements
ImportCoordinator
- Now emits progress during
brain.relateMany()(src/import/ImportCoordinator.ts:693-704) - Added
phaseandcurrentfields toImportProgressinterface
SmartImportOrchestrator
- Refactored to use
brain.relateMany()for batch operations - Added
relationshipsphase toSmartImportProgressinterface - Improved performance with parallel batch processing
UniversalImportAPI
- New
NeuralImportProgressinterface - Progress callbacks during both entity and relationship storage
- Batch relationship creation with real-time updates
📚 Examples
NEW:
examples/import-with-progress.tsComplete demo with:
- Visual progress bars
- ETA estimation
- Real-time throughput tracking
- Phase transition detection
UPDATED:
examples/complete-import-demo.tsNow demonstrates both extraction and relationship building phases
⚡ Performance
- Overhead: 0.6ms for 573 relationships (0.01% of total time)
- Chunk Size: 100 relationships per batch (configurable)
- Throughput: Unchanged from previous version
- Storage Agnostic: Works with FileSystem, S3, R2, GCS, Memory, OPFS, TypeAware
🔄 Backward Compatibility
✅ Zero Breaking Changes
- All new fields are optional
- Existing code continues to work unchanged
- Progressive enhancement approach
📖 Usage Example
const brain = new Brainy({ storage: { type: 'memory' } }) await brain.init() const result = await brain.import('data.csv', { format: 'csv', onProgress: (progress) => { if (progress.phase === 'extraction') { console.log(`Extracting: ${progress.current}/${progress.total} entities`) } else if (progress.phase === 'relationships') { console.log(`Building: ${progress.current}/${progress.total} relationships`) } } }) console.log(`✓ Created ${result.entities.length} entities`) console.log(`✓ Created ${result.relationships.length} relationships`)🎯 Problem Solved
Previously, large imports (500+ entities with relationships) would appear frozen during the relationship building phase, causing users to think the import had hung. Now users get real-time feedback throughout the entire import process.
📦 Installation
npm install @soulcraft/brainy@3.49.0🔗 Links
🤝 Contributors
🤖 Generated with Claude Code
Co-Authored-By: Claude noreply@anthropic.com
Full Changelog: https://github.com/soulcraftlabs/brainy/compare/v3.48.0...v3.49.0
Downloads
-
Source code (ZIP)
1 download
-
Source code (TAR.GZ)
1 download
- Two-Phase Progress: Separate tracking for