The live session (blue: this module) connects the caller's browser to every speech stage through one WebSocket per call.
This module is the conductor. One WebSocket per call carries the caller's microphone audio in and the receptionist's voice out, and session.py decides what happens when: when to transcribe, when to call the agent, when to speak, and when to stop speaking because the caller has started. Every other speech part (VAD, Whisper, the agent, Kokoro) is called from here.
The rest of this project is yours to keep
This project is bought on its own, once, and stays readable afterwards, including the parts added to it later.