Extends the AdminBridge GameScript JSON channel (the same relay used by
list_vehicles/get_timetable) with station support:
- list_stations(): enumerate stations, fire-and-forget like list_vehicles().
- get_station(): authoritative per-cargo snapshot of a station's live state,
with both the real-time waiting amount (GSStation.GetCargoWaiting) and the
planned cargodist link-graph flow (GetCargoPlanned), plus rating.
- get_station_cargo(): break one cargo type down by source station and by
next hop (the cargodist routing destination) for both waiting and planned
amounts, with optional from_station/via_station filters.
All three use stock GameScript API (no server patch, unlike timetables).
Refactors the shared GS request/reply correlation out of get_timetable and
get_station into a _gs_query() helper. Companion handlers must be added to
the server-side AdminBridge GameScript (not tracked in this repo).
Includes unit + e2e tests, a worked demo in main_admin.py, and protocol docs.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>