Skip to content

Commit ba0f4b7

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 <noreply@anthropic.com>
1 parent 30bb3e9 commit ba0f4b7

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
@@ -1127,6 +1127,11 @@ async def _start_streaming(
11271127
else:
11281128
server_conversation_tracker = None
11291129

1130+
# Prime the server conversation tracker from state if resuming
1131+
if server_conversation_tracker is not None and run_state is not None:
1132+
for response in run_state._model_responses:
1133+
server_conversation_tracker.track_server_items(response)
1134+
11301135
streamed_result._event_queue.put_nowait(AgentUpdatedStreamEvent(new_agent=current_agent))
11311136

11321137
try:

0 commit comments

Comments
 (0)