Rooms / recording / realtime bridge no longer require the bundled ReactPHP
server, so a host (e.g. a fork-per-message Laravel WS) can consume the package
on its own transport:
- RoomStore contract + ArrayRoomStore; RoomManager takes a store so membership
can be Cache/Redis-backed and survive across workers
- Realtime\OpenAiRealtimeBridge (+ RealtimeTransport / TextalkRealtimeTransport /
RealtimeTurn): the OpenAI GA realtime WS mechanism, turn-based, unit-tested via
a scripted transport
- Support\Audio (PCM16 -> WAV); RecordingStore::discard()
- provider binds RoomStore/RoomManager/RecordingStore/OpenAiRealtimeBridge and
guards webrtc:serve behind class_exists(laravel-ws + reactphp-kernel)
- laravel-ws + reactphp-kernel + react/* -> require-dev; runtime needs only
illuminate + textalk/websocket
- 40 tests green
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>