Two edge cases could inject messages that violate role alternation: 1. Invalid JSON recovery (line ~5985): After 3 retries of invalid JSON tool args, a user-role recovery message was injected. But the assistant's tool_calls were never appended, so the sequence could become user → user. Fix: append the assistant message with its tool_calls, then respond with proper tool-role error results. 2. System error handler (line ~6238): Always injected a user-role error message, which creates consecutive user messages if the last message was already user. Fix: dynamically choose the role based on the last message to maintain alternation.
320 KiB
320 KiB