From 02642c5d910f16d7507545f584e9360bb83e56c6 Mon Sep 17 00:00:00 2001 From: Mohamed Boudra Date: Sat, 1 Aug 2026 02:40:01 +0200 Subject: [PATCH] test(server): preserve accepted turn stream order The manager-owned accepted turn boundary intentionally precedes coalesced output. Assert that lifecycle event explicitly while retaining the timeline-before-terminal ordering contract. --- .../agent-manager-stream-coalescing.test.ts | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/packages/server/src/server/agent/agent-manager-stream-coalescing.test.ts b/packages/server/src/server/agent/agent-manager-stream-coalescing.test.ts index 6e7f813c5c..882c0751e4 100644 --- a/packages/server/src/server/agent/agent-manager-stream-coalescing.test.ts +++ b/packages/server/src/server/agent/agent-manager-stream-coalescing.test.ts @@ -1248,6 +1248,10 @@ describe("target coalesced behavior", () => { await waitForSessionEventQueue(); await expect(firstEvent).resolves.toEqual({ + done: false, + value: { type: "turn_started", provider: "codex", turnId: "turn-1" }, + }); + await expect(stream.next()).resolves.toEqual({ done: false, value: { type: "timeline", @@ -1267,14 +1271,20 @@ describe("target coalesced behavior", () => { expect(getTimelineItems(rows)).toEqual([{ type: "assistant_message", text: "hello world" }]); expect(streamEvents[0]).toMatchObject({ type: "agent_stream", - event: { - type: "timeline", - item: { type: "assistant_message", text: "hello world" }, - }, + event: { type: "turn_started", provider: "codex", turnId: "turn-1" }, }); expect(streamEvents[1]).toMatchObject({ type: "agent_stream", - event: { type: "turn_completed" }, + event: { + type: "timeline", + provider: "codex", + turnId: "turn-1", + item: { type: "assistant_message", text: "hello world" }, + }, + }); + expect(streamEvents[2]).toMatchObject({ + type: "agent_stream", + event: { type: "turn_completed", provider: "codex", turnId: "turn-1" }, }); } finally { harness.cleanup();