๐Ÿ”—Adapters

Database adapters provide persistent storage capabilities for SONA agents. They handle memory storage, relationship tracking, and knowledge management across different database backends.

Implementation Notes:

Each adapter optimizes these methods for their specific database backend:

  • MongoDB: Uses aggregation pipelines for vector operations

  • PostgreSQL: Leverages pgvector extension

  • SQLite: Implements BLOB storage for vectors

  • Qdrant: Optimizes with HNSW indexing

  • Supabase: Adds real-time capabilities

All adapters provide

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>;
}

Adapter Implementaion:

Last updated