We should now expect clients to be version 1.0.0 with valid versioning info

This commit is contained in:
mattie ruth backman
2026-03-31 09:23:54 -04:00
committed by Mattie Ruth
parent 7d309b3340
commit 692c3c74d1

View File

@@ -57,7 +57,6 @@ class RTVIProcessor(FrameProcessor):
"""Initialize the RTVI processor.
Args:
config: Initial RTVI configuration.
transport: Transport layer for communication.
**kwargs: Additional arguments passed to parent class.
"""
@@ -66,9 +65,8 @@ class RTVIProcessor(FrameProcessor):
self._bot_ready = False
self._client_ready = False
self._client_ready_id = ""
# Default to 0.3.0 which is the last version before actually having a
# "client-version".
self._client_version = [0, 3, 0]
# Default to 0.0.0 to indicate unknown version.
self._client_version = [0, 0, 0]
self._llm_skip_tts: bool = False # Keep in sync with llm_service.py's configuration.
# A task to process incoming transport messages.
@@ -273,9 +271,6 @@ class RTVIProcessor(FrameProcessor):
try:
data = RTVI.ClientReadyData.model_validate(message.data)
except ValidationError:
# Not all clients have been updated to RTVI 1.0.0.
# For now, that's okay, we just log their info as unknown.
data = None
pass
await self._handle_client_ready(message.id, data)
case "disconnect-bot":
@@ -306,12 +301,23 @@ class RTVIProcessor(FrameProcessor):
"""Handle the client-ready message from the client."""
version = data.version if data else None
logger.debug(f"Received client-ready: version {version}")
version_error = None
if version:
try:
self._client_version = [int(v) for v in version.split(".")]
protocol_major = int(RTVI.PROTOCOL_VERSION.split(".")[0])
if self._client_version[0] != protocol_major:
version_error = f"RTVI version {version} is not compatible with server protocol {RTVI.PROTOCOL_VERSION}."
except ValueError:
logger.warning(f"Invalid client version format: {version}")
version_error = f"Invalid client version format ({version})."
else:
version_error = "Client version unknown."
about = data.about if data else {"library": "unknown"}
if version_error:
version_error += " Compatibility issues may occur."
logger.warning(version_error)
await self._send_error_response(request_id, version_error)
logger.debug(f"Client Details: {about}")
if self._input_transport:
await self._input_transport.start_audio_in_streaming()
@@ -413,7 +419,3 @@ class RTVIProcessor(FrameProcessor):
"""Send an error response message."""
message = RTVI.ErrorResponse(id=id, data=RTVI.ErrorResponseData(error=error))
await self.push_transport_message(message)
def _action_id(self, service: str, action: str) -> str:
"""Generate an action ID from service and action names."""
return f"{service}:{action}"