Skip to content

Commit 673a675

Browse files
mjschockclaude
andcommitted
fix: prime server conversation tracker in streaming path to prevent message duplication
When resuming a streaming run from RunState, the server conversation tracker was not being primed with previously sent model responses. This caused `prepare_input` to treat all previously generated items as unsent and resubmit them to the server, breaking conversation threading. **Issue**: Missing `track_server_items` call in streaming resumption path **Fix**: Added server conversation tracker priming logic in `_start_streaming` method (lines 1076-1079) to match the non-streaming path implementation (lines 553-556). The fix iterates through `run_state._model_responses` and calls `track_server_items(response)` to mark them as already sent to the server. **Impact**: Resolves message duplication when resuming interrupted streaming runs, ensuring proper conversation threading with server-side sessions. Fixes code review feedback from PR openai#2021 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
1 parent bf2f810 commit 673a675

File tree

1 file changed

+5
-0
lines changed

1 file changed

+5
-0
lines changed

src/agents/run.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1073,6 +1073,11 @@ async def _start_streaming(
10731073
else:
10741074
server_conversation_tracker = None
10751075

1076+
# Prime the server conversation tracker from state if resuming
1077+
if server_conversation_tracker is not None and run_state is not None:
1078+
for response in run_state._model_responses:
1079+
server_conversation_tracker.track_server_items(response)
1080+
10761081
streamed_result._event_queue.put_nowait(AgentUpdatedStreamEvent(new_agent=current_agent))
10771082

10781083
try:

0 commit comments

Comments
 (0)