574da43d65
`SessionContext._start` builds `ClientSession`'s `read_timeout_seconds` twice, once for stdio and once for SSE and streamable HTTP, each with its own inline `timedelta(...) if ... is not None else None`. Move that to `_read_timeout`. ADK carries every timeout as float seconds and now converts once, at the boundary where the SDK is called. This is a plain de-duplication today. It also isolates a difference between MCP SDK versions: 1.x types `read_timeout_seconds` as a `timedelta` and 2.x types it as a float, so the conversion is the only line that has to change. The explicit `is None` check is deliberate. A zero timeout is a real value, not a missing one, and a truthiness check would silently turn it into "no timeout". Co-authored-by: Kathy Wu <wukathy@google.com> PiperOrigin-RevId: 968580764