focus/crates/focus-providers/src
DaiChaoXiong 1d1f50d1b1 fix(providers): keep the API's real tool-call ids across turns
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
2026-08-09 22:07:18 +08:00
..
anthropic.rs fix(providers): capture reasoning from multiple field names and echo both 2026-08-09 21:54:07 +08:00
common.rs fix(providers): capture reasoning from multiple field names and echo both 2026-08-09 21:54:07 +08:00
config.rs refactor(test): move all unit tests from src/ into tests/<module>_tests.rs 2026-08-09 21:09:01 +08:00
lib.rs feat(providers): rewrite Anthropic and OpenAI providers 2026-08-09 20:59:49 +08:00
openai.rs fix(providers): keep the API's real tool-call ids across turns 2026-08-09 22:07:18 +08:00