Session state now reports idle rather than running when the main loop isn't actually working.
What's wrong with this entry?
After the last pending permission or dialog request clears, the session used to always report running to anything watching session state, including SDK and remote clients. It now asks an optional liveness callback first and reports idle when the main loop says it is not live.
- The callback is optional; when it is absent, behaviour is exactly as before.
- Affects consumers subscribed to session state change notifications, which previously saw a spurious busy state after a prompt was answered.
mainLoopLiveness
Strings lifted out of the shipped bundle, so the claim above can be checked against them.