fix(bot): 4 booking/UX bugs — /start reset, phone copy, slash commands, resume picker
Bug 1 — /start no longer shows "این کارت مربوط به رزرو قبلیه". /start (and the
"unknown -> stale -> the booking_stale nudge. parse_tap now maps
new_search/reset/start to a reset signal and entry_router routes it to the reset node
(clean reset + short prompt). Combined with the already-silent booking_stale branch,
the message is gone entirely.
Bug 2 — reworded the booking phone prompt (book_need_phone) in en/fa/ar: drops the payment parenthetical and the "+964… type it" fallback, asks the user to share via the button below.
Bug 3 — unrecognized slash commands no longer go to the LLM. Added on_unknown_command (F.text.startswith("/"), before on_text) that points the user back to the menu with the persistent keyboard. /start and the menu commands (/flight…/support, incl. /language) still hit their specific handlers first.
Bug 4 — after sharing the phone, the passenger step re-shows the PICKER (saved list /
scan / manual-entry), not the bare "send everything in one message" prompt. The
tap:pax:resume nudge re-entered add_passenger at COLLECT and, with empty text, degraded
to ask="typed". add_passenger now handles pax:resume explicitly (sign in, load saved
travellers, emit a plain collect_passenger with no ask), and an empty action-less
collect turn re-shows the picker instead of the bare prompt.
Tests: two new graph tests (new_search reset; pax:resume picker) + full suites green (core 43, bridge 23). Live-verified on the compiled engine and the real bridge renderer.