test: share memory session search setup

This commit is contained in:
Peter Steinberger
2026-04-20 21:14:46 +01:00
parent d8b3de39b0
commit 512dc4f2b1

View File

@@ -284,6 +284,26 @@ describe("memory index", () => {
} }
} }
async function getFtsSessionManager(params: {
stateDirName: string;
storeFileName: string;
}): Promise<MemoryIndexManager | null> {
forceNoProvider = true;
vi.stubEnv("OPENCLAW_STATE_DIR", path.join(workspaceDir, params.stateDirName));
const cfg = createCfg({
storePath: path.join(workspaceDir, params.storeFileName),
sources: ["memory", "sessions"],
sessionMemory: true,
minScore: 0,
hybrid: { enabled: true, vectorWeight: 0.7, textWeight: 0.3 },
});
const result = await getMemorySearchManager({ cfg, agentId: "main" });
const manager = requireManager(result);
managersForCleanup.add(manager);
resetManagerForTest(manager);
return manager.status().fts?.available ? manager : null;
}
it.skip("indexes memory files and searches", async () => { it.skip("indexes memory files and searches", async () => {
const cfg = createCfg({ const cfg = createCfg({
storePath: indexMainPath, storePath: indexMainPath,
@@ -399,22 +419,12 @@ describe("memory index", () => {
}); });
it("prefers exact session transcript hits in FTS-only mode", async () => { it("prefers exact session transcript hits in FTS-only mode", async () => {
forceNoProvider = true;
const stateDir = path.join(workspaceDir, ".state-session-ranking");
vi.stubEnv("OPENCLAW_STATE_DIR", stateDir);
try { try {
const cfg = createCfg({ const manager = await getFtsSessionManager({
storePath: path.join(workspaceDir, "index-fts-session-ranking.sqlite"), stateDirName: ".state-session-ranking",
sources: ["memory", "sessions"], storeFileName: "index-fts-session-ranking.sqlite",
sessionMemory: true,
minScore: 0,
hybrid: { enabled: true, vectorWeight: 0.7, textWeight: 0.3 },
}); });
const result = await getMemorySearchManager({ cfg, agentId: "main" }); if (!manager) {
const manager = requireManager(result);
managersForCleanup.add(manager);
resetManagerForTest(manager);
if (!manager.status().fts?.available) {
return; return;
} }
@@ -469,22 +479,12 @@ describe("memory index", () => {
}); });
it("bootstraps an empty index on first search so session transcript hits are available", async () => { it("bootstraps an empty index on first search so session transcript hits are available", async () => {
forceNoProvider = true;
const stateDir = path.join(workspaceDir, ".state-session-bootstrap");
vi.stubEnv("OPENCLAW_STATE_DIR", stateDir);
try { try {
const cfg = createCfg({ const manager = await getFtsSessionManager({
storePath: path.join(workspaceDir, "index-fts-session-bootstrap.sqlite"), stateDirName: ".state-session-bootstrap",
sources: ["memory", "sessions"], storeFileName: "index-fts-session-bootstrap.sqlite",
sessionMemory: true,
minScore: 0,
hybrid: { enabled: true, vectorWeight: 0.7, textWeight: 0.3 },
}); });
const result = await getMemorySearchManager({ cfg, agentId: "main" }); if (!manager) {
const manager = requireManager(result);
managersForCleanup.add(manager);
resetManagerForTest(manager);
if (!manager.status().fts?.available) {
return; return;
} }