sloproxy

fix(codex): deduplicate Responses tools when converting to OpenAI Chat Completions master

- Merge `tools` and `additional_tools` through a single canonical traversal and emit each Chat Completions tool name once (first declaration wins). - Rework custom-tool and single-tool classification to use merged declaration identity, preventing collisions from duplicate definitions. - Make reverse qualified-name resolution consistent with the same merge order so split calls map to the tool that actually survived conversion. Closes: #4788