SIGN IN SIGN UP

fix(live): keep query parameters out of WebSocket endpoint paths (#3972)

Stacked on #3971, which fixes base URL normalization. Once that is
merged, this PR can be retargeted to main.

Live WebSocket primary, fork and sideband managers appended their
endpoint after the base URL query. For example,
/v1/customer?tenant=sample dialed /v1/customer instead of the Live
endpoint. Append the path before the query in all six sync/async
managers.

Tests cover the actual WebSocket upgrade, preserved query parameters and
escaped session IDs, caller-initiated primary and fork starts, immediate
sideband events without waiting for session.started, follow-up updates
and clean close.

Validation: all six query cases failed and six plain cases passed before
the fix. After it, all 363 affected tests and 12 base URL tests passed
on both Pydantic v1 and v2. Full Ruff, mypy and Pyright passed. No
hosted-service or stored-fork-eligibility claims.
M
Mark Stuart committed
f9c458b759e3756979fceebf50bffa78d9cf0b97
Parent: bb68198
Committed by GitHub <noreply@github.com> on 9/27/2026, 7:14:37 PM