Fixed in latest commit (c27317fd). The original logic checked if the model expects an 'output' field and kept the wrapper, but this failed if the SDK wraps everything (including models with 'output' fields).
New approach tries validation both ways: unwrap first, and only keep wrapped if unwrapping breaks validation. This robustly handles all edge cases including the one you flagged where class SimpleOutput(BaseModel): output: str receives {"output": {"output": "value"}}.
The try/catch ensures we always pick the correct interpretation regardless of SDK wrapping behavior.