What's New
Fixes the "Your session hit the maximum duration of 60 minutes" failure in voice mode — previously, once OpenAI terminated the Realtime session, every subsequent message returned "server had an error while processing your request" and the agent was stuck until restart.
Proactive refresh
On `session.created`, a 55-minute timer is armed. When it fires, the adapter tears down the WS and opens a fresh one with the same instructions, tools, and voice. Users notice a sub-second pause instead of a hard failure. Visible in the Logs tab as `[voice] Refreshing Realtime session (proactive refresh before 60-min cap)`.
Reactive recovery
If the server somehow terminates the session before our timer fires (e.g. tier with a 30-min cap), we also watch for error payloads containing `maximum duration` / `session_expired` and trigger the same reconnect path instead of propagating the error to the user.
Both paths reuse the existing `connectWs` + `sendSessionUpdateOn` logic, including the ephemeral-token fallback for WebContainer-style hosts.
Full Changelog: v1.4.2...v1.4.3