- Implement 7 core unified API methods (add, search, import, addNoun, addVerb, update, delete) - Add universal encryption system with encryptData/decryptData methods - Add container deployment support with model preloading - Implement soft delete by default for better performance - Add searchVerbs() and getNounWithVerbs() for graph traversal - Reduce package size by 16% despite major feature additions - Create comprehensive CHANGELOG.md and MIGRATION.md - Consolidate CLI from 40+ to 9 clean commands - All scaling optimizations preserved and enhanced BREAKING CHANGES: - addSmart() method removed (use add() - smart by default) - CLI commands consolidated and renamed - Pipeline classes unified into single Cortex class This is the complete 1.0 release candidate with all planned features implemented and tested.
275 lines
No EOL
7.6 KiB
Markdown
275 lines
No EOL
7.6 KiB
Markdown
# 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 <action>` | Unified config management |
|
|
|
|
### NEW CLI Commands
|
|
|
|
```bash
|
|
brainy init --encryption # Initialize with encryption
|
|
brainy update <id> --data "new" # Update existing data
|
|
brainy delete <id> # Soft delete (default)
|
|
brainy delete <id> --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!** 🚀 |