Skip to content

Commit d7c81b5

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 28f4ff6 commit d7c81b5

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
@@ -1086,6 +1086,11 @@ async def _start_streaming(
10861086
else:
10871087
server_conversation_tracker = None
10881088

1089+
# Prime the server conversation tracker from state if resuming
1090+
if server_conversation_tracker is not None and run_state is not None:
1091+
for response in run_state._model_responses:
1092+
server_conversation_tracker.track_server_items(response)
1093+
10891094
streamed_result._event_queue.put_nowait(AgentUpdatedStreamEvent(new_agent=current_agent))
10901095

10911096
try:

0 commit comments

Comments
 (0)