Database adapters provide persistent storage capabilities for SONA agents. They handle memory storage, relationship tracking, and knowledge management across different database backends.
Copy interface IDatabaseAdapter {
// Memory Management
createMemory(memory: Memory, tableName: string): Promise<void>;
getMemories(params: { roomId: UUID; count?: number }): Promise<Memory[]>;
searchMemories(params: SearchParams): Promise<Memory[]>;
removeMemory(memoryId: UUID): Promise<void>;
// Account & Room Management
createAccount(account: Account): Promise<boolean>;
getAccountById(userId: UUID): Promise<Account>;
createRoom(roomId?: UUID): Promise<UUID>;
getRoom(roomId: UUID): Promise<UUID>;
// Participant Management
addParticipant(userId: UUID, roomId: UUID): Promise<boolean>;
getParticipantsForRoom(roomId: UUID): Promise<UUID[]>;
// Knowledge Management
createKnowledge(knowledge: RAGKnowledgeItem): Promise<void>;
searchKnowledge(params: SearchParams): Promise<RAGKnowledgeItem[]>;
// Goal Management
createGoal(goal: Goal): Promise<void>;
updateGoalStatus(params: { goalId: UUID; status: GoalStatus }): Promise<void>;
}
Copy // MongoDB
import { MongoDBAdapter } from '@sona/adapter-mongodb';
const mongoAdapter = new MongoDBAdapter({
uri: process.env.MONGODB_URI,
dbName: process.env.MONGODB_DB_NAME
});
// PostgreSQL
import { PostgresAdapter } from '@sona/adapter-postgres';
const pgAdapter = new PostgresAdapter({
connectionString: process.env.POSTGRES_URI
});
// SQLite
import { SqliteDatabaseAdapter } from '@sona/adapter-sqlite';
const sqliteAdapter = new SqliteDatabaseAdapter('path/to/database.db');
// Supabase
import { SupabaseAdapter } from '@sona/adapter-supabase';
const supabaseAdapter = new SupabaseAdapter({
url: process.env.SUPABASE_URL,
apiKey: process.env.SUPABASE_API_KEY
});