Merge Memory V2 runtime facade
This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
#!/usr/bin/env node
|
||||
import { createLegacyMemoryBackend } from '../memory-v2.mjs';
|
||||
import { createMemoryV2PluginBackends } from '../memory-v2-plugin-backends.mjs';
|
||||
import { createPgvectorMemoryBackend } from '../memory-v2-pgvector.mjs';
|
||||
import { validateMemoryV2BackendSet } from '../memory-v2-backend-contract.mjs';
|
||||
|
||||
function usage() {
|
||||
return `Usage:
|
||||
node scripts/check-memory-v2-contracts.mjs [options]
|
||||
|
||||
Options:
|
||||
--include-pgvector-adapter Include the real disabled pgvector adapter instead of its placeholder.
|
||||
-h, --help Show this help.
|
||||
`;
|
||||
}
|
||||
|
||||
export function parseMemoryV2ContractArgs(argv = []) {
|
||||
const options = {
|
||||
includePgvectorAdapter: false,
|
||||
help: false,
|
||||
};
|
||||
for (const arg of argv) {
|
||||
if (arg === '--include-pgvector-adapter') {
|
||||
options.includePgvectorAdapter = true;
|
||||
} else if (arg === '-h' || arg === '--help') {
|
||||
options.help = true;
|
||||
} else {
|
||||
throw new Error(`Unknown argument: ${arg}`);
|
||||
}
|
||||
}
|
||||
return options;
|
||||
}
|
||||
|
||||
function createSyntheticLegacyMemoryService() {
|
||||
return {
|
||||
async listMemories() {
|
||||
return [];
|
||||
},
|
||||
async saveAndAnalyze() {
|
||||
return { saved: 0, analyzed: 0, memories: 0 };
|
||||
},
|
||||
async analyzeUser() {
|
||||
return { analyzed: 0, memories: 0 };
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
export async function runMemoryV2ContractCli({
|
||||
argv = process.argv.slice(2),
|
||||
stdout = process.stdout,
|
||||
} = {}) {
|
||||
const options = parseMemoryV2ContractArgs(argv);
|
||||
if (options.help) {
|
||||
stdout.write(usage());
|
||||
return 0;
|
||||
}
|
||||
|
||||
const backends = [
|
||||
createLegacyMemoryBackend(createSyntheticLegacyMemoryService()),
|
||||
];
|
||||
if (options.includePgvectorAdapter) {
|
||||
backends.push(createPgvectorMemoryBackend({ enabled: false }));
|
||||
}
|
||||
backends.push(...createMemoryV2PluginBackends({
|
||||
exclude: options.includePgvectorAdapter ? ['pgvector'] : [],
|
||||
}));
|
||||
|
||||
const report = validateMemoryV2BackendSet(backends);
|
||||
stdout.write(`${JSON.stringify(report, null, 2)}\n`);
|
||||
return report.ok ? 0 : 1;
|
||||
}
|
||||
|
||||
if (import.meta.url === `file://${process.argv[1]}`) {
|
||||
runMemoryV2ContractCli().then((code) => {
|
||||
process.exitCode = code;
|
||||
}).catch((err) => {
|
||||
console.error(err instanceof Error ? err.message : err);
|
||||
process.exitCode = 1;
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user