81 lines
2.2 KiB
JavaScript
81 lines
2.2 KiB
JavaScript
#!/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;
|
|
});
|
|
}
|