# Migration Guide: Brainy 0.x โ†’ 1.0 This guide will help you upgrade from Brainy 0.x to 1.0.0-rc.1. While there are breaking changes, most functionality has been simplified and improved. ## ๐ŸŽฏ **Quick Migration Checklist** - [ ] Update package: `npm install @soulcraft/brainy@rc` - [ ] Update CLI commands (see mapping below) - [ ] Replace `addSmart()` with `add()` - [ ] Update any pipeline imports - [ ] Test functionality with new API - [ ] Enable new features (encryption, soft delete) ## ๐Ÿ“ฆ **Package Installation** ```bash # Install the release candidate npm install @soulcraft/brainy@rc # Or with yarn yarn add @soulcraft/brainy@rc ``` ## ๐Ÿ”„ **API Method Changes** ### Core Data Operations | **0.x Method** | **1.0 Method** | **Notes** | |----------------|----------------|-----------| | `addSmart(data, metadata)` | `add(data, metadata)` | Smart by default now | | `add(data, metadata)` | `add(data, metadata, { process: 'literal' })` | Use literal option for old behavior | | `searchSimilar(query, k)` | `search(query, k)` | Same functionality, cleaner name | | `searchByMetadata(filter)` | `search('', k, { metadata: filter })` | Unified search interface | | `searchConnected(id, k)` | `search('', k, { searchConnectedNouns: true })` | Part of unified search | ### NEW Methods in 1.0 ```javascript // New methods available await brainy.import([data1, data2, data3]) // Bulk import await brainy.addNoun(data, NounType.Person) // Explicit typing await brainy.update(id, newData, newMetadata) // Smart updates await brainy.delete(id) // Soft delete by default await brainy.delete(id, { soft: false }) // Hard delete if needed ``` ## ๐Ÿ–ฅ๏ธ **CLI Command Changes** ### Command Mapping | **0.x Command** | **1.0 Command** | **Notes** | |-----------------|-----------------|-----------| | `brainy add-smart "data"` | `brainy add "data"` | Smart by default | | `brainy add-literal "data"` | `brainy add "data" --literal` | Use literal flag | | `brainy search-similar "query"` | `brainy search "query"` | Cleaner naming | | `brainy search-metadata '{"type":"person"}'` | `brainy search "" --filter '{"type":"person"}'` | Unified search | | `brainy list-stats` | `brainy status` | Enhanced status command | | Multiple config commands | `brainy config ` | Unified config management | ### NEW CLI Commands ```bash brainy init --encryption # Initialize with encryption brainy update --data "new" # Update existing data brainy delete # Soft delete (default) brainy delete --hard # Hard delete brainy import data.json # Bulk import ``` ### Removed CLI Commands These commands have been consolidated: - `brainy add-smart` โ†’ `brainy add` - `brainy add-literal` โ†’ `brainy add --literal` - `brainy search-similar` โ†’ `brainy search` - `brainy search-metadata` โ†’ `brainy search --filter` - Various config commands โ†’ `brainy config` ## ๐Ÿ—๏ธ **Architecture Changes** ### Pipeline/Cortex Changes ```javascript // OLD - Multiple pipeline classes import { SequentialPipeline, ParallelPipeline, StreamlinedPipeline } from '@soulcraft/brainy' // NEW - One unified Cortex class import { Pipeline, Cortex } from '@soulcraft/brainy' // Both Pipeline and Cortex are the same class const pipeline = new Pipeline() // or new Cortex() ``` ### Import Path Changes Most imports remain the same, but some internal imports may have changed: ```javascript // These should still work import { BrainyData, NounType, VerbType } from '@soulcraft/brainy' // Check these if you were using internal APIs // (Most users won't need to change anything) ``` ## ๐Ÿ” **New Encryption Features** 1.0 introduces comprehensive encryption support: ```javascript // Initialize with encryption const brainy = new BrainyData() await brainy.init() // Encrypt configuration await brainy.setConfig('api-key', 'secret-key', { encrypt: true }) // Encrypt individual data items await brainy.add("sensitive data", {}, { encrypt: true }) // CLI encryption brainy init --encryption brainy add "sensitive data" --encrypt ``` ## ๐Ÿ“Š **Soft Delete by Default** The new `delete()` method uses soft delete by default: ```javascript // Soft delete (preserves indexes, better performance) await brainy.delete(id) // Default behavior // Hard delete (removes from indexes) await brainy.delete(id, { soft: false }) // Cascade delete (deletes related verbs) await brainy.delete(id, { cascade: true }) ``` Search automatically excludes soft-deleted items. ## ๐Ÿณ **Container Deployment** New container-optimized features: ```javascript // Preload models for containers await BrainyData.preloadModel({ model: 'Xenova/all-MiniLM-L6-v2', cacheDir: './models' }) // Container-optimized initialization const brainy = await BrainyData.warmup({ storage: { forceMemoryStorage: true } }, { preloadModel: true }) ``` ## ๐Ÿงช **Testing Your Migration** ### Basic Functionality Test ```javascript import { BrainyData } from '@soulcraft/brainy' async function testMigration() { const brainy = new BrainyData() await brainy.init() // Test core functionality const id = await brainy.add("Test migration data") const results = await brainy.search("migration", 5) await brainy.update(id, "Updated data") await brainy.delete(id) // Soft delete console.log("โœ… Migration successful!") } testMigration() ``` ### CLI Test ```bash # Test CLI functionality brainy add "Test data" brainy search "test" brainy status brainy --help ``` ## โš ๏ธ **Breaking Changes Summary** ### Definite Breaking Changes 1. **CLI commands renamed** - Most commands have new names 2. **`addSmart()` method removed** - Use `add()` instead 3. **Pipeline classes consolidated** - Multiple classes โ†’ one Cortex 4. **Some internal import paths** - Check if using internal APIs ### Likely Compatible 1. **Core API methods** - `add()`, `search()` largely the same 2. **Storage adapters** - All existing adapters work 3. **Configuration** - Existing configs should work 4. **Data format** - Your existing data is compatible ## ๐Ÿ†˜ **Getting Help** If you encounter issues during migration: 1. **Check the examples** in this guide 2. **Test with a small dataset** first 3. **File an issue** with the `migration` label 4. **Join discussions** for community help ### Common Migration Issues **Issue**: `addSmart is not a function` ```javascript // Fix: Use add() instead await brainy.add(data, metadata) // Smart by default ``` **Issue**: CLI command not found ```bash # Fix: Check command mapping above brainy search "query" # Not search-similar ``` **Issue**: Pipeline import error ```javascript // Fix: Use unified import import { Pipeline } from '@soulcraft/brainy' ``` ## ๐ŸŽ‰ **New Features to Explore** After migration, try these new features: ```javascript // Bulk import const ids = await brainy.import([data1, data2, data3]) // Explicit noun typing await brainy.addNoun(personData, NounType.Person) // Encrypted storage await brainy.add(sensitiveData, {}, { encrypt: true }) // Smart updates await brainy.update(id, newData, { cascade: true }) ``` ```bash # New CLI features brainy init --encryption --storage s3 brainy import large-dataset.json brainy delete old-id --cascade brainy chat "Tell me about my data" ``` ## ๐Ÿ“ž **Support** - **๐Ÿ“š Documentation**: Updated for 1.0 API - **๐Ÿ› Issues**: [GitHub Issues](https://github.com/soulcraftlabs/brainy/issues) - **๐Ÿ’ฌ Discussions**: [GitHub Discussions](https://github.com/soulcraftlabs/brainy/discussions) - **๐Ÿท๏ธ Tags**: Use `migration`, `1.0-rc.1`, `breaking-change` tags **We're here to help make your migration smooth!** ๐Ÿš€