fix: harden resume and SSE replay

This commit is contained in:
User
2026-07-15 00:06:00 +02:00
parent e5366d14a6
commit 2b4797f133
18 changed files with 871 additions and 102 deletions
+23
View File
@@ -8,6 +8,29 @@ test("ui_request sets pendingWidget", () => {
expect(useSessionStore.getState().pendingWidget?.id).toBe("u1");
});
test("the same gate descriptor id is handled once even after pending is cleared", () => {
const store = useSessionStore.getState();
const gate = {
type: "ui_request" as const,
ui_request: { id: "gate-1", widget: "select", title: "Review tables" },
};
store.applyEvent(gate);
store.applyEvent({
type: "ui_request",
ui_request: { ...gate.ui_request, title: "Duplicate transport copy" },
});
store.clearPending();
store.applyEvent(gate);
const state = useSessionStore.getState();
expect(state.pendingWidget).toBeNull();
expect(state.activityLog.filter((entry) => entry.kind === "gate")).toEqual([
{ kind: "gate", phase: null, text: "Review tables" },
]);
expect(state.seenGateIds).toEqual(new Set(["gate-1"]));
});
test("text_delta accumulates into transcript", () => {
const s = useSessionStore.getState();
s.applyEvent({ type: "text_delta", text: "Ana" });