diff options
Diffstat (limited to 'src/features/conversation-cache')
| -rw-r--r-- | src/features/conversation-cache/cache.test.ts | 24 | ||||
| -rw-r--r-- | src/features/conversation-cache/cache.ts | 7 |
2 files changed, 31 insertions, 0 deletions
diff --git a/src/features/conversation-cache/cache.test.ts b/src/features/conversation-cache/cache.test.ts index c68ed0d..89e81b8 100644 --- a/src/features/conversation-cache/cache.test.ts +++ b/src/features/conversation-cache/cache.test.ts @@ -171,3 +171,27 @@ describe("cache.evictIfOverBudget", () => { expect(evicted).toEqual([]); }); }); + +describe("cache.delete", () => { + it("removes the conversation from the store", async () => { + const store = createFakeStore(); + const cache = createConversationCache(store); + + await store.append("conv-1", [chunk(1), chunk(2)]); + await cache.delete("conv-1"); + + const stored = await store.load("conv-1"); + expect(stored).toEqual([]); + }); + + it("then load returns []", async () => { + const store = createFakeStore(); + const cache = createConversationCache(store); + + await cache.commit("conv-1", [chunk(1), chunk(2), chunk(3)]); + await cache.delete("conv-1"); + + const result = await cache.load("conv-1"); + expect(result).toEqual([]); + }); +}); diff --git a/src/features/conversation-cache/cache.ts b/src/features/conversation-cache/cache.ts index 4aab487..3d5743a 100644 --- a/src/features/conversation-cache/cache.ts +++ b/src/features/conversation-cache/cache.ts @@ -20,6 +20,9 @@ export interface ConversationCache { * Returns the evicted conversationIds. */ evictIfOverBudget(activeConversationId: string | null): Promise<readonly string[]>; + + /** Delete all cached data for a single conversation (local forget). */ + delete(conversationId: string): Promise<void>; } export interface ConversationCacheOptions { @@ -67,5 +70,9 @@ export function createConversationCache( } return toEvict; }, + + async delete(conversationId) { + await store.delete(conversationId); + }, }; } |
