fn normalize_agents(
agents: impl IntoIterator<Item = (String, Option<&'static str>)>,
) -> (Vec<String>, BTreeMap<String, &'static str>)Expand description
Sort case-insensitively and drop names that differ only by case (registration keys are lower-cased, so those are one agent). Ties break on the exact string so the result does not depend on input order. Each surviving name keeps its own kind.