diff --git a/src/functions/evict.ts b/src/functions/evict.ts index 626f4ff1d..dc4258c4e 100644 --- a/src/functions/evict.ts +++ b/src/functions/evict.ts @@ -10,6 +10,7 @@ import { KV } from "../state/schema.js"; import { StateKV } from "../state/kv.js"; import { recordAudit } from "./audit.js"; import { deleteAccessLog } from "./access-tracker.js"; +import { getSearchIndex, vectorIndexRemove, flushIndexSave } from "./search.js"; import { logger } from "../logger.js"; interface EvictionConfig { @@ -212,6 +213,8 @@ export function registerEvictFunction(sdk: ISdk, kv: StateKV): void { }); continue; } + getSearchIndex().remove(o.id); + vectorIndexRemove(o.id); if (o.imageData) await decrementImageRef(kv, sdk, o.imageData); if (o.imageRef && o.imageRef !== o.imageData) await decrementImageRef(kv, sdk, o.imageRef); await recordAudit(kv, "delete", "mem::evict", [o.id], { @@ -255,6 +258,8 @@ export function registerEvictFunction(sdk: ISdk, kv: StateKV): void { }); continue; } + getSearchIndex().remove(o.id); + vectorIndexRemove(o.id); if (o.imageData) await decrementImageRef(kv, sdk, o.imageData); if (o.imageRef && o.imageRef !== o.imageData) await decrementImageRef(kv, sdk, o.imageRef); await recordAudit(kv, "delete", "mem::evict", [o.id], { @@ -291,6 +296,8 @@ export function registerEvictFunction(sdk: ISdk, kv: StateKV): void { }); continue; } + getSearchIndex().remove(mem.id); + vectorIndexRemove(mem.id); if (mem.imageRef) { await decrementImageRef(kv, sdk, mem.imageRef); } @@ -326,6 +333,8 @@ export function registerEvictFunction(sdk: ISdk, kv: StateKV): void { }); continue; } + getSearchIndex().remove(mem.id); + vectorIndexRemove(mem.id); if (mem.imageRef) { await decrementImageRef(kv, sdk, mem.imageRef); } @@ -340,6 +349,10 @@ export function registerEvictFunction(sdk: ISdk, kv: StateKV): void { } } + if (!dryRun) { + await flushIndexSave(); + } + logger.info("Eviction complete", { stats }); return stats; },