brainy/src/errors/brainyError.ts

226 lines
6.6 KiB
TypeScript
Raw Normal View History

🧠 Brainy 2.0.0 - Zero-Configuration AI Database with Triple Intelligence™ MAJOR RELEASE: Complete evolution of Brainy with groundbreaking features and performance. 🎯 KEY FEATURES: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ✨ Triple Intelligence™ Engine - Unified Vector + Metadata + Graph search - O(log n) performance on all operations - 3ms average search latency at any scale ✨ API Consolidation - 15+ search methods → 2 clean APIs - search() for vector similarity - find() for natural language queries ✨ Natural Language Processing - 220+ pre-computed NLP patterns - Instant context understanding - "Show me recent React components with tests" ✨ Zero Configuration - Works instantly, no setup required - Built-in embedding models (no API keys) - Smart defaults for everything - Automatic optimization ✨ Enterprise Features (Free for Everyone) - Scales to 10M+ items - Write-Ahead Logging (WAL) for durability - Distributed architecture with sharding - Read/write separation - Connection pooling & request deduplication - Built-in monitoring & health checks ✨ Universal Compatibility - Node.js, Browser, Edge Workers - 4 Storage Adapters (Memory, FileSystem, OPFS, S3) - TypeScript with full type safety - Worker-based embeddings 📦 WHAT'S INCLUDED: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ • Core AI Database with HNSW indexing • 19 Production-ready augmentations • Universal Memory Manager • Complete CLI with all commands • Brain Cloud integration (soulcraft.com) • Comprehensive documentation • 52 test files with 400+ tests • Migration guide from 1.x 📊 PERFORMANCE: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ • Initialize: 450ms (24MB memory) • Search: 3ms average (up to 10M items) • Metadata Filter: 0.8ms (O(log n)) • Bulk Import: 2.3s per 1000 items • Production Scale: 5.8ms at 10M items 🔧 TECHNICAL IMPROVEMENTS: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ • TypeScript compilation: 153 errors → 0 • Memory usage: 200MB → 24MB baseline • Circular dependencies resolved • Worker thread communication fixed • Storage adapter consistency • Request coalescing for 3x performance 🛠️ CLI FEATURES: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ • brainy add - Smart data ingestion • brainy find - Natural language search • brainy search - Vector similarity • brainy chat - AI conversation mode • brainy cloud - Brain Cloud integration • brainy augment - Manage extensions • 100% API compatibility 📚 DOCUMENTATION: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ • Professional README with examples • Quick Start guide (5 minutes) • Enterprise Features guide • Migration guide from 1.x • API reference • Architecture documentation 🌟 USE CASES: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ • AI memory layer for chatbots • Semantic document search • Code intelligence platforms • Knowledge management systems • Real-time recommendation engines • Customer support automation MIT License - Enterprise features included free for everyone. No premium tiers, no paywalls, no limits. Built with ❤️ by the Brainy community. Visit https://soulcraft.com for Brain Cloud integration.
2025-08-26 12:32:21 -07:00
/**
* Custom error types for Brainy operations
* Provides better error classification and handling
*/
fix: find()/stats() correctness + Cortex compat (BR-FIND-WHERE-ZERO, BR-DEFENSIVE-INTERFACE) Two production correctness defects fixed together so consumers can land one upgrade. BR-FIND-WHERE-ZERO — find() returned [] and stats() reported 0 entities for any workspace whose data was written after the 7.20.0 column-store refactor. Root cause: getStats() and the getIds() fallback still read from the deleted sparse-index path. Separately, BaseStorage.getNounType() was hardcoded to return 'thing', poisoning type-statistics.json with every noun attributed to that bucket. - MetadataIndex.getStats() reads from ColumnStore + idMapper. - MetadataIndex.getIdsFromChunks() throws BrainyError(FIELD_NOT_INDEXED) when neither store has the field. getIdsForFilter() catches per clause, logs once, returns []. - BaseStorage.nounTypeByIdCache populated in saveNounMetadata_internal and consumed in saveNoun_internal. flushCounts() now persists the Uint32Array counters too, so readers see fresh per-type counts. - Self-heal at init: loadTypeStatistics() auto-rebuilds when the poisoned signature is detected. rebuildTypeCounts() is now public for use from `brainy inspect repair`. - Dead state removed: dirtyChunks, dirtySparseIndices, flushDirtyMetadata(). BR-DEFENSIVE-INTERFACE — 7.21.0 called supportsMultiProcessLocking() unconditionally, crashing on older Cortex storage adapters that predate the method. New hasStorageMethod(name) helper gates every new-method call site. Older adapter triggers a one-line warning at init pointing at the recommended plugin version. Tests: - new tests/integration/find-where-zero.test.ts (7 cases) - new tests/integration/cortex-compat.test.ts (5 cases) - multi-process-safety.test.ts updated to enforce correct counts - 1329/1329 unit + 24/24 new integration tests passing
2026-05-15 12:31:28 -07:00
export type BrainyErrorType =
| 'TIMEOUT'
| 'NETWORK'
| 'STORAGE'
| 'NOT_FOUND'
| 'RETRY_EXHAUSTED'
| 'VALIDATION'
| 'FIELD_NOT_INDEXED'
🧠 Brainy 2.0.0 - Zero-Configuration AI Database with Triple Intelligence™ MAJOR RELEASE: Complete evolution of Brainy with groundbreaking features and performance. 🎯 KEY FEATURES: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ✨ Triple Intelligence™ Engine - Unified Vector + Metadata + Graph search - O(log n) performance on all operations - 3ms average search latency at any scale ✨ API Consolidation - 15+ search methods → 2 clean APIs - search() for vector similarity - find() for natural language queries ✨ Natural Language Processing - 220+ pre-computed NLP patterns - Instant context understanding - "Show me recent React components with tests" ✨ Zero Configuration - Works instantly, no setup required - Built-in embedding models (no API keys) - Smart defaults for everything - Automatic optimization ✨ Enterprise Features (Free for Everyone) - Scales to 10M+ items - Write-Ahead Logging (WAL) for durability - Distributed architecture with sharding - Read/write separation - Connection pooling & request deduplication - Built-in monitoring & health checks ✨ Universal Compatibility - Node.js, Browser, Edge Workers - 4 Storage Adapters (Memory, FileSystem, OPFS, S3) - TypeScript with full type safety - Worker-based embeddings 📦 WHAT'S INCLUDED: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ • Core AI Database with HNSW indexing • 19 Production-ready augmentations • Universal Memory Manager • Complete CLI with all commands • Brain Cloud integration (soulcraft.com) • Comprehensive documentation • 52 test files with 400+ tests • Migration guide from 1.x 📊 PERFORMANCE: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ • Initialize: 450ms (24MB memory) • Search: 3ms average (up to 10M items) • Metadata Filter: 0.8ms (O(log n)) • Bulk Import: 2.3s per 1000 items • Production Scale: 5.8ms at 10M items 🔧 TECHNICAL IMPROVEMENTS: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ • TypeScript compilation: 153 errors → 0 • Memory usage: 200MB → 24MB baseline • Circular dependencies resolved • Worker thread communication fixed • Storage adapter consistency • Request coalescing for 3x performance 🛠️ CLI FEATURES: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ • brainy add - Smart data ingestion • brainy find - Natural language search • brainy search - Vector similarity • brainy chat - AI conversation mode • brainy cloud - Brain Cloud integration • brainy augment - Manage extensions • 100% API compatibility 📚 DOCUMENTATION: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ • Professional README with examples • Quick Start guide (5 minutes) • Enterprise Features guide • Migration guide from 1.x • API reference • Architecture documentation 🌟 USE CASES: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ • AI memory layer for chatbots • Semantic document search • Code intelligence platforms • Knowledge management systems • Real-time recommendation engines • Customer support automation MIT License - Enterprise features included free for everyone. No premium tiers, no paywalls, no limits. Built with ❤️ by the Brainy community. Visit https://soulcraft.com for Brain Cloud integration.
2025-08-26 12:32:21 -07:00
/**
* Custom error class for Brainy operations
* Provides error type classification and retry information
*/
export class BrainyError extends Error {
public readonly type: BrainyErrorType
public readonly retryable: boolean
public readonly originalError?: Error
public readonly attemptNumber?: number
public readonly maxRetries?: number
constructor(
message: string,
type: BrainyErrorType,
retryable: boolean = false,
originalError?: Error,
attemptNumber?: number,
maxRetries?: number
) {
super(message)
this.name = 'BrainyError'
this.type = type
this.retryable = retryable
this.originalError = originalError
this.attemptNumber = attemptNumber
this.maxRetries = maxRetries
// Maintain proper stack trace for where our error was thrown (only available on V8)
if (Error.captureStackTrace) {
Error.captureStackTrace(this, BrainyError)
}
}
/**
* Create a timeout error
*/
static timeout(operation: string, timeoutMs: number, originalError?: Error): BrainyError {
return new BrainyError(
`Operation '${operation}' timed out after ${timeoutMs}ms`,
'TIMEOUT',
true,
originalError
)
}
/**
* Create a network error
*/
static network(message: string, originalError?: Error): BrainyError {
return new BrainyError(
`Network error: ${message}`,
'NETWORK',
true,
originalError
)
}
/**
* Create a storage error
*/
static storage(message: string, originalError?: Error): BrainyError {
return new BrainyError(
`Storage error: ${message}`,
'STORAGE',
true,
originalError
)
}
/**
* Create a not found error
*/
static notFound(resource: string): BrainyError {
return new BrainyError(
`Resource not found: ${resource}`,
'NOT_FOUND',
false
)
}
/**
* Create a retry exhausted error
*/
static retryExhausted(operation: string, maxRetries: number, lastError?: Error): BrainyError {
return new BrainyError(
`Operation '${operation}' failed after ${maxRetries} retry attempts`,
'RETRY_EXHAUSTED',
false,
lastError,
maxRetries,
maxRetries
)
}
fix: find()/stats() correctness + Cortex compat (BR-FIND-WHERE-ZERO, BR-DEFENSIVE-INTERFACE) Two production correctness defects fixed together so consumers can land one upgrade. BR-FIND-WHERE-ZERO — find() returned [] and stats() reported 0 entities for any workspace whose data was written after the 7.20.0 column-store refactor. Root cause: getStats() and the getIds() fallback still read from the deleted sparse-index path. Separately, BaseStorage.getNounType() was hardcoded to return 'thing', poisoning type-statistics.json with every noun attributed to that bucket. - MetadataIndex.getStats() reads from ColumnStore + idMapper. - MetadataIndex.getIdsFromChunks() throws BrainyError(FIELD_NOT_INDEXED) when neither store has the field. getIdsForFilter() catches per clause, logs once, returns []. - BaseStorage.nounTypeByIdCache populated in saveNounMetadata_internal and consumed in saveNoun_internal. flushCounts() now persists the Uint32Array counters too, so readers see fresh per-type counts. - Self-heal at init: loadTypeStatistics() auto-rebuilds when the poisoned signature is detected. rebuildTypeCounts() is now public for use from `brainy inspect repair`. - Dead state removed: dirtyChunks, dirtySparseIndices, flushDirtyMetadata(). BR-DEFENSIVE-INTERFACE — 7.21.0 called supportsMultiProcessLocking() unconditionally, crashing on older Cortex storage adapters that predate the method. New hasStorageMethod(name) helper gates every new-method call site. Older adapter triggers a one-line warning at init pointing at the recommended plugin version. Tests: - new tests/integration/find-where-zero.test.ts (7 cases) - new tests/integration/cortex-compat.test.ts (5 cases) - multi-process-safety.test.ts updated to enforce correct counts - 1329/1329 unit + 24/24 new integration tests passing
2026-05-15 12:31:28 -07:00
/**
* Create a "field is not indexed" error. Thrown by metadata-index reads
* when a `where` clause names a field that has neither a column-store
* entry nor a sparse-index entry. Callers in `find()` evaluation catch
* this, translate the offending clause to an empty result, and log so
* the silent-empty behavior is replaced with a loud one. Use
* `brain.explain({ where: {...} })` to discover this before running.
*/
static fieldNotIndexed(field: string): BrainyError {
return new BrainyError(
`Field "${field}" is not indexed. find()/where will not match any entities. ` +
`Likely causes: (1) the writer registered the field in memory but has not flushed; ` +
`(2) the field name is mistyped; (3) no entity has ever held this field. ` +
`Run brain.explain({ where: { ${field}: ... } }) for the diagnostic.`,
'FIELD_NOT_INDEXED',
false
)
}
/**
* Create a validation error
*/
static validation(parameter: string, constraint: string, value?: any): BrainyError {
return new BrainyError(
`Invalid ${parameter}: ${constraint}`,
'VALIDATION',
false
)
}
🧠 Brainy 2.0.0 - Zero-Configuration AI Database with Triple Intelligence™ MAJOR RELEASE: Complete evolution of Brainy with groundbreaking features and performance. 🎯 KEY FEATURES: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ✨ Triple Intelligence™ Engine - Unified Vector + Metadata + Graph search - O(log n) performance on all operations - 3ms average search latency at any scale ✨ API Consolidation - 15+ search methods → 2 clean APIs - search() for vector similarity - find() for natural language queries ✨ Natural Language Processing - 220+ pre-computed NLP patterns - Instant context understanding - "Show me recent React components with tests" ✨ Zero Configuration - Works instantly, no setup required - Built-in embedding models (no API keys) - Smart defaults for everything - Automatic optimization ✨ Enterprise Features (Free for Everyone) - Scales to 10M+ items - Write-Ahead Logging (WAL) for durability - Distributed architecture with sharding - Read/write separation - Connection pooling & request deduplication - Built-in monitoring & health checks ✨ Universal Compatibility - Node.js, Browser, Edge Workers - 4 Storage Adapters (Memory, FileSystem, OPFS, S3) - TypeScript with full type safety - Worker-based embeddings 📦 WHAT'S INCLUDED: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ • Core AI Database with HNSW indexing • 19 Production-ready augmentations • Universal Memory Manager • Complete CLI with all commands • Brain Cloud integration (soulcraft.com) • Comprehensive documentation • 52 test files with 400+ tests • Migration guide from 1.x 📊 PERFORMANCE: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ • Initialize: 450ms (24MB memory) • Search: 3ms average (up to 10M items) • Metadata Filter: 0.8ms (O(log n)) • Bulk Import: 2.3s per 1000 items • Production Scale: 5.8ms at 10M items 🔧 TECHNICAL IMPROVEMENTS: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ • TypeScript compilation: 153 errors → 0 • Memory usage: 200MB → 24MB baseline • Circular dependencies resolved • Worker thread communication fixed • Storage adapter consistency • Request coalescing for 3x performance 🛠️ CLI FEATURES: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ • brainy add - Smart data ingestion • brainy find - Natural language search • brainy search - Vector similarity • brainy chat - AI conversation mode • brainy cloud - Brain Cloud integration • brainy augment - Manage extensions • 100% API compatibility 📚 DOCUMENTATION: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ • Professional README with examples • Quick Start guide (5 minutes) • Enterprise Features guide • Migration guide from 1.x • API reference • Architecture documentation 🌟 USE CASES: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ • AI memory layer for chatbots • Semantic document search • Code intelligence platforms • Knowledge management systems • Real-time recommendation engines • Customer support automation MIT License - Enterprise features included free for everyone. No premium tiers, no paywalls, no limits. Built with ❤️ by the Brainy community. Visit https://soulcraft.com for Brain Cloud integration.
2025-08-26 12:32:21 -07:00
/**
* Check if an error is retryable
*/
static isRetryable(error: Error): boolean {
if (error instanceof BrainyError) {
return error.retryable
}
// Check for common retryable error patterns
const message = error.message.toLowerCase()
const name = error.name.toLowerCase()
// Network-related errors that are typically retryable
if (
message.includes('timeout') ||
message.includes('network') ||
message.includes('connection') ||
message.includes('econnreset') ||
message.includes('enotfound') ||
message.includes('etimedout') ||
name.includes('timeout')
) {
return true
}
// AWS SDK specific retryable errors
if (
message.includes('throttling') ||
message.includes('rate limit') ||
message.includes('service unavailable') ||
message.includes('internal server error') ||
message.includes('bad gateway') ||
message.includes('gateway timeout')
) {
return true
}
return false
}
/**
* Convert a generic error to a BrainyError with appropriate classification
*/
static fromError(error: Error, operation?: string): BrainyError {
if (error instanceof BrainyError) {
return error
}
const message = error.message.toLowerCase()
const name = error.name.toLowerCase()
// Classify the error based on common patterns
if (message.includes('timeout') || name.includes('timeout')) {
return BrainyError.timeout(operation || 'unknown', 0, error)
}
if (
message.includes('network') ||
message.includes('connection') ||
message.includes('econnreset') ||
message.includes('enotfound') ||
message.includes('etimedout')
) {
return BrainyError.network(error.message, error)
}
if (
message.includes('nosuchkey') ||
message.includes('not found') ||
message.includes('does not exist')
) {
return BrainyError.notFound(operation || 'resource')
}
if (
message.includes('invalid') ||
message.includes('validation') ||
message.includes('cannot be null') ||
message.includes('must be')
) {
return new BrainyError(error.message, 'VALIDATION', false, error)
}
🧠 Brainy 2.0.0 - Zero-Configuration AI Database with Triple Intelligence™ MAJOR RELEASE: Complete evolution of Brainy with groundbreaking features and performance. 🎯 KEY FEATURES: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ✨ Triple Intelligence™ Engine - Unified Vector + Metadata + Graph search - O(log n) performance on all operations - 3ms average search latency at any scale ✨ API Consolidation - 15+ search methods → 2 clean APIs - search() for vector similarity - find() for natural language queries ✨ Natural Language Processing - 220+ pre-computed NLP patterns - Instant context understanding - "Show me recent React components with tests" ✨ Zero Configuration - Works instantly, no setup required - Built-in embedding models (no API keys) - Smart defaults for everything - Automatic optimization ✨ Enterprise Features (Free for Everyone) - Scales to 10M+ items - Write-Ahead Logging (WAL) for durability - Distributed architecture with sharding - Read/write separation - Connection pooling & request deduplication - Built-in monitoring & health checks ✨ Universal Compatibility - Node.js, Browser, Edge Workers - 4 Storage Adapters (Memory, FileSystem, OPFS, S3) - TypeScript with full type safety - Worker-based embeddings 📦 WHAT'S INCLUDED: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ • Core AI Database with HNSW indexing • 19 Production-ready augmentations • Universal Memory Manager • Complete CLI with all commands • Brain Cloud integration (soulcraft.com) • Comprehensive documentation • 52 test files with 400+ tests • Migration guide from 1.x 📊 PERFORMANCE: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ • Initialize: 450ms (24MB memory) • Search: 3ms average (up to 10M items) • Metadata Filter: 0.8ms (O(log n)) • Bulk Import: 2.3s per 1000 items • Production Scale: 5.8ms at 10M items 🔧 TECHNICAL IMPROVEMENTS: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ • TypeScript compilation: 153 errors → 0 • Memory usage: 200MB → 24MB baseline • Circular dependencies resolved • Worker thread communication fixed • Storage adapter consistency • Request coalescing for 3x performance 🛠️ CLI FEATURES: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ • brainy add - Smart data ingestion • brainy find - Natural language search • brainy search - Vector similarity • brainy chat - AI conversation mode • brainy cloud - Brain Cloud integration • brainy augment - Manage extensions • 100% API compatibility 📚 DOCUMENTATION: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ • Professional README with examples • Quick Start guide (5 minutes) • Enterprise Features guide • Migration guide from 1.x • API reference • Architecture documentation 🌟 USE CASES: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ • AI memory layer for chatbots • Semantic document search • Code intelligence platforms • Knowledge management systems • Real-time recommendation engines • Customer support automation MIT License - Enterprise features included free for everyone. No premium tiers, no paywalls, no limits. Built with ❤️ by the Brainy community. Visit https://soulcraft.com for Brain Cloud integration.
2025-08-26 12:32:21 -07:00
// Default to storage error for unclassified errors
return BrainyError.storage(error.message, error)
}
}