`umans-glm-5.1` / `umans-glm-5.2` advertise themselves on the Umans
`models/info` endpoint with `supports_vision: "via-handoff"`. That
sentinel means image inputs are routed through a separate vision
handoff pre-analysis step; the GLM endpoint itself rejects raw image
blocks with `400 This model does not support image inputs`.
`umansSupportsVision` was returning `true` for any non-empty string,
so dynamic discovery mapped the GLM models to `input: ["text",
"image"]` and the agent sent images straight to GLM. The bundled
`umans-glm-5.1` / `umans-glm-5.2` rows in `models.json` carried the
same stale `["text","image"]` from a previous regen.
- Tighten `umansSupportsVision` to `value === true`; document the
sentinel contract.
- Correct the two bundled rows to `input: ["text"]` so the vision
handoff path runs.
- Add resolver- and bundle-level regression tests that cover
`supports_vision: "via-handoff"` alongside the native-vision
`umans-coder` case.
Fixes#3184