53cfca9766
Building the summary through `_build_api_kwargs` means it now carries `tools`, but it still skipped the `_sanitize_structure_surrogates` / `_force_ascii_payload` chokepoint the main loop applies after building (turn_api_request). On cache-planned routes the main loop scrubs a deep copy of the tools, so `agent.tools` can still hold a lone surrogate that providers reject with a non-retryable 400 (#50959 class) — a request the tool-less summary never used to make. Apply the same two passes here.