2f24d4457e
The lazy provider wrapper ignored model.compat.streamIdleTimeoutMs, so Bedrock reasoning models sat on the generic 300s idle watchdog despite ConverseStream sending no ping keepalives; long quiet thinking runs died with "Provider stream stalled while waiting for the next event" during plan writing and todo execution (issue #4758's Bedrock variant, worst on Fable 5 where the display default flipped to omitted). - catalog: BedrockCompat gains streamIdleTimeoutMs; reasoning models get a 600s floor, adaptive-thinking Claude (Opus 4.7+, Sonnet/Opus 5, Fable/Mythos 5) 900s to match direct Anthropic's ping-extended tolerance; explicit compat overrides still win (0 disables). - ai: forwardStream resolves options -> env -> model.compat -> default, and lazy terminal errors carry the structural errorId classification so session auto-retry classifies stalls without text matching.