- 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
81 lines
No EOL
2 KiB
TypeScript
81 lines
No EOL
2 KiB
TypeScript
/**
|
|
* Node.js Version Compatibility Check
|
|
*
|
|
* Brainy requires Node.js 22.x LTS for maximum stability with ONNX Runtime.
|
|
* This prevents V8 HandleScope locking issues in worker threads.
|
|
*/
|
|
|
|
export interface VersionInfo {
|
|
current: string
|
|
major: number
|
|
isSupported: boolean
|
|
recommendation: string
|
|
}
|
|
|
|
/**
|
|
* Check if the current Node.js version is supported
|
|
*/
|
|
export function checkNodeVersion(): VersionInfo {
|
|
const nodeVersion = process.version
|
|
const majorVersion = parseInt(nodeVersion.split('.')[0].substring(1))
|
|
|
|
const versionInfo: VersionInfo = {
|
|
current: nodeVersion,
|
|
major: majorVersion,
|
|
isSupported: majorVersion === 22,
|
|
recommendation: 'Node.js 22.x LTS'
|
|
}
|
|
|
|
return versionInfo
|
|
}
|
|
|
|
/**
|
|
* Enforce Node.js version requirement with helpful error messaging
|
|
*/
|
|
export function enforceNodeVersion(): void {
|
|
const versionInfo = checkNodeVersion()
|
|
|
|
if (!versionInfo.isSupported) {
|
|
const errorMessage = [
|
|
'🚨 BRAINY COMPATIBILITY ERROR',
|
|
'━'.repeat(50),
|
|
`❌ Current Node.js: ${versionInfo.current}`,
|
|
`✅ Required: ${versionInfo.recommendation}`,
|
|
'',
|
|
'💡 Quick Fix:',
|
|
' nvm install 22 && nvm use 22',
|
|
' npm install',
|
|
'',
|
|
'📖 Why Node.js 22?',
|
|
' • Maximum ONNX Runtime stability',
|
|
' • Prevents V8 threading crashes',
|
|
' • Optimal zero-config performance',
|
|
'',
|
|
'🔗 More info: https://github.com/soulcraftlabs/brainy#node-version',
|
|
'━'.repeat(50)
|
|
].join('\n')
|
|
|
|
throw new Error(errorMessage)
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Soft warning for version issues (non-blocking)
|
|
*/
|
|
export function warnNodeVersion(): boolean {
|
|
const versionInfo = checkNodeVersion()
|
|
|
|
if (!versionInfo.isSupported) {
|
|
console.warn([
|
|
'⚠️ BRAINY VERSION WARNING',
|
|
` Current: ${versionInfo.current}`,
|
|
` Recommended: ${versionInfo.recommendation}`,
|
|
' Consider upgrading for best stability',
|
|
''
|
|
].join('\n'))
|
|
|
|
return false
|
|
}
|
|
|
|
return true
|
|
} |