Merge Memory V2 runtime facade
This commit is contained in:
@@ -0,0 +1,97 @@
|
||||
import assert from 'node:assert/strict';
|
||||
import fs from 'node:fs/promises';
|
||||
import os from 'node:os';
|
||||
import path from 'node:path';
|
||||
import test from 'node:test';
|
||||
import {
|
||||
parseMemoryV2ScaffoldArgs,
|
||||
runMemoryV2ScaffoldCli,
|
||||
} from './scaffold-memory-v2-backend.mjs';
|
||||
|
||||
function writableBuffer() {
|
||||
let value = '';
|
||||
return {
|
||||
write(chunk) {
|
||||
value += String(chunk);
|
||||
},
|
||||
value() {
|
||||
return value;
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
test('parseMemoryV2ScaffoldArgs parses scaffold options', () => {
|
||||
assert.deepEqual(
|
||||
parseMemoryV2ScaffoldArgs([
|
||||
'--name',
|
||||
'qdrant',
|
||||
'--category',
|
||||
'semantic',
|
||||
'--role',
|
||||
'scale-out',
|
||||
'--capability',
|
||||
'resolve',
|
||||
'--flag',
|
||||
'MEMORY_QDRANT_ENABLED',
|
||||
'--out',
|
||||
'memory-v2-qdrant.mjs',
|
||||
'--write',
|
||||
]),
|
||||
{
|
||||
name: 'qdrant',
|
||||
category: 'semantic',
|
||||
role: 'scale-out',
|
||||
capabilities: ['resolve'],
|
||||
flag: 'MEMORY_QDRANT_ENABLED',
|
||||
out: 'memory-v2-qdrant.mjs',
|
||||
write: true,
|
||||
help: false,
|
||||
},
|
||||
);
|
||||
});
|
||||
|
||||
test('runMemoryV2ScaffoldCli dry-run prints adapter source', async () => {
|
||||
const stdout = writableBuffer();
|
||||
const result = await runMemoryV2ScaffoldCli({
|
||||
argv: [
|
||||
'--name',
|
||||
'qdrant',
|
||||
'--category',
|
||||
'semantic',
|
||||
'--capability',
|
||||
'resolve',
|
||||
],
|
||||
stdout,
|
||||
});
|
||||
|
||||
assert.equal(result.mode, 'dry-run');
|
||||
assert.match(stdout.value(), /export function createQdrantMemoryBackend/);
|
||||
assert.match(stdout.value(), /name: 'qdrant'/);
|
||||
});
|
||||
|
||||
test('runMemoryV2ScaffoldCli writes new adapter and refuses overwrite', async () => {
|
||||
const tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), 'memory-v2-scaffold-'));
|
||||
const stdout = writableBuffer();
|
||||
const argv = [
|
||||
'--name',
|
||||
'mem0',
|
||||
'--category',
|
||||
'extraction',
|
||||
'--capability',
|
||||
'write',
|
||||
'--capability',
|
||||
'compact',
|
||||
'--write',
|
||||
];
|
||||
|
||||
const result = await runMemoryV2ScaffoldCli({ argv, stdout, cwd: tmpDir });
|
||||
const written = await fs.readFile(path.join(tmpDir, 'memory-v2-mem0.mjs'), 'utf8');
|
||||
|
||||
assert.equal(result.mode, 'write');
|
||||
assert.match(stdout.value(), /Memory V2 backend scaffold created/);
|
||||
assert.match(written, /export function createMem0MemoryBackend/);
|
||||
await assert.rejects(
|
||||
() => runMemoryV2ScaffoldCli({ argv, stdout: writableBuffer(), cwd: tmpDir }),
|
||||
/Refusing to overwrite/,
|
||||
);
|
||||
});
|
||||
Reference in New Issue
Block a user