What Happened
- The PR fixes a backend regression where `normalize_input` rebuilt every inbound dict as a plain `HumanMessage` and dropped `additional_kwargs`, `id`, and `name`, which caused uploaded files to vanish from the active turn and appear as `(empty)` to the model. It now delegates conversion to `convert_to_messages`, preserving message roles and metadata (including `additional_kwargs.files`) at the gateway boundary so uploads and message identity survive into runtime processing.
- The PR fixes a backend regression where `normalize_input` rebuilt every inbound dict as a plain `HumanMessage` and dropped `additional_kwargs`, `id`, and `name`, which caused uploaded files to vanish from the active turn and appear as `(empty)` to the model. It now delegates conversion to `convert_to_messages`, preserving message roles and metadata (including `additional_kwargs.files`) at the gateway boundary so uploads and message identity survive into runtime processing.
- 1 evidence item attached for review.