SIGN IN SIGN UP

fix(models): treat Sonnet 4.6+ as 1M-context and allow Haiku 4.5+ structured outputs

Live `/v1/models/{id}` capability API (probed 2026-04-17) returns:
- Sonnet 4.6: max_input_tokens=1000000, structured_outputs.supported=true
- Haiku 4.5:  max_input_tokens=200000,  structured_outputs.supported=true

hasOneMillionContext() previously returned false for Sonnet 4.6, suppressing
context-1m-2025-08-07 beta emission (src/betas.ts:188) and skipping 1M
context-limit injection (src/index.ts:273). Now matches isOpus46Model +
isSonnet46Model + explicit 1m suffix.

supportsStructuredOutputs() excluded every Haiku variant. Haiku 4.5 supports
structured outputs; only Claude 3 Haiku variants do not. The regex now
specifically targets claude-3*-haiku and haiku-3 patterns.

Adds tests/unit/models.test.ts (21 tests) as characterization coverage
for all 8 predicates in src/models.ts. Full regression: 1304/1304 pass.
V
Vacbo committed
cc0616e9433ac85aff5e175ec8da24b0a2caedc4
Parent: 8d4973c