import { mkdtemp, rm } from 'node:fs/promises'; import { join } from 'node:path'; import { tmpdir } from 'node:os'; import { describe, expect, it } from 'vitest'; import { createSqliteIdentityMemoryStore, InMemoryMemoryStore } from '../src'; async function seedFacts(memory: InMemoryMemoryStore, spaceId: string) { await memory.addFact(spaceId, { statement: 'Mina likes quiet cafes.', topics: ['persona', 'Mina'], source: 'test', }); await memory.addFact(spaceId, { statement: 'The user prefers short replies.', topics: ['user'], source: 'test', }); } describe('BoxBrain memory stores', () => { it('lists every fact in an in-memory persona space without requiring topic guesses', async () => { const memory = new InMemoryMemoryStore(); const space = await memory.createSpace({ displayName: 'Mina', seedMessage: 'seed', now: '2026-05-14T00:00:00.000Z' }); await seedFacts(memory, space.id); const facts = await memory.listFacts(space.id); expect(facts.map((fact) => fact.statement)).toEqual([ 'Mina likes quiet cafes.', 'The user prefers short replies.', ]); }); it('lists every fact in a SQLite IdentityDB-backed persona space', async () => { const dir = await mkdtemp(join(tmpdir(), 'boxbrain-memory-')); try { const memory = await createSqliteIdentityMemoryStore(join(dir, 'boxbrain.sqlite')); const space = await memory.createSpace({ displayName: 'Mina', seedMessage: 'seed', now: '2026-05-14T00:00:00.000Z' }); await memory.addFact(space.id, { statement: 'Mina likes quiet cafes.', topics: ['persona', 'Mina'], source: 'test', }); await memory.addFact(space.id, { statement: 'The user prefers short replies.', topics: ['user'], source: 'test', }); const facts = await memory.listFacts(space.id); expect(facts.map((fact) => fact.statement)).toEqual([ 'Mina likes quiet cafes.', 'The user prefers short replies.', ]); } finally { await rm(dir, { recursive: true, force: true }); } }); });