A property schema with no "type" got "type": "object" injected, first by
SchemaToMap for every provider and again by the OpenAI strict-mode
normalizer. For an enum or const node that makes the schema reject every
allowed value: pydantic emits {"enum": ["auto", 0, 1]} for
Literal["auto", 0, 1], and after conversion no value of "mode" validates,
while the tool is still sent with strict: true.
Derive the type from the enum/const values instead; other typeless nodes
still default to "object". When the OpenAI normalizer makes an optional
enum/const property required, wrap it in anyOf with null, since a "null"
type next to enum/const still rejects null. Required properties keep
"null" in their type when the enum/const lists it.
Signed-off-by: jaeminbird <jaeminbird@gmail.com>