import { Global, Module } from '@nestjs/common'; import { createMemory, type Memory, createMemoryAdapter, type MemoryAdapter } from '@mosaic/memory'; import type { Db } from '@mosaic/db'; import { DB } from '../database/database.module.js'; import { MEMORY } from './memory.tokens.js'; import { MemoryController } from './memory.controller.js'; import { EmbeddingService } from './embedding.service.js'; export const MEMORY_ADAPTER = 'MEMORY_ADAPTER'; @Global() @Module({ providers: [ { provide: MEMORY, useFactory: (db: Db): Memory => createMemory(db), inject: [DB], }, { provide: MEMORY_ADAPTER, useFactory: (): MemoryAdapter => createMemoryAdapter({ type: 'pgvector' }), }, EmbeddingService, ], controllers: [MemoryController], exports: [MEMORY, MEMORY_ADAPTER, EmbeddingService], }) export class MemoryModule {}