From be897071e62c7df33478af721279c955a00a8b58 Mon Sep 17 00:00:00 2001 From: pragnyanramtha Date: Sun, 17 May 2026 03:56:09 +0000 Subject: [PATCH] fix(sessions): ignore in-memory partial events --- .../src/sessions/in_memory_session_service.ts | 4 +++ .../in_memory_session_service_test.ts | 25 +++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/core/src/sessions/in_memory_session_service.ts b/core/src/sessions/in_memory_session_service.ts index d505b64f..ad4d9529 100644 --- a/core/src/sessions/in_memory_session_service.ts +++ b/core/src/sessions/in_memory_session_service.ts @@ -174,6 +174,10 @@ export class InMemorySessionService extends BaseSessionService { session, event, }: AppendEventRequest): Promise { + if (event.partial) { + return event; + } + await super.appendEvent({session, event}); session.lastUpdateTime = event.timestamp; diff --git a/core/test/sessions/in_memory_session_service_test.ts b/core/test/sessions/in_memory_session_service_test.ts index eeed7f4b..e766e1d8 100644 --- a/core/test/sessions/in_memory_session_service_test.ts +++ b/core/test/sessions/in_memory_session_service_test.ts @@ -264,6 +264,31 @@ describe('InMemorySessionService', () => { expect(retrievedSession?.lastUpdateTime).toBe(timestamp); }); + it('ignores partial events without updating the session', async () => { + const session = await service.createSession({ + appName: 'app', + userId: 'user', + }); + const initialUpdateTime = session.lastUpdateTime; + const partialEvent = createEvent({ + partial: true, + timestamp: initialUpdateTime + 1000, + }); + + await service.appendEvent({session, event: partialEvent}); + + expect(session.events).toEqual([]); + expect(session.lastUpdateTime).toBe(initialUpdateTime); + + const retrievedSession = await service.getSession({ + appName: 'app', + userId: 'user', + sessionId: session.id, + }); + expect(retrievedSession?.events).toEqual([]); + expect(retrievedSession?.lastUpdateTime).toBe(initialUpdateTime); + }); + it('updates app state', async () => { const appName = 'app'; const userId = 'user';