feat: implement zero-config system with Node.js 22 compatibility

- Add comprehensive zero-config preset system (production, development, minimal)
- Implement intelligent auto-configuration for models and storage
- Add Node.js version enforcement for ONNX Runtime stability
- Force single-threaded ONNX operations to prevent V8 HandleScope crashes
- Create extensible configuration architecture
- Add 14 distributed system presets for enterprise deployments
- Include detailed documentation and migration guides

BREAKING CHANGE: Now requires Node.js 22.x LTS for optimal stability
This commit is contained in:
David Snelling 2025-08-29 15:39:07 -07:00
parent 4d60384755
commit 5f862bad98
20 changed files with 3718 additions and 71 deletions

90
test-zero-config.js Normal file
View file

@ -0,0 +1,90 @@
#!/usr/bin/env node
/**
* Test the Zero-Configuration System
* This verifies all the zero-config features work as expected
*/
import { BrainyData } from './dist/index.js'
console.log('🧪 Testing Brainy Zero-Config System')
console.log('=' + '='.repeat(50))
async function testZeroConfig() {
try {
// Test 1: True zero config
console.log('\n1⃣ Testing true zero-config...')
const brain1 = new BrainyData()
await brain1.init()
console.log('✅ Zero-config works!')
// Test 2: String preset
console.log('\n2⃣ Testing string preset (development)...')
const brain2 = new BrainyData('development')
await brain2.init()
console.log('✅ String preset works!')
// Test 3: Explicit model precision
console.log('\n3⃣ Testing explicit model precision...')
const brain3 = new BrainyData({
model: 'fp32', // Explicit precision
storage: 'memory'
})
await brain3.init()
console.log('✅ Explicit model precision works!')
// Test 4: Model presets
console.log('\n4⃣ Testing model presets...')
const brain4 = new BrainyData({
model: 'fast', // Maps to fp32
features: 'minimal'
})
await brain4.init()
console.log('✅ Model preset works!')
// Test 5: Storage auto-detection
console.log('\n5⃣ Testing storage auto-detection...')
const brain5 = new BrainyData({
storage: 'auto'
})
await brain5.init()
console.log('✅ Storage auto-detection works!')
// Test 6: Add some data
console.log('\n6⃣ Testing data operations...')
const brain6 = new BrainyData({ storage: 'memory', model: 'fp32' })
await brain6.init()
const id = await brain6.addNoun('test item', { type: 'test' })
console.log(`✅ Added item with ID: ${id}`)
const results = await brain6.search('test', { limit: 1 })
console.log(`✅ Search returned ${results.length} result(s)`)
// Summary
console.log('\n' + '='.repeat(51))
console.log('🎉 ALL ZERO-CONFIG TESTS PASSED!')
console.log('\nKey Features Verified:')
console.log('✅ True zero-config (no parameters)')
console.log('✅ String presets (development/production/minimal)')
console.log('✅ Explicit model precision (fp32/q8)')
console.log('✅ Model presets (fast/small)')
console.log('✅ Storage auto-detection')
console.log('✅ Simplified config interface')
console.log('✅ Data operations work correctly')
process.exit(0)
} catch (error) {
console.error('\n❌ Test failed:', error.message)
console.error(error.stack)
process.exit(1)
}
}
// Check environment
console.log('\n📊 Environment:')
console.log(` NODE_ENV: ${process.env.NODE_ENV || 'not set'}`)
console.log(` Memory: ${Math.floor(process.memoryUsage().rss / 1024 / 1024)}MB`)
console.log(` Node: ${process.version}`)
// Run tests
testZeroConfig()