Multi-turn tool calls collided on replay: the reducer regenerated call_0, call_1, ... every turn while ignoring the API's real call ids, so replayed history had duplicate function_call/function_call_output ids that the API cannot pair (visible once a conversation has two tool-using turns). - ProviderEventReducer::tool_call_start_with_id(index, name, id) keeps the API's id; tool_call_start delegates with an auto-generated fallback - Responses API: use item.call_id; Chat Completions: use tool_calls[].id - regressions: real-log test asserts the captured ids, agent replay test asserts ids stay unique across three turns; reducer id-override test |
||
|---|---|---|
| crates | ||
| docs/architecture | ||
| examples | ||
| .gitignore | ||
| AGENTS.md | ||
| Cargo.lock | ||
| Cargo.toml | ||
| README.md | ||
| rust-toolchain.toml | ||