import assert from 'node:assert/strict'; import test from 'node:test'; import { once } from 'node:events'; import { createMockMemoryV2Service } from './mock-memory-v2-services.mjs'; test('mock memory v2 service stores mem0, letta, and langgraph requests', async () => { const service = createMockMemoryV2Service(); const server = service.createServer(); server.listen(0, '127.0.0.1'); await once(server, 'listening'); const { port } = server.address(); const baseUrl = `http://127.0.0.1:${port}`; await fetch(`${baseUrl}/mem0/v1/memories`, { method: 'POST', headers: { 'content-type': 'application/json' }, body: JSON.stringify({ user_id: 'u1', messages: [{ text: 'hello mem0' }] }), }); await fetch(`${baseUrl}/letta/v1/agents/agent_1/messages`, { method: 'POST', headers: { 'content-type': 'application/json' }, body: JSON.stringify({ user_id: 'u1', messages: [{ text: 'hello letta' }] }), }); const langgraphResponse = await fetch(`${baseUrl}/langgraph/memory/resolve`, { method: 'POST', headers: { 'content-type': 'application/json' }, body: JSON.stringify({ user_id: 'u1', query: 'route me' }), }); const langgraphPayload = await langgraphResponse.json(); const stateResponse = await fetch(`${baseUrl}/__admin/state`); const statePayload = await stateResponse.json(); assert.equal(statePayload.state.mem0.writes.length, 1); assert.equal(statePayload.state.letta.messages.length, 1); assert.equal(statePayload.state.langgraph.resolves.length, 1); assert.deepEqual(langgraphPayload.activeGoals, ['route-memory']); await new Promise((resolve, reject) => server.close((err) => (err ? reject(err) : resolve()))); });