[AI] Gracefully handle unknown LiveServerMessage types#7975
Conversation
Introduce `LiveServerUnknownMessage` to represent unrecognized messages received from the server. Previously, the `LiveServerMessageSerializer` would throw a `SerializationException` when encountering an unknown message type. This change modifies the serializer to instead log a warning and return a `LiveServerUnknownMessage` for any unhandled types. The `LiveSession`'s message handler is updated to explicitly ignore these unknown messages. This prevents crashes due to unexpected server messages and allows for forward compatibility with new message types.
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here. |
|
/gemini review |
📝 PRs merging into main branchOur main branch should always be in a releasable state. If you are working on a larger change, or if you don't want this change to see the light of the day just yet, consider using a feature branch first, and only merge into the main branch when the code complete and ready to be released. |
There was a problem hiding this comment.
Code Review
This pull request modifies the LiveServerMessageSerializer to handle unknown message types by returning a LiveServerUnknownMessage and logging a warning, rather than throwing a SerializationException. Corresponding updates were made to LiveSession to ignore these unknown messages and to the test suite to verify the new behavior. Review feedback identified a potential runtime crash due to an overly long Android log tag and a typo in a test method name.
ai-logic/firebase-ai/src/main/kotlin/com/google/firebase/ai/type/LiveServerMessage.kt
Outdated
Show resolved
Hide resolved
ai-logic/firebase-ai/src/test/java/com/google/firebase/ai/type/LiveServerMessageTests.kt
Outdated
Show resolved
Hide resolved
…pe/LiveServerMessage.kt Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
…/LiveServerMessageTests.kt Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
|
The public api surface has changed for the subproject ai-logic_firebase-ai: Please update the api.txt files for the subprojects being affected by this change by running ./gradlew ${subproject}:generateApiTxtFile. Also perform a major/minor bump accordingly. |
2 similar comments
|
The public api surface has changed for the subproject ai-logic_firebase-ai: Please update the api.txt files for the subprojects being affected by this change by running ./gradlew ${subproject}:generateApiTxtFile. Also perform a major/minor bump accordingly. |
|
The public api surface has changed for the subproject ai-logic_firebase-ai: Please update the api.txt files for the subprojects being affected by this change by running ./gradlew ${subproject}:generateApiTxtFile. Also perform a major/minor bump accordingly. |
Introduce
LiveServerUnknownMessageto represent unrecognized messages received from the server.Previously, the
LiveServerMessageSerializerwould throw aSerializationExceptionwhen encountering an unknown message type. This change modifies the serializer to instead log a warning and return aLiveServerUnknownMessagefor any unhandled types. TheLiveSession's message handler is updated to explicitly ignore these unknown messages.This prevents crashes due to unexpected server messages and allows for forward compatibility with new message types.