diff --git a/frontend/src/stream/useSessionStream.test.tsx b/frontend/src/stream/useSessionStream.test.tsx index a5da11f5..77c7f8b5 100644 --- a/frontend/src/stream/useSessionStream.test.tsx +++ b/frontend/src/stream/useSessionStream.test.tsx @@ -22,6 +22,17 @@ test("opens an EventSource and feeds NAMED events to the store", () => { expect(useSessionStore.getState().pendingWidget?.id).toBe("u1"); }); +test("feeds named activity_delta events to the model activity store", () => { + renderHook(() => useSessionStream("s1")); + const es = FakeEventSource.instances[0]; + + act(() => + es.emitNamed("activity_delta", { type: "activity_delta", text: "Analizzo le ambiguità" }) + ); + + expect(useSessionStore.getState().activity.at(-1)?.text).toBe("Analizzo le ambiguità"); +}); + test("also feeds UNNAMED (default message) events to the store", () => { renderHook(() => useSessionStream("s1")); const es = FakeEventSource.instances[0]; diff --git a/frontend/src/stream/useSessionStream.ts b/frontend/src/stream/useSessionStream.ts index 5289cdda..182b0edd 100644 --- a/frontend/src/stream/useSessionStream.ts +++ b/frontend/src/stream/useSessionStream.ts @@ -26,7 +26,13 @@ export function useSessionStream(sessionId: string | null) { // onmessage catches unnamed events; addEventListener catches named events // (the backend sends event: ui_request, event: text_delta, etc.) es.onmessage = handle; - const namedEvents = ["ui_request", "text_delta", "info", "system_event"] as const; + const namedEvents = [ + "ui_request", + "text_delta", + "activity_delta", + "info", + "system_event", + ] as const; for (const name of namedEvents) es.addEventListener(name, handle); return () => {