# 🔌 Brainy Augmentations Complete Reference > **All augmentations that power Brainy's extensibility - with locations, usage, and examples** > > **⚠️ Update**: Updated for metadata structure changes and billion-scale optimizations ## Quick Start ```typescript import { Brainy } from '@soulcraft/brainy' const brain = new Brainy({ // Augmentations auto-configure based on environment storage: 'auto', // Storage augmentation cache: true, // Cache augmentation index: true // Index augmentation }) await brain.init() // Augmentations initialize automatically ``` ## Augmentation Architecture ### Key Improvements for Billion-Scale Performance 1. **Metadata/Vector Separation**: Augmentations now work with separated metadata and vectors - Metadata stored separately from vector data - 99.2% memory reduction for type tracking - Two-file storage pattern for optimal I/O 2. **Type System Enforcement**: All metadata requires type fields - `NounMetadata` requires `noun: NounType` - `VerbMetadata` requires `verb: VerbType` - Type inference system available as public API 3. **Storage Adapter Pattern**: Internal vs public method distinction - `_methods`: Return pure structures (HNSWNoun, HNSWVerb) - Public methods: Return WithMetadata types - MetadataEnforcer Proxy ensures proper access ### What This Means for Augmentation Users **✅ If you use built-in augmentations**: No changes needed! They're all updated. **⚠️ If you created custom storage augmentations**: Update your storage adapter to: - Wrap metadata with required `noun`/`verb` fields - Follow the internal/public method pattern - Use two-file storage approach **⚠️ If you access relationship data**: Change `verb.type` to `verb.verb` ## Core Concepts ### What are Augmentations? Augmentations are modular extensions that add functionality to Brainy without cluttering the core API. They follow a unified interface and can be: - **Auto-enabled**: Based on configuration (cache, index, storage) - **Manually registered**: For custom functionality - **Chained**: Multiple augmentations work together seamlessly - **Billion-scale ready**: Optimized for datasets with billions of nouns and verbs ### Augmentation Lifecycle 1. **Registration**: Augmentations register before init() 2. **Initialization**: Two-phase init (storage first, then others) 3. **Execution**: Hook into operations (before/after/both) 4. **Shutdown**: Clean teardown on brain.shutdown() --- ## Storage Augmentations (8 total) ### MemoryStorageAugmentation **Location**: `src/augmentations/storageAugmentations.ts` **Auto-enabled**: When `storage: 'memory'` or in test environments **Purpose**: In-memory storage for testing and temporary data ```typescript const brain = new Brainy({ storage: 'memory' }) ``` ### FileSystemStorageAugmentation **Location**: `src/augmentations/storageAugmentations.ts` **Auto-enabled**: When `storage: 'filesystem'` or Node.js detected **Purpose**: Persistent file-based storage for Node.js applications ```typescript const brain = new Brainy({ storage: { type: 'filesystem', path: './data' } }) ``` ### OPFSStorageAugmentation **Location**: `src/augmentations/storageAugmentations.ts` **Auto-enabled**: When `storage: 'opfs'` or browser with OPFS support **Purpose**: Browser-based persistent storage using Origin Private File System ```typescript const brain = new Brainy({ storage: 'opfs' }) ``` ### S3StorageAugmentation **Location**: `src/augmentations/storageAugmentations.ts` **Manual**: Requires AWS credentials **Purpose**: AWS S3-compatible cloud storage ```typescript const brain = new Brainy({ storage: { type: 's3', bucket: 'my-bucket', region: 'us-east-1', credentials: { accessKeyId, secretAccessKey } } }) ``` ### R2StorageAugmentation **Location**: `src/augmentations/storageAugmentations.ts` **Manual**: Requires Cloudflare credentials **Purpose**: Cloudflare R2 storage (S3-compatible) ```typescript const brain = new Brainy({ storage: { type: 'r2', accountId: 'xxx', bucket: 'my-bucket', credentials: { accessKeyId, secretAccessKey } } }) ``` ### GCSStorageAugmentation **Location**: `src/augmentations/storageAugmentations.ts` **Manual**: Requires Google Cloud credentials **Purpose**: Google Cloud Storage ```typescript const brain = new Brainy({ storage: { type: 'gcs', bucket: 'my-bucket', projectId: 'my-project' } }) ``` ### StorageAugmentation (base) **Location**: `src/augmentations/storageAugmentation.ts` **Purpose**: Base class for custom storage implementations ### DynamicStorageAugmentation **Location**: `src/augmentations/storageAugmentation.ts` **Purpose**: Runtime storage adapter switching --- ## Performance Augmentations (7 total) ### CacheAugmentation **Location**: `src/augmentations/cacheAugmentation.ts` **Auto-enabled**: When `cache: true` (default) **Purpose**: LRU cache for search results and frequent queries ```typescript brain.clearCache() // Exposed via API brain.getCacheStats() // Cache hit/miss statistics ``` ### IndexAugmentation **Location**: `src/augmentations/indexAugmentation.ts` **Auto-enabled**: When `index: true` (default) **Purpose**: Metadata indexing for O(1) field lookups ```typescript brain.rebuildMetadataIndex() // Exposed via API // Enables fast where queries: brain.find({ where: { category: 'tech' } }) ``` ### MetricsAugmentation **Location**: `src/augmentations/metricsAugmentation.ts` **Auto-enabled**: Always active **Purpose**: Performance metrics and statistics collection ```typescript brain.getStats() // Comprehensive metrics ``` ### MonitoringAugmentation **Location**: `src/augmentations/monitoringAugmentation.ts` **Manual**: Register for detailed monitoring **Purpose**: Real-time performance monitoring and alerts ### BatchProcessingAugmentation **Location**: `src/augmentations/batchProcessingAugmentation.ts` **Auto-enabled**: For batch operations **Purpose**: Optimizes bulk add/update/delete operations ```typescript brain.addNouns([...]) // Automatically batched ``` ### RequestDeduplicatorAugmentation **Location**: `src/augmentations/requestDeduplicatorAugmentation.ts` **Auto-enabled**: Always active **Purpose**: Prevents duplicate concurrent operations ### ConnectionPoolAugmentation **Location**: `src/augmentations/connectionPoolAugmentation.ts` **Auto-enabled**: For network storage **Purpose**: Connection pooling for cloud storage adapters --- ## Data Integrity Augmentations (3 total) **Auto-enabled**: When `wal: true` **Purpose**: Write-ahead logging for crash recovery ```typescript const brain = new Brainy({ wal: true }) // Automatic recovery on restart after crash ``` ### EntityRegistryAugmentation **Location**: `src/augmentations/entityRegistryAugmentation.ts` **Auto-enabled**: For streaming operations **Purpose**: High-speed deduplication for real-time data ```typescript // Prevents duplicate entities in streaming scenarios brain.add(data) // Automatically deduplicated ``` ### AutoRegisterEntitiesAugmentation **Location**: `src/augmentations/entityRegistryAugmentation.ts` **Manual**: For automatic entity discovery **Purpose**: Auto-discovers and registers entities from data --- ## Intelligence Augmentations (2 total) ### NeuralImportAugmentation **Location**: `src/augmentations/neuralImport.ts` **Manual**: Via `brain.neuralImport()` **Purpose**: AI-powered smart data import ```typescript const result = await brain.neuralImport(data, { confidenceThreshold: 0.7, autoApply: true }) // Automatically detects entities and relationships ``` ### IntelligentVerbScoringAugmentation **Location**: `src/augmentations/intelligentVerbScoringAugmentation.ts` **Auto-enabled**: When verbs are used **Purpose**: ML-based relationship strength scoring ```typescript brain.verbScoring.train(feedback) brain.verbScoring.getScore(verbId) ``` --- ## Communication Augmentations (4 total) ### APIServerAugmentation **Location**: `src/augmentations/apiServerAugmentation.ts` **Manual**: For server deployments **Purpose**: REST/WebSocket/MCP API server ```typescript const augmentation = new APIServerAugmentation() await brain.registerAugmentation(augmentation) // Exposes full Brainy API over network ``` ### WebSocketConduitAugmentation **Location**: `src/augmentations/conduitAugmentations.ts` **Manual**: For Brainy-to-Brainy sync **Purpose**: Real-time sync between Brainy instances ```typescript const conduit = new WebSocketConduitAugmentation() await conduit.establishConnection('ws://other-brain') ``` ### ServerSearchConduitAugmentation **Location**: `src/augmentations/serverSearchAugmentations.ts` **Manual**: For client-server search **Purpose**: Search remote Brainy instance, cache locally ### ServerSearchActivationAugmentation **Location**: `src/augmentations/serverSearchAugmentations.ts` **Manual**: Works with ServerSearchConduit **Purpose**: Triggers and manages server search operations --- ## External Integration (2 total) ### SynapseAugmentation (base) **Location**: `src/augmentations/synapseAugmentation.ts` **Purpose**: Base class for external platform integrations ```typescript // Example: NotionSynapse, SlackSynapse, etc. class NotionSynapse extends SynapseAugmentation { async fetchData() { /* Notion API calls */ } async pushData() { /* Sync to Notion */ } } ``` ### ExampleFileSystemSynapse **Location**: `src/augmentations/synapseAugmentation.ts` **Purpose**: Example implementation for file system sync --- ## Augmentation Configuration ### Auto-Configuration ```typescript const brain = new Brainy({ // These auto-register augmentations: storage: 'auto', // Storage augmentation cache: true, // Cache augmentation index: true, // Index augmentation metrics: true // Metrics augmentation }) ``` ### Manual Registration ```typescript const brain = new Brainy() // Register before init() const customAug = new MyCustomAugmentation() await brain.registerAugmentation(customAug) await brain.init() ``` ### Creating Custom Augmentations ```typescript import { BaseAugmentation } from '@soulcraft/brainy' class MyAugmentation extends BaseAugmentation { readonly name = 'my-augmentation' readonly timing = 'after' // before | after | both readonly operations = ['addNoun', 'search'] // Which ops to hook readonly priority = 10 // Execution order (lower = earlier) protected async onInit(): Promise { // Initialize your augmentation } async execute( operation: string, params: any, context?: AugmentationContext ): Promise { // Your augmentation logic if (operation === 'addNoun') { console.log('Noun added:', params) } } protected async onShutdown(): Promise { // Cleanup } } ``` --- ## Augmentation Timing & Priority ### Timing Options - **`before`**: Runs before the operation (can modify params) - **`after`**: Runs after the operation (can see results) - **`both`**: Runs before AND after ### Priority (lower = earlier) 1. Storage augmentations (priority: 0) 2. Cache/Index augmentations (priority: 5-10) 3. Monitoring/Metrics (priority: 15-20) 4. Conduits/Synapses (priority: 20-30) --- ## Key Integration Points ### Where Augmentations Hook In **Brainy Constructor**: - Storage augmentations register based on config - Cache/Index augmentations auto-register if enabled **brain.init()**: - Two-phase initialization (storage first, then others) - Augmentations can access brain instance via context **Operations** (addNoun, search, etc.): - Augmentations execute based on timing and operations filter - Can modify params (before) or see results (after) **brain.shutdown()**: - All augmentations cleaned up in reverse order --- ## Performance Impact Most augmentations have minimal overhead: - **Cache**: ~1ms per search (saves 10-100ms on hits) - **Index**: ~1ms per operation (saves 100ms+ on queries) - **Metrics**: <1ms per operation - **Storage**: Varies by adapter (memory: 0ms, S3: 50-200ms) --- ## Best Practices 1. **Let auto-configuration work**: Most apps need zero manual config 2. **Storage first**: Always configure storage before other augmentations 3. **Use built-in augmentations**: They're optimized and battle-tested 4. **Custom augmentations**: Extend BaseAugmentation for consistency 5. **Respect timing**: Use 'before' to modify, 'after' to observe 6. **Mind priority**: Lower numbers execute first --- ## Troubleshooting ### Augmentation not working? ```typescript // Check if registered brain.listAugmentations() // Check if enabled brain.isAugmentationEnabled('cache') // Enable/disable at runtime brain.enableAugmentation('cache') brain.disableAugmentation('cache') ``` ### Performance issues? ```typescript // Check augmentation overhead const stats = brain.getStats() console.log(stats.augmentations) // Disable non-critical augmentations brain.disableAugmentation('monitoring') ``` --- --- *Augmentations make Brainy infinitely extensible while keeping the core API clean and simple!*