Skip to content

Align LiveSeverMessage related protos #6910

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 8 commits into from
Apr 30, 2025
Merged

Align LiveSeverMessage related protos #6910

merged 8 commits into from
Apr 30, 2025

Conversation

daymxn
Copy link
Member

@daymxn daymxn commented Apr 24, 2025

Per b/410856389,

This removes the LiveContentResponse and provides a LiveServerMessage in its place that aligns with the proto, and the other SDKs. Documentation is included for everything added.

Additionally, this PR fixes the following:

@daymxn daymxn requested review from rlazo and VinayGuthal April 24, 2025 21:04
@daymxn daymxn self-assigned this Apr 24, 2025
Copy link
Contributor

github-actions bot commented Apr 24, 2025

Javadoc Changes:
--- /home/runner/diff/original/firebase-kotlindoc/android/client/firebase-ai/_toc.yaml	2025-04-30 17:02:10.592740634 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/android/client/firebase-ai/_toc.yaml	2025-04-30 16:58:48.524286525 +0000
@@ -44,6 +44,8 @@
   - title: "Interfaces"
 
     section:
+    - title: "LiveServerMessage"
+      path: "/docs/reference/android/com/google/firebase/ai/type/LiveServerMessage.html"
     - title: "Part"
       path: "/docs/reference/android/com/google/firebase/ai/type/Part.html"
 
@@ -124,16 +126,20 @@
       path: "/docs/reference/android/com/google/firebase/ai/type/ImagenSafetySettings.html"
     - title: "InlineDataPart"
       path: "/docs/reference/android/com/google/firebase/ai/type/InlineDataPart.html"
-    - title: "LiveContentResponse"
-      path: "/docs/reference/android/com/google/firebase/ai/type/LiveContentResponse.html"
-    - title: "LiveContentResponse.Status"
-      path: "/docs/reference/android/com/google/firebase/ai/type/LiveContentResponse.Status.html"
     - title: "LiveGenerationConfig"
       path: "/docs/reference/android/com/google/firebase/ai/type/LiveGenerationConfig.html"
     - title: "LiveGenerationConfig.Builder"
       path: "/docs/reference/android/com/google/firebase/ai/type/LiveGenerationConfig.Builder.html"
     - title: "LiveGenerationConfigKt"
       path: "/docs/reference/android/com/google/firebase/ai/type/LiveGenerationConfigKt.html"
+    - title: "LiveServerContent"
+      path: "/docs/reference/android/com/google/firebase/ai/type/LiveServerContent.html"
+    - title: "LiveServerSetupComplete"
+      path: "/docs/reference/android/com/google/firebase/ai/type/LiveServerSetupComplete.html"
+    - title: "LiveServerToolCall"
+      path: "/docs/reference/android/com/google/firebase/ai/type/LiveServerToolCall.html"
+    - title: "LiveServerToolCallCancellation"
+      path: "/docs/reference/android/com/google/firebase/ai/type/LiveServerToolCallCancellation.html"
     - title: "LiveSession"
       path: "/docs/reference/android/com/google/firebase/ai/type/LiveSession.html"
     - title: "MediaData"
--- /home/runner/diff/original/firebase-kotlindoc/android/com/google/firebase/ai/java/LiveSessionFutures.html	2025-04-30 17:02:10.604740601 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/android/com/google/firebase/ai/java/LiveSessionFutures.html	2025-04-30 16:58:48.526286521 +0000
@@ -78,7 +78,7 @@
             </td>
           </tr>
           <tr>
-            <td><code>abstract @<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/org/reactivestreams/Publisher.html">Publisher</a>&lt;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/ai/type/LiveContentResponse.html">LiveContentResponse</a>&gt;</code></td>
+            <td><code>abstract @<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/org/reactivestreams/Publisher.html">Publisher</a>&lt;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/ai/type/LiveServerMessage.html">LiveServerMessage</a>&gt;</code></td>
             <td>
               <div><code><a href="/docs/reference/android/com/google/firebase/ai/java/LiveSessionFutures.html#receive()">receive</a>()</code></div>
               <p>Receives responses from the model for both streaming and standard requests.</p>
@@ -197,7 +197,7 @@
       </div>
       <div class="api-item"><a name="receive--"></a><a name="receive"></a>
         <h3 class="api-name" id="receive()">receive</h3>
-        <pre class="api-signature no-pretty-print">public&nbsp;abstract&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/org/reactivestreams/Publisher.html">Publisher</a>&lt;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/ai/type/LiveContentResponse.html">LiveContentResponse</a>&gt;&nbsp;<a href="/docs/reference/android/com/google/firebase/ai/java/LiveSessionFutures.html#receive()">receive</a>()</pre>
+        <pre class="api-signature no-pretty-print">public&nbsp;abstract&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/org/reactivestreams/Publisher.html">Publisher</a>&lt;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/ai/type/LiveServerMessage.html">LiveServerMessage</a>&gt;&nbsp;<a href="/docs/reference/android/com/google/firebase/ai/java/LiveSessionFutures.html#receive()">receive</a>()</pre>
         <p>Receives responses from the model for both streaming and standard requests.</p>
         <p>Call <code><a href="/docs/reference/android/com/google/firebase/ai/java/LiveSessionFutures.html#close()">close</a></code> to stop receiving responses from the model.</p>
         <div class="devsite-table-wrapper">
@@ -213,9 +213,9 @@
             </thead>
             <tbody class="list">
               <tr>
-                <td><code>@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/org/reactivestreams/Publisher.html">Publisher</a>&lt;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/ai/type/LiveContentResponse.html">LiveContentResponse</a>&gt;</code></td>
+                <td><code>@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/org/reactivestreams/Publisher.html">Publisher</a>&lt;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/ai/type/LiveServerMessage.html">LiveServerMessage</a>&gt;</code></td>
                 <td>
-                  <p>A <code><a href="/docs/reference/android/org/reactivestreams/Publisher.html">Publisher</a></code> which will emit <code><a href="/docs/reference/android/com/google/firebase/ai/type/LiveContentResponse.html">LiveContentResponse</a></code> from the model.</p>
+                  <p>A <code><a href="/docs/reference/android/org/reactivestreams/Publisher.html">Publisher</a></code> which will emit <code><a href="/docs/reference/android/com/google/firebase/ai/type/LiveServerMessage.html">LiveServerMessage</a></code> from the model.</p>
                 </td>
               </tr>
             </tbody>
--- /home/runner/diff/original/firebase-kotlindoc/android/com/google/firebase/ai/type/FunctionCallPart.html	2025-04-30 17:02:10.632740524 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/android/com/google/firebase/ai/type/FunctionCallPart.html	2025-04-30 16:58:48.557286446 +0000
@@ -33,6 +33,13 @@
             </td>
           </tr>
           <tr>
+            <td><code>final <a href="https://developer.android.com/reference/kotlin/java/lang/String.html">String</a></code></td>
+            <td>
+              <div><code><a href="/docs/reference/android/com/google/firebase/ai/type/FunctionCallPart.html#id()">id</a></code></div>
+              <p>Unique id of the function call.</p>
+            </td>
+          </tr>
+          <tr>
             <td><code>final @<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/java/lang/String.html">String</a></code></td>
             <td>
               <div><code><a href="/docs/reference/android/com/google/firebase/ai/type/FunctionCallPart.html#name()">name</a></code></div>
@@ -56,7 +63,7 @@
         <tbody class="list">
           <tr>
             <td>
-              <div><code><a href="/docs/reference/android/com/google/firebase/ai/type/FunctionCallPart.html#FunctionCallPart(kotlin.String,kotlin.collections.Map)">FunctionCallPart</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/java/lang/String.html">String</a>&nbsp;name,<br>&nbsp;&nbsp;&nbsp;&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/java/util/Map.html">Map</a>&lt;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/java/lang/String.html">String</a>,&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/kotlinx/serialization/json/JsonElement.html">JsonElement</a>&gt;&nbsp;args<br>)</code></div>
+              <div><code><a href="/docs/reference/android/com/google/firebase/ai/type/FunctionCallPart.html#FunctionCallPart(kotlin.String,kotlin.collections.Map,kotlin.String)">FunctionCallPart</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/java/lang/String.html">String</a>&nbsp;name,<br>&nbsp;&nbsp;&nbsp;&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/java/util/Map.html">Map</a>&lt;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/java/lang/String.html">String</a>,&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/kotlinx/serialization/json/JsonElement.html">JsonElement</a>&gt;&nbsp;args,<br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="https://developer.android.com/reference/kotlin/java/lang/String.html">String</a>&nbsp;id<br>)</code></div>
             </td>
           </tr>
         </tbody>
@@ -69,6 +76,11 @@
         <pre class="api-signature no-pretty-print">public&nbsp;final&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/java/util/Map.html">Map</a>&lt;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/java/lang/String.html">String</a>,&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/kotlinx/serialization/json/JsonElement.html">JsonElement</a>&gt;&nbsp;<a href="/docs/reference/android/com/google/firebase/ai/type/FunctionCallPart.html#args()">args</a></pre>
         <p>the function parameters and values as a <code><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-map/index.html">Map</a></code></p>
       </div>
+      <div class="api-item"><a name="getId()"></a><a name="setId()"></a><a name="getId--"></a><a name="setId--"></a>
+        <h3 class="api-name" id="id()">id</h3>
+        <pre class="api-signature no-pretty-print">public&nbsp;final&nbsp;<a href="https://developer.android.com/reference/kotlin/java/lang/String.html">String</a>&nbsp;<a href="/docs/reference/android/com/google/firebase/ai/type/FunctionCallPart.html#id()">id</a></pre>
+        <p>Unique id of the function call. If present, the returned <code><a href="/docs/reference/android/com/google/firebase/ai/type/FunctionResponsePart.html">FunctionResponsePart</a></code> should have a matching <code>id</code> field.</p>
+      </div>
       <div class="api-item"><a name="getName()"></a><a name="setName()"></a><a name="getName--"></a><a name="setName--"></a>
         <h3 class="api-name" id="name()">name</h3>
         <pre class="api-signature no-pretty-print">public&nbsp;final&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/java/lang/String.html">String</a>&nbsp;<a href="/docs/reference/android/com/google/firebase/ai/type/FunctionCallPart.html#name()">name</a></pre>
@@ -77,9 +89,9 @@
     </div>
     <div class="list">
       <h2>Public constructors</h2>
-      <div class="api-item"><a name="FunctionCallPart(kotlin.String, kotlin.collections.Map)"></a><a name="FunctionCallPart-kotlin.String-kotlin.collections.Map-"></a><a name="functioncallpart"></a>
-        <h3 class="api-name" id="FunctionCallPart(kotlin.String,kotlin.collections.Map)">FunctionCallPart</h3>
-        <pre class="api-signature no-pretty-print">public&nbsp;<a href="/docs/reference/android/com/google/firebase/ai/type/FunctionCallPart.html#FunctionCallPart(kotlin.String,kotlin.collections.Map)">FunctionCallPart</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/java/lang/String.html">String</a>&nbsp;name,<br>&nbsp;&nbsp;&nbsp;&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/java/util/Map.html">Map</a>&lt;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/java/lang/String.html">String</a>,&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/kotlinx/serialization/json/JsonElement.html">JsonElement</a>&gt;&nbsp;args<br>)</pre>
+      <div class="api-item"><a name="FunctionCallPart(kotlin.String, kotlin.collections.Map, kotlin.String)"></a><a name="FunctionCallPart-kotlin.String-kotlin.collections.Map-kotlin.String-"></a><a name="functioncallpart"></a>
+        <h3 class="api-name" id="FunctionCallPart(kotlin.String,kotlin.collections.Map,kotlin.String)">FunctionCallPart</h3>
+        <pre class="api-signature no-pretty-print">public&nbsp;<a href="/docs/reference/android/com/google/firebase/ai/type/FunctionCallPart.html#FunctionCallPart(kotlin.String,kotlin.collections.Map,kotlin.String)">FunctionCallPart</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/java/lang/String.html">String</a>&nbsp;name,<br>&nbsp;&nbsp;&nbsp;&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/java/util/Map.html">Map</a>&lt;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/java/lang/String.html">String</a>,&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/kotlinx/serialization/json/JsonElement.html">JsonElement</a>&gt;&nbsp;args,<br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="https://developer.android.com/reference/kotlin/java/lang/String.html">String</a>&nbsp;id<br>)</pre>
         <div class="devsite-table-wrapper">
           <table class="responsive">
             <colgroup>
@@ -104,6 +116,12 @@
                   <p>the function parameters and values as a <code><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-map/index.html">Map</a></code></p>
                 </td>
               </tr>
+              <tr>
+                <td><code><a href="https://developer.android.com/reference/kotlin/java/lang/String.html">String</a>&nbsp;id</code></td>
+                <td>
+                  <p>Unique id of the function call. If present, the returned <code><a href="/docs/reference/android/com/google/firebase/ai/type/FunctionResponsePart.html">FunctionResponsePart</a></code> should have a matching <code>id</code> field.</p>
+                </td>
+              </tr>
             </tbody>
           </table>
         </div>
--- /home/runner/diff/original/firebase-kotlindoc/android/com/google/firebase/ai/type/FunctionResponsePart.html	2025-04-30 17:02:10.629740533 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/android/com/google/firebase/ai/type/FunctionResponsePart.html	2025-04-30 16:58:48.553286456 +0000
@@ -26,17 +26,24 @@
         </thead>
         <tbody class="list">
           <tr>
+            <td><code>final <a href="https://developer.android.com/reference/kotlin/java/lang/String.html">String</a></code></td>
+            <td>
+              <div><code><a href="/docs/reference/android/com/google/firebase/ai/type/FunctionResponsePart.html#id()">id</a></code></div>
+              <p>Matching <code>id</code> for a <code><a href="/docs/reference/android/com/google/firebase/ai/type/FunctionCallPart.html">FunctionCallPart</a></code>, if one was provided.</p>
+            </td>
+          </tr>
+          <tr>
             <td><code>final @<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/java/lang/String.html">String</a></code></td>
             <td>
               <div><code><a href="/docs/reference/android/com/google/firebase/ai/type/FunctionResponsePart.html#name()">name</a></code></div>
-              <p>the name of the called function</p>
+              <p>The name of the called function.</p>
             </td>
           </tr>
           <tr>
             <td><code>final @<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/kotlinx/serialization/json/JsonObject.html">JsonObject</a></code></td>
             <td>
               <div><code><a href="/docs/reference/android/com/google/firebase/ai/type/FunctionResponsePart.html#response()">response</a></code></div>
-              <p>the response produced by the function as a <code><a href="https://developer.android.com/reference/kotlin/org/json/JSONObject.html">JSONObject</a></code></p>
+              <p>The response produced by the function as a <code><a href="https://developer.android.com/reference/kotlin/org/json/JSONObject.html">JSONObject</a></code>.</p>
             </td>
           </tr>
         </tbody>
@@ -56,7 +63,7 @@
         <tbody class="list">
           <tr>
             <td>
-              <div><code><a href="/docs/reference/android/com/google/firebase/ai/type/FunctionResponsePart.html#FunctionResponsePart(kotlin.String,kotlinx.serialization.json.JsonObject)">FunctionResponsePart</a>(@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/java/lang/String.html">String</a>&nbsp;name,&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/kotlinx/serialization/json/JsonObject.html">JsonObject</a>&nbsp;response)</code></div>
+              <div><code><a href="/docs/reference/android/com/google/firebase/ai/type/FunctionResponsePart.html#FunctionResponsePart(kotlin.String,kotlinx.serialization.json.JsonObject,kotlin.String)">FunctionResponsePart</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/java/lang/String.html">String</a>&nbsp;name,<br>&nbsp;&nbsp;&nbsp;&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/kotlinx/serialization/json/JsonObject.html">JsonObject</a>&nbsp;response,<br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="https://developer.android.com/reference/kotlin/java/lang/String.html">String</a>&nbsp;id<br>)</code></div>
             </td>
           </tr>
         </tbody>
@@ -64,22 +71,27 @@
     </div>
     <div class="list">
       <h2>Public fields</h2>
+      <div class="api-item"><a name="getId()"></a><a name="setId()"></a><a name="getId--"></a><a name="setId--"></a>
+        <h3 class="api-name" id="id()">id</h3>
+        <pre class="api-signature no-pretty-print">public&nbsp;final&nbsp;<a href="https://developer.android.com/reference/kotlin/java/lang/String.html">String</a>&nbsp;<a href="/docs/reference/android/com/google/firebase/ai/type/FunctionResponsePart.html#id()">id</a></pre>
+        <p>Matching <code>id</code> for a <code><a href="/docs/reference/android/com/google/firebase/ai/type/FunctionCallPart.html">FunctionCallPart</a></code>, if one was provided.</p>
+      </div>
       <div class="api-item"><a name="getName()"></a><a name="setName()"></a><a name="getName--"></a><a name="setName--"></a>
         <h3 class="api-name" id="name()">name</h3>
         <pre class="api-signature no-pretty-print">public&nbsp;final&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/java/lang/String.html">String</a>&nbsp;<a href="/docs/reference/android/com/google/firebase/ai/type/FunctionResponsePart.html#name()">name</a></pre>
-        <p>the name of the called function</p>
+        <p>The name of the called function.</p>
       </div>
       <div class="api-item"><a name="getResponse()"></a><a name="setResponse()"></a><a name="getResponse--"></a><a name="setResponse--"></a>
         <h3 class="api-name" id="response()">response</h3>
         <pre class="api-signature no-pretty-print">public&nbsp;final&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/kotlinx/serialization/json/JsonObject.html">JsonObject</a>&nbsp;<a href="/docs/reference/android/com/google/firebase/ai/type/FunctionResponsePart.html#response()">response</a></pre>
-        <p>the response produced by the function as a <code><a href="https://developer.android.com/reference/kotlin/org/json/JSONObject.html">JSONObject</a></code></p>
+        <p>The response produced by the function as a <code><a href="https://developer.android.com/reference/kotlin/org/json/JSONObject.html">JSONObject</a></code>.</p>
       </div>
     </div>
     <div class="list">
       <h2>Public constructors</h2>
-      <div class="api-item"><a name="FunctionResponsePart(kotlin.String, kotlinx.serialization.json.JsonObject)"></a><a name="FunctionResponsePart-kotlin.String-kotlinx.serialization.json.JsonObject-"></a><a name="functionresponsepart"></a>
-        <h3 class="api-name" id="FunctionResponsePart(kotlin.String,kotlinx.serialization.json.JsonObject)">FunctionResponsePart</h3>
-        <pre class="api-signature no-pretty-print">public&nbsp;<a href="/docs/reference/android/com/google/firebase/ai/type/FunctionResponsePart.html#FunctionResponsePart(kotlin.String,kotlinx.serialization.json.JsonObject)">FunctionResponsePart</a>(@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/java/lang/String.html">String</a>&nbsp;name,&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/kotlinx/serialization/json/JsonObject.html">JsonObject</a>&nbsp;response)</pre>
+      <div class="api-item"><a name="FunctionResponsePart(kotlin.String, kotlinx.serialization.json.JsonObject, kotlin.String)"></a><a name="FunctionResponsePart-kotlin.String-kotlinx.serialization.json.JsonObject-kotlin.String-"></a><a name="functionresponsepart"></a>
+        <h3 class="api-name" id="FunctionResponsePart(kotlin.String,kotlinx.serialization.json.JsonObject,kotlin.String)">FunctionResponsePart</h3>
+        <pre class="api-signature no-pretty-print">public&nbsp;<a href="/docs/reference/android/com/google/firebase/ai/type/FunctionResponsePart.html#FunctionResponsePart(kotlin.String,kotlinx.serialization.json.JsonObject,kotlin.String)">FunctionResponsePart</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/java/lang/String.html">String</a>&nbsp;name,<br>&nbsp;&nbsp;&nbsp;&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/kotlinx/serialization/json/JsonObject.html">JsonObject</a>&nbsp;response,<br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="https://developer.android.com/reference/kotlin/java/lang/String.html">String</a>&nbsp;id<br>)</pre>
         <div class="devsite-table-wrapper">
           <table class="responsive">
             <colgroup>
@@ -95,13 +107,19 @@
               <tr>
                 <td><code>@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/java/lang/String.html">String</a>&nbsp;name</code></td>
                 <td>
-                  <p>the name of the called function</p>
+                  <p>The name of the called function.</p>
                 </td>
               </tr>
               <tr>
                 <td><code>@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/kotlinx/serialization/json/JsonObject.html">JsonObject</a>&nbsp;response</code></td>
                 <td>
-                  <p>the response produced by the function as a <code><a href="https://developer.android.com/reference/kotlin/org/json/JSONObject.html">JSONObject</a></code></p>
+                  <p>The response produced by the function as a <code><a href="https://developer.android.com/reference/kotlin/org/json/JSONObject.html">JSONObject</a></code>.</p>
+                </td>
+              </tr>
+              <tr>
+                <td><code><a href="https://developer.android.com/reference/kotlin/java/lang/String.html">String</a>&nbsp;id</code></td>
+                <td>
+                  <p>Matching <code>id</code> for a <code><a href="/docs/reference/android/com/google/firebase/ai/type/FunctionCallPart.html">FunctionCallPart</a></code>, if one was provided.</p>
                 </td>
               </tr>
             </tbody>
--- /home/runner/diff/original/firebase-kotlindoc/android/com/google/firebase/ai/type/LiveContentResponse.Status.Companion.html	2025-04-30 17:02:10.610740585 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/android/com/google/firebase/ai/type/LiveContentResponse.Status.Companion.html	1970-01-01 00:00:00.000000000 +0000
@@ -1,73 +0,0 @@
-<html devsite="true">
-  <head>
-    <title>LiveContentResponse.Status.Companion</title>
-{% setvar book_path %}/_book.yaml{% endsetvar %}
-{% include "docs/reference/android/_reference-head-tags.html" %}
-  </head>
-  <body>
-    <div id="metadata-info-block"></div>
-    <h1>LiveContentResponse.Status.Companion</h1>
-    <p>
-      <pre>public static class <a href="/docs/reference/android/com/google/firebase/ai/type/LiveContentResponse.Status.Companion.html">LiveContentResponse.Status.Companion</a></pre>
-    </p>
-    <hr>
-    <h2>Summary</h2>
-    <div class="devsite-table-wrapper">
-      <table class="responsive">
-        <colgroup>
-          <col width="40%">
-          <col>
-        </colgroup>
-        <thead>
-          <tr>
-            <th colspan="100%"><h3>Public fields</h3></th>
-          </tr>
-        </thead>
-        <tbody class="list">
-          <tr>
-            <td><code>static&nbsp;final @<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/ai/type/LiveContentResponse.Status.html">LiveContentResponse.Status</a></code></td>
-            <td>
-              <div><code><a href="/docs/reference/android/com/google/firebase/ai/type/LiveContentResponse.Status.Companion.html#INTERRUPTED()">INTERRUPTED</a></code></div>
-              <p>The server was interrupted while generating data.</p>
-            </td>
-          </tr>
-          <tr>
-            <td><code>static&nbsp;final @<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/ai/type/LiveContentResponse.Status.html">LiveContentResponse.Status</a></code></td>
-            <td>
-              <div><code><a href="/docs/reference/android/com/google/firebase/ai/type/LiveContentResponse.Status.Companion.html#NORMAL()">NORMAL</a></code></div>
-              <p>The server is actively sending data for the current interaction.</p>
-            </td>
-          </tr>
-          <tr>
-            <td><code>static&nbsp;final @<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/ai/type/LiveContentResponse.Status.html">LiveContentResponse.Status</a></code></td>
-            <td>
-              <div><code><a href="/docs/reference/android/com/google/firebase/ai/type/LiveContentResponse.Status.Companion.html#TURN_COMPLETE()">TURN_COMPLETE</a></code></div>
-              <p>The model has finished sending data in the current interaction.</p>
-            </td>
-          </tr>
-        </tbody>
-      </table>
-    </div>
-    <div class="list">
-      <h2>Public fields</h2>
-      <div class="api-item"><a name="getINTERRUPTED()"></a><a name="setINTERRUPTED()"></a><a name="getINTERRUPTED--"></a><a name="setINTERRUPTED--"></a>
-        <h3 class="api-name" id="INTERRUPTED()">INTERRUPTED</h3>
-        <pre class="api-signature no-pretty-print">public&nbsp;static&nbsp;final&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/ai/type/LiveContentResponse.Status.html">LiveContentResponse.Status</a>&nbsp;<a href="/docs/reference/android/com/google/firebase/ai/type/LiveContentResponse.Status.Companion.html#INTERRUPTED()">INTERRUPTED</a></pre>
-        <p>The server was interrupted while generating data.</p>
-        <p>An interruption occurs when the client sends a message while the server is <code><a href="/docs/reference/android/com/google/firebase/ai/type/LiveContentResponse.Status.Companion.html#NORMAL()">actively</a></code> sending data.</p>
-      </div>
-      <div class="api-item"><a name="getNORMAL()"></a><a name="setNORMAL()"></a><a name="getNORMAL--"></a><a name="setNORMAL--"></a>
-        <h3 class="api-name" id="NORMAL()">NORMAL</h3>
-        <pre class="api-signature no-pretty-print">public&nbsp;static&nbsp;final&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/ai/type/LiveContentResponse.Status.html">LiveContentResponse.Status</a>&nbsp;<a href="/docs/reference/android/com/google/firebase/ai/type/LiveContentResponse.Status.Companion.html#NORMAL()">NORMAL</a></pre>
-        <p>The server is actively sending data for the current interaction.</p>
-      </div>
-      <div class="api-item"><a name="getTURN_COMPLETE()"></a><a name="setTURN_COMPLETE()"></a><a name="getTURN_COMPLETE--"></a><a name="setTURN_COMPLETE--"></a>
-        <h3 class="api-name" id="TURN_COMPLETE()">TURN_COMPLETE</h3>
-        <pre class="api-signature no-pretty-print">public&nbsp;static&nbsp;final&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/ai/type/LiveContentResponse.Status.html">LiveContentResponse.Status</a>&nbsp;<a href="/docs/reference/android/com/google/firebase/ai/type/LiveContentResponse.Status.Companion.html#TURN_COMPLETE()">TURN_COMPLETE</a></pre>
-        <p>The model has finished sending data in the current interaction.</p>
-        <p>Can be set alongside content, signifying that the content is the last in the turn.</p>
-      </div>
-    </div>
-  </body>
-</html>
-
--- /home/runner/diff/original/firebase-kotlindoc/android/com/google/firebase/ai/type/LiveContentResponse.Status.html	2025-04-30 17:02:10.624740546 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/android/com/google/firebase/ai/type/LiveContentResponse.Status.html	1970-01-01 00:00:00.000000000 +0000
@@ -1,38 +0,0 @@
-<html devsite="true">
-  <head>
-    <title>LiveContentResponse.Status</title>
-{% setvar book_path %}/_book.yaml{% endsetvar %}
-{% include "docs/reference/android/_reference-head-tags.html" %}
-  </head>
-  <body>
-    <div id="metadata-info-block"></div>
-    <h1>LiveContentResponse.Status</h1>
-    <p>
-      <pre>value public final class <a href="/docs/reference/android/com/google/firebase/ai/type/LiveContentResponse.Status.html">LiveContentResponse.Status</a></pre>
-    </p>
-    <hr>
-    <p>Represents the status of a <code><a href="/docs/reference/android/com/google/firebase/ai/type/LiveContentResponse.html">LiveContentResponse</a></code>, within a single interaction.</p>
-    <h2>Summary</h2>
-    <div class="devsite-table-wrapper">
-      <table class="responsive">
-        <colgroup>
-          <col width="40%">
-          <col>
-        </colgroup>
-        <thead>
-          <tr>
-            <th colspan="100%"><h3>Nested types</h3></th>
-          </tr>
-        </thead>
-        <tbody class="list">
-          <tr>
-            <td>
-              <div><code>public static class <a href="/docs/reference/android/com/google/firebase/ai/type/LiveContentResponse.Status.Companion.html">LiveContentResponse.Status.Companion</a></code></div>
-            </td>
-          </tr>
-        </tbody>
-      </table>
-    </div>
-  </body>
-</html>
-
--- /home/runner/diff/original/firebase-kotlindoc/android/com/google/firebase/ai/type/LiveContentResponse.html	2025-04-30 17:02:10.614740574 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/android/com/google/firebase/ai/type/LiveContentResponse.html	1970-01-01 00:00:00.000000000 +0000
@@ -1,112 +0,0 @@
-<html devsite="true">
-  <head>
-    <title>LiveContentResponse</title>
-{% setvar book_path %}/_book.yaml{% endsetvar %}
-{% include "docs/reference/android/_reference-head-tags.html" %}
-  </head>
-  <body>
-    <div id="metadata-info-block"></div>
-    <h1>LiveContentResponse</h1>
-    <p>
-      <pre>@<a href="/docs/reference/android/com/google/firebase/ai/type/PublicPreviewAPI.html">PublicPreviewAPI</a><br>public final class <a href="/docs/reference/android/com/google/firebase/ai/type/LiveContentResponse.html">LiveContentResponse</a></pre>
-    </p>
-    <hr>
-    <p>Represents the response from the model for live content updates.</p>
-    <p>This class encapsulates the content data, the status of the response, and any function calls included in the response.</p>
-    <h2>Summary</h2>
-    <div class="devsite-table-wrapper">
-      <table class="responsive">
-        <colgroup>
-          <col width="40%">
-          <col>
-        </colgroup>
-        <thead>
-          <tr>
-            <th colspan="100%"><h3>Nested types</h3></th>
-          </tr>
-        </thead>
-        <tbody class="list">
-          <tr>
-            <td>
-              <div><code>value public final class <a href="/docs/reference/android/com/google/firebase/ai/type/LiveContentResponse.Status.html">LiveContentResponse.Status</a></code></div>
-              <p>Represents the status of a <code><a href="/docs/reference/android/com/google/firebase/ai/type/LiveContentResponse.html">LiveContentResponse</a></code>, within a single interaction.</p>
-            </td>
-          </tr>
-          <tr>
-            <td>
-              <div><code>public static class <a href="/docs/reference/android/com/google/firebase/ai/type/LiveContentResponse.Status.Companion.html">LiveContentResponse.Status.Companion</a></code></div>
-            </td>
-          </tr>
-        </tbody>
-      </table>
-    </div>
-    <div class="devsite-table-wrapper">
-      <table class="responsive">
-        <colgroup>
-          <col width="40%">
-          <col>
-        </colgroup>
-        <thead>
-          <tr>
-            <th colspan="100%"><h3>Public fields</h3></th>
-          </tr>
-        </thead>
-        <tbody class="list">
-          <tr>
-            <td><code>final <a href="/docs/reference/android/com/google/firebase/ai/type/Content.html">Content</a></code></td>
-            <td>
-              <div><code><a href="/docs/reference/android/com/google/firebase/ai/type/LiveContentResponse.html#data()">data</a></code></div>
-              <p>The main content data of the response.</p>
-            </td>
-          </tr>
-          <tr>
-            <td><code>final <a href="https://developer.android.com/reference/kotlin/java/util/List.html">List</a>&lt;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/ai/type/FunctionCallPart.html">FunctionCallPart</a>&gt;</code></td>
-            <td>
-              <div><code><a href="/docs/reference/android/com/google/firebase/ai/type/LiveContentResponse.html#functionCalls()">functionCalls</a></code></div>
-              <p>A list of <code><a href="/docs/reference/android/com/google/firebase/ai/type/FunctionCallPart.html">FunctionCallPart</a></code> included in the response, if any.</p>
-            </td>
-          </tr>
-          <tr>
-            <td><code>final @<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/ai/type/LiveContentResponse.Status.html">LiveContentResponse.Status</a></code></td>
-            <td>
-              <div><code><a href="/docs/reference/android/com/google/firebase/ai/type/LiveContentResponse.html#status()">status</a></code></div>
-              <p>The status of the live content response.</p>
-            </td>
-          </tr>
-          <tr>
-            <td><code>final <a href="https://developer.android.com/reference/kotlin/java/lang/String.html">String</a></code></td>
-            <td>
-              <div><code><a href="/docs/reference/android/com/google/firebase/ai/type/LiveContentResponse.html#text()">text</a></code></div>
-              <p>Convenience field representing all the text parts in the response as a single string, if they exists.</p>
-            </td>
-          </tr>
-        </tbody>
-      </table>
-    </div>
-    <div class="list">
-      <h2>Public fields</h2>
-      <div class="api-item"><a name="getData()"></a><a name="setData()"></a><a name="getData--"></a><a name="setData--"></a>
-        <h3 class="api-name" id="data()">data</h3>
-        <pre class="api-signature no-pretty-print">public&nbsp;final&nbsp;<a href="/docs/reference/android/com/google/firebase/ai/type/Content.html">Content</a>&nbsp;<a href="/docs/reference/android/com/google/firebase/ai/type/LiveContentResponse.html#data()">data</a></pre>
-        <p>The main content data of the response. This can be <code>null</code> if there is no content.</p>
-      </div>
-      <div class="api-item"><a name="getFunctionCalls()"></a><a name="setFunctionCalls()"></a><a name="getFunctionCalls--"></a><a name="setFunctionCalls--"></a>
-        <h3 class="api-name" id="functionCalls()">functionCalls</h3>
-        <pre class="api-signature no-pretty-print">public&nbsp;final&nbsp;<a href="https://developer.android.com/reference/kotlin/java/util/List.html">List</a>&lt;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/ai/type/FunctionCallPart.html">FunctionCallPart</a>&gt;&nbsp;<a href="/docs/reference/android/com/google/firebase/ai/type/LiveContentResponse.html#functionCalls()">functionCalls</a></pre>
-        <p>A list of <code><a href="/docs/reference/android/com/google/firebase/ai/type/FunctionCallPart.html">FunctionCallPart</a></code> included in the response, if any.</p>
-        <p>This list can be null or empty if no function calls are present.</p>
-      </div>
-      <div class="api-item"><a name="getStatus()"></a><a name="setStatus()"></a><a name="getStatus--"></a><a name="setStatus--"></a>
-        <h3 class="api-name" id="status()">status</h3>
-        <pre class="api-signature no-pretty-print">public&nbsp;final&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/ai/type/LiveContentResponse.Status.html">LiveContentResponse.Status</a>&nbsp;<a href="/docs/reference/android/com/google/firebase/ai/type/LiveContentResponse.html#status()">status</a></pre>
-        <p>The status of the live content response. Indicates whether the response is normal, was interrupted, or signifies the completion of a turn.</p>
-      </div>
-      <div class="api-item"><a name="getText()"></a><a name="setText()"></a><a name="getText--"></a><a name="setText--"></a>
-        <h3 class="api-name" id="text()">text</h3>
-        <pre class="api-signature no-pretty-print">public&nbsp;final&nbsp;<a href="https://developer.android.com/reference/kotlin/java/lang/String.html">String</a>&nbsp;<a href="/docs/reference/android/com/google/firebase/ai/type/LiveContentResponse.html#text()">text</a></pre>
-        <p>Convenience field representing all the text parts in the response as a single string, if they exists.</p>
-      </div>
-    </div>
-  </body>
-</html>
-
--- /home/runner/diff/original/firebase-kotlindoc/android/com/google/firebase/ai/type/LiveServerContent.html	1970-01-01 00:00:00.000000000 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/android/com/google/firebase/ai/type/LiveServerContent.html	2025-04-30 16:58:48.537286494 +0000
@@ -0,0 +1,137 @@
+<html devsite="true">
+  <head>
+    <title>LiveServerContent</title>
+{% setvar book_path %}/_book.yaml{% endsetvar %}
+{% include "docs/reference/android/_reference-head-tags.html" %}
+  </head>
+  <body>
+    <div id="metadata-info-block"></div>
+    <h1>LiveServerContent</h1>
+    <p>
+      <pre>@<a href="/docs/reference/android/com/google/firebase/ai/type/PublicPreviewAPI.html">PublicPreviewAPI</a><br>public final class <a href="/docs/reference/android/com/google/firebase/ai/type/LiveServerContent.html">LiveServerContent</a> implements <a href="/docs/reference/android/com/google/firebase/ai/type/LiveServerMessage.html">LiveServerMessage</a></pre>
+    </p>
+    <hr>
+    <p>Incremental server update generated by the model in response to client messages.</p>
+    <p>Content is generated as quickly as possible, and not in realtime. You may choose to buffer and play it out in realtime.</p>
+    <h2>Summary</h2>
+    <div class="devsite-table-wrapper">
+      <table class="responsive">
+        <colgroup>
+          <col width="40%">
+          <col>
+        </colgroup>
+        <thead>
+          <tr>
+            <th colspan="100%"><h3>Public fields</h3></th>
+          </tr>
+        </thead>
+        <tbody class="list">
+          <tr>
+            <td><code>final <a href="/docs/reference/android/com/google/firebase/ai/type/Content.html">Content</a></code></td>
+            <td>
+              <div><code><a href="/docs/reference/android/com/google/firebase/ai/type/LiveServerContent.html#content()">content</a></code></div>
+              <p>The content that the model has generated as part of the current conversation with the user.</p>
+            </td>
+          </tr>
+          <tr>
+            <td><code>final boolean</code></td>
+            <td>
+              <div><code><a href="/docs/reference/android/com/google/firebase/ai/type/LiveServerContent.html#generationComplete()">generationComplete</a></code></div>
+              <p>The model has finished <em>generating</em> data for the current turn.</p>
+            </td>
+          </tr>
+          <tr>
+            <td><code>final boolean</code></td>
+            <td>
+              <div><code><a href="/docs/reference/android/com/google/firebase/ai/type/LiveServerContent.html#interrupted()">interrupted</a></code></div>
+              <p>The model was interrupted by the client while generating data.</p>
+            </td>
+          </tr>
+          <tr>
+            <td><code>final boolean</code></td>
+            <td>
+              <div><code><a href="/docs/reference/android/com/google/firebase/ai/type/LiveServerContent.html#turnComplete()">turnComplete</a></code></div>
+              <p>The model has finished sending data in the current turn.</p>
+            </td>
+          </tr>
+        </tbody>
+      </table>
+    </div>
+    <div class="devsite-table-wrapper">
+      <table class="responsive">
+        <colgroup>
+          <col width="40%">
+          <col>
+        </colgroup>
+        <thead>
+          <tr>
+            <th colspan="100%"><h3>Public constructors</h3></th>
+          </tr>
+        </thead>
+        <tbody class="list">
+          <tr>
+            <td>
+              <div><code><a href="/docs/reference/android/com/google/firebase/ai/type/LiveServerContent.html#LiveServerContent(com.google.firebase.ai.type.Content,kotlin.Boolean,kotlin.Boolean,kotlin.Boolean)">LiveServerContent</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="/docs/reference/android/com/google/firebase/ai/type/Content.html">Content</a>&nbsp;content,<br>&nbsp;&nbsp;&nbsp;&nbsp;boolean&nbsp;interrupted,<br>&nbsp;&nbsp;&nbsp;&nbsp;boolean&nbsp;turnComplete,<br>&nbsp;&nbsp;&nbsp;&nbsp;boolean&nbsp;generationComplete<br>)</code></div>
+            </td>
+          </tr>
+        </tbody>
+      </table>
+    </div>
+    <div class="list">
+      <h2>Public fields</h2>
+      <div class="api-item"><a name="getContent()"></a><a name="setContent()"></a><a name="getContent--"></a><a name="setContent--"></a>
+        <h3 class="api-name" id="content()">content</h3>
+        <pre class="api-signature no-pretty-print">public&nbsp;final&nbsp;<a href="/docs/reference/android/com/google/firebase/ai/type/Content.html">Content</a>&nbsp;<a href="/docs/reference/android/com/google/firebase/ai/type/LiveServerContent.html#content()">content</a></pre>
+        <p>The content that the model has generated as part of the current conversation with the user.</p>
+        <p>This can be <code>null</code> if there is no content.</p>
+      </div>
+      <div class="api-item"><a name="getGenerationComplete()"></a><a name="setGenerationComplete()"></a><a name="getGenerationComplete--"></a><a name="setGenerationComplete--"></a>
+        <h3 class="api-name" id="generationComplete()">generationComplete</h3>
+        <pre class="api-signature no-pretty-print">public&nbsp;final&nbsp;boolean&nbsp;<a href="/docs/reference/android/com/google/firebase/ai/type/LiveServerContent.html#generationComplete()">generationComplete</a></pre>
+        <p>The model has finished <em>generating</em> data for the current turn.</p>
+        <p>For realtime playback, there will be a delay between when the model finishes generating content and the client has finished playing back the generated content. <code><a href="/docs/reference/android/com/google/firebase/ai/type/LiveServerContent.html#generationComplete()">generationComplete</a></code> indicates that the model is done generating data, while <code><a href="/docs/reference/android/com/google/firebase/ai/type/LiveServerContent.html#turnComplete()">turnComplete</a></code> indicates the model is waiting for additional client messages. Sending a message during this delay may cause an <code><a href="/docs/reference/android/com/google/firebase/ai/type/LiveServerContent.html#interrupted()">interrupted</a></code> message to be sent.</p>
+        <p>Note that if the model was <code><a href="/docs/reference/android/com/google/firebase/ai/type/LiveServerContent.html#interrupted()">interrupted</a></code>, this will not be set. The model will go from <code><a href="/docs/reference/android/com/google/firebase/ai/type/LiveServerContent.html#interrupted()">interrupted</a></code> -><code><a href="/docs/reference/android/com/google/firebase/ai/type/LiveServerContent.html#turnComplete()">turnComplete</a></code>.</p>
+      </div>
+      <div class="api-item"><a name="getInterrupted()"></a><a name="setInterrupted()"></a><a name="getInterrupted--"></a><a name="setInterrupted--"></a>
+        <h3 class="api-name" id="interrupted()">interrupted</h3>
+        <pre class="api-signature no-pretty-print">public&nbsp;final&nbsp;boolean&nbsp;<a href="/docs/reference/android/com/google/firebase/ai/type/LiveServerContent.html#interrupted()">interrupted</a></pre>
+        <p>The model was interrupted by the client while generating data.</p>
+        <p>An interruption occurs when the client sends a message while the model is actively sending data.</p>
+      </div>
+      <div class="api-item"><a name="getTurnComplete()"></a><a name="setTurnComplete()"></a><a name="getTurnComplete--"></a><a name="setTurnComplete--"></a>
+        <h3 class="api-name" id="turnComplete()">turnComplete</h3>
+        <pre class="api-signature no-pretty-print">public&nbsp;final&nbsp;boolean&nbsp;<a href="/docs/reference/android/com/google/firebase/ai/type/LiveServerContent.html#turnComplete()">turnComplete</a></pre>
+        <p>The model has finished sending data in the current turn.</p>
+        <p>Generation will only start in response to additional client messages.</p>
+        <p>Can be set alongside <code><a href="/docs/reference/android/com/google/firebase/ai/type/package-summary.html#content(kotlin.String,kotlin.Function1)">content</a></code>, indicating that the <code><a href="/docs/reference/android/com/google/firebase/ai/type/package-summary.html#content(kotlin.String,kotlin.Function1)">content</a></code> is the last in the turn.</p>
+        <div class="devsite-table-wrapper">
+          <table class="responsive">
+            <colgroup>
+              <col width="40%">
+              <col>
+            </colgroup>
+            <thead>
+              <tr>
+                <th colspan="100%">See also</th>
+              </tr>
+            </thead>
+            <tbody class="list">
+              <tr>
+                <td><code><a href="/docs/reference/android/com/google/firebase/ai/type/LiveServerContent.html#generationComplete()">generationComplete</a></code></td>
+                <td></td>
+              </tr>
+            </tbody>
+          </table>
+        </div>
+      </div>
+    </div>
+    <div class="list">
+      <h2>Public constructors</h2>
+      <div class="api-item"><a name="LiveServerContent(com.google.firebase.ai.type.Content, kotlin.Boolean, kotlin.Boolean, kotlin.Boolean)"></a><a name="LiveServerContent-com.google.firebase.ai.type.Content-kotlin.Boolean-kotlin.Boolean-kotlin.Boolean-"></a><a name="liveservercontent"></a>
+        <h3 class="api-name" id="LiveServerContent(com.google.firebase.ai.type.Content,kotlin.Boolean,kotlin.Boolean,kotlin.Boolean)">LiveServerContent</h3>
+        <pre class="api-signature no-pretty-print">public&nbsp;<a href="/docs/reference/android/com/google/firebase/ai/type/LiveServerContent.html#LiveServerContent(com.google.firebase.ai.type.Content,kotlin.Boolean,kotlin.Boolean,kotlin.Boolean)">LiveServerContent</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="/docs/reference/android/com/google/firebase/ai/type/Content.html">Content</a>&nbsp;content,<br>&nbsp;&nbsp;&nbsp;&nbsp;boolean&nbsp;interrupted,<br>&nbsp;&nbsp;&nbsp;&nbsp;boolean&nbsp;turnComplete,<br>&nbsp;&nbsp;&nbsp;&nbsp;boolean&nbsp;generationComplete<br>)</pre>
+      </div>
+    </div>
+  </body>
+</html>
+
--- /home/runner/diff/original/firebase-kotlindoc/android/com/google/firebase/ai/type/LiveServerMessage.html	1970-01-01 00:00:00.000000000 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/android/com/google/firebase/ai/type/LiveServerMessage.html	2025-04-30 16:58:48.558286444 +0000
@@ -0,0 +1,88 @@
+<html devsite="true">
+  <head>
+    <title>LiveServerMessage</title>
+{% setvar book_path %}/_book.yaml{% endsetvar %}
+{% include "docs/reference/android/_reference-head-tags.html" %}
+  </head>
+  <body>
+    <div id="metadata-info-block"></div>
+    <h1>LiveServerMessage</h1>
+    <p>
+      <pre>@<a href="/docs/reference/android/com/google/firebase/ai/type/PublicPreviewAPI.html">PublicPreviewAPI</a><br>public interface <a href="/docs/reference/android/com/google/firebase/ai/type/LiveServerMessage.html">LiveServerMessage</a></pre>
+    </p>
+    <div class="devsite-table-wrapper"><devsite-expandable><span class="expand-control jd-sumtable-subclasses">Known direct subclasses
+        <div class="showalways" id="subclasses-direct"><a href="/docs/reference/android/com/google/firebase/ai/type/LiveServerContent.html">LiveServerContent</a>, <a href="/docs/reference/android/com/google/firebase/ai/type/LiveServerSetupComplete.html">LiveServerSetupComplete</a>, <a href="/docs/reference/android/com/google/firebase/ai/type/LiveServerToolCallCancellation.html">LiveServerToolCallCancellation</a>, <a href="/docs/reference/android/com/google/firebase/ai/type/LiveServerToolCall.html">LiveServerToolCall</a></div>
+      </span>
+      <div id="subclasses-direct-summary">
+        <div class="devsite-table-wrapper">
+          <table class="responsive">
+            <colgroup>
+              <col width="40%">
+              <col>
+            </colgroup>
+            <tbody class="list">
+              <tr>
+                <td><code><a href="/docs/reference/android/com/google/firebase/ai/type/LiveServerContent.html">LiveServerContent</a></code></td>
+                <td>
+                  <p>Incremental server update generated by the model in response to client messages.</p>
+                </td>
+              </tr>
+              <tr>
+                <td><code><a href="/docs/reference/android/com/google/firebase/ai/type/LiveServerSetupComplete.html">LiveServerSetupComplete</a></code></td>
+                <td>
+                  <p>The model is ready to receive client messages.</p>
+                </td>
+              </tr>
+              <tr>
+                <td><code><a href="/docs/reference/android/com/google/firebase/ai/type/LiveServerToolCallCancellation.html">LiveServerToolCallCancellation</a></code></td>
+                <td>
+                  <p>Notification for the client to cancel a previous function call from <code><a href="/docs/reference/android/com/google/firebase/ai/type/LiveServerToolCall.html">LiveServerToolCall</a></code>.</p>
+                </td>
+              </tr>
+              <tr>
+                <td><code><a href="/docs/reference/android/com/google/firebase/ai/type/LiveServerToolCall.html">LiveServerToolCall</a></code></td>
+                <td>
+                  <p>Request for the client to execute the provided <code><a href="/docs/reference/android/com/google/firebase/ai/type/LiveServerToolCall.html#functionCalls()">functionCalls</a></code>.</p>
+                </td>
+              </tr>
+            </tbody>
+          </table>
+        </div>
+      </div>
+</devsite-expandable>    </div>
+    <hr>
+    <p>Parent interface for responses from the model during live interactions.</p>
+    <div class="devsite-table-wrapper">
+      <table class="responsive">
+        <colgroup>
+          <col width="40%">
+          <col>
+        </colgroup>
+        <thead>
+          <tr>
+            <th colspan="100%">See also</th>
+          </tr>
+        </thead>
+        <tbody class="list">
+          <tr>
+            <td><code><a href="/docs/reference/android/com/google/firebase/ai/type/LiveServerContent.html">LiveServerContent</a></code></td>
+            <td></td>
+          </tr>
+          <tr>
+            <td><code><a href="/docs/reference/android/com/google/firebase/ai/type/LiveServerToolCall.html">LiveServerToolCall</a></code></td>
+            <td></td>
+          </tr>
+          <tr>
+            <td><code><a href="/docs/reference/android/com/google/firebase/ai/type/LiveServerToolCallCancellation.html">LiveServerToolCallCancellation</a></code></td>
+            <td></td>
+          </tr>
+          <tr>
+            <td><code><a href="/docs/reference/android/com/google/firebase/ai/type/LiveServerSetupComplete.html">LiveServerSetupComplete</a></code></td>
+            <td></td>
+          </tr>
+        </tbody>
+      </table>
+    </div>
+  </body>
+</html>
+
--- /home/runner/diff/original/firebase-kotlindoc/android/com/google/firebase/ai/type/LiveServerSetupComplete.html	1970-01-01 00:00:00.000000000 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/android/com/google/firebase/ai/type/LiveServerSetupComplete.html	2025-04-30 16:58:48.553286456 +0000
@@ -0,0 +1,45 @@
+<html devsite="true">
+  <head>
+    <title>LiveServerSetupComplete</title>
+{% setvar book_path %}/_book.yaml{% endsetvar %}
+{% include "docs/reference/android/_reference-head-tags.html" %}
+  </head>
+  <body>
+    <div id="metadata-info-block"></div>
+    <h1>LiveServerSetupComplete</h1>
+    <p>
+      <pre>@<a href="/docs/reference/android/com/google/firebase/ai/type/PublicPreviewAPI.html">PublicPreviewAPI</a><br>public final class <a href="/docs/reference/android/com/google/firebase/ai/type/LiveServerSetupComplete.html">LiveServerSetupComplete</a> implements <a href="/docs/reference/android/com/google/firebase/ai/type/LiveServerMessage.html">LiveServerMessage</a></pre>
+    </p>
+    <hr>
+    <p>The model is ready to receive client messages.</p>
+    <h2>Summary</h2>
+    <div class="devsite-table-wrapper">
+      <table class="responsive">
+        <colgroup>
+          <col width="40%">
+          <col>
+        </colgroup>
+        <thead>
+          <tr>
+            <th colspan="100%"><h3>Public constructors</h3></th>
+          </tr>
+        </thead>
+        <tbody class="list">
+          <tr>
+            <td>
+              <div><code><a href="/docs/reference/android/com/google/firebase/ai/type/LiveServerSetupComplete.html#LiveServerSetupComplete()">LiveServerSetupComplete</a>()</code></div>
+            </td>
+          </tr>
+        </tbody>
+      </table>
+    </div>
+    <div class="list">
+      <h2>Public constructors</h2>
+      <div class="api-item"><a name="LiveServerSetupComplete--"></a><a name="liveserversetupcomplete"></a>
+        <h3 class="api-name" id="LiveServerSetupComplete()">LiveServerSetupComplete</h3>
+        <pre class="api-signature no-pretty-print">public&nbsp;<a href="/docs/reference/android/com/google/firebase/ai/type/LiveServerSetupComplete.html#LiveServerSetupComplete()">LiveServerSetupComplete</a>()</pre>
+      </div>
+    </div>
+  </body>
+</html>
+
--- /home/runner/diff/original/firebase-kotlindoc/android/com/google/firebase/ai/type/LiveServerToolCall.html	1970-01-01 00:00:00.000000000 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/android/com/google/firebase/ai/type/LiveServerToolCall.html	2025-04-30 16:58:48.536286497 +0000
@@ -0,0 +1,76 @@
+<html devsite="true">
+  <head>
+    <title>LiveServerToolCall</title>
+{% setvar book_path %}/_book.yaml{% endsetvar %}
+{% include "docs/reference/android/_reference-head-tags.html" %}
+  </head>
+  <body>
+    <div id="metadata-info-block"></div>
+    <h1>LiveServerToolCall</h1>
+    <p>
+      <pre>@<a href="/docs/reference/android/com/google/firebase/ai/type/PublicPreviewAPI.html">PublicPreviewAPI</a><br>public final class <a href="/docs/reference/android/com/google/firebase/ai/type/LiveServerToolCall.html">LiveServerToolCall</a> implements <a href="/docs/reference/android/com/google/firebase/ai/type/LiveServerMessage.html">LiveServerMessage</a></pre>
+    </p>
+    <hr>
+    <p>Request for the client to execute the provided <code><a href="/docs/reference/android/com/google/firebase/ai/type/LiveServerToolCall.html#functionCalls()">functionCalls</a></code>.</p>
+    <p>The client should return matching <code><a href="/docs/reference/android/com/google/firebase/ai/type/FunctionResponsePart.html">FunctionResponsePart</a></code>, where the <code>id</code> fields correspond to individual <code><a href="/docs/reference/android/com/google/firebase/ai/type/FunctionCallPart.html">FunctionCallPart</a></code>s.</p>
+    <h2>Summary</h2>
+    <div class="devsite-table-wrapper">
+      <table class="responsive">
+        <colgroup>
+          <col width="40%">
+          <col>
+        </colgroup>
+        <thead>
+          <tr>
+            <th colspan="100%"><h3>Public fields</h3></th>
+          </tr>
+        </thead>
+        <tbody class="list">
+          <tr>
+            <td><code>final @<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/java/util/List.html">List</a>&lt;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/ai/type/FunctionCallPart.html">FunctionCallPart</a>&gt;</code></td>
+            <td>
+              <div><code><a href="/docs/reference/android/com/google/firebase/ai/type/LiveServerToolCall.html#functionCalls()">functionCalls</a></code></div>
+              <p>A list of <code><a href="/docs/reference/android/com/google/firebase/ai/type/FunctionCallPart.html">FunctionCallPart</a></code> to run and return responses for.</p>
+            </td>
+          </tr>
+        </tbody>
+      </table>
+    </div>
+    <div class="devsite-table-wrapper">
+      <table class="responsive">
+        <colgroup>
+          <col width="40%">
+          <col>
+        </colgroup>
+        <thead>
+          <tr>
+            <th colspan="100%"><h3>Public constructors</h3></th>
+          </tr>
+        </thead>
+        <tbody class="list">
+          <tr>
+            <td>
+              <div><code><a href="/docs/reference/android/com/google/firebase/ai/type/LiveServerToolCall.html#LiveServerToolCall(kotlin.collections.List)">LiveServerToolCall</a>(@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/java/util/List.html">List</a>&lt;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/ai/type/FunctionCallPart.html">FunctionCallPart</a>&gt;&nbsp;functionCalls)</code></div>
+            </td>
+          </tr>
+        </tbody>
+      </table>
+    </div>
+    <div class="list">
+      <h2>Public fields</h2>
+      <div class="api-item"><a name="getFunctionCalls()"></a><a name="setFunctionCalls()"></a><a name="getFunctionCalls--"></a><a name="setFunctionCalls--"></a>
+        <h3 class="api-name" id="functionCalls()">functionCalls</h3>
+        <pre class="api-signature no-pretty-print">public&nbsp;final&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/java/util/List.html">List</a>&lt;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/ai/type/FunctionCallPart.html">FunctionCallPart</a>&gt;&nbsp;<a href="/docs/reference/android/com/google/firebase/ai/type/LiveServerToolCall.html#functionCalls()">functionCalls</a></pre>
+        <p>A list of <code><a href="/docs/reference/android/com/google/firebase/ai/type/FunctionCallPart.html">FunctionCallPart</a></code> to run and return responses for.</p>
+      </div>
+    </div>
+    <div class="list">
+      <h2>Public constructors</h2>
+      <div class="api-item"><a name="LiveServerToolCall-kotlin.collections.List-"></a><a name="liveservertoolcall"></a>
+        <h3 class="api-name" id="LiveServerToolCall(kotlin.collections.List)">LiveServerToolCall</h3>
+        <pre class="api-signature no-pretty-print">public&nbsp;<a href="/docs/reference/android/com/google/firebase/ai/type/LiveServerToolCall.html#LiveServerToolCall(kotlin.collections.List)">LiveServerToolCall</a>(@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/java/util/List.html">List</a>&lt;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/ai/type/FunctionCallPart.html">FunctionCallPart</a>&gt;&nbsp;functionCalls)</pre>
+      </div>
+    </div>
+  </body>
+</html>
+
--- /home/runner/diff/original/firebase-kotlindoc/android/com/google/firebase/ai/type/LiveServerToolCallCancellation.html	1970-01-01 00:00:00.000000000 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/android/com/google/firebase/ai/type/LiveServerToolCallCancellation.html	2025-04-30 16:58:48.541286485 +0000
@@ -0,0 +1,76 @@
+<html devsite="true">
+  <head>
+    <title>LiveServerToolCallCancellation</title>
+{% setvar book_path %}/_book.yaml{% endsetvar %}
+{% include "docs/reference/android/_reference-head-tags.html" %}
+  </head>
+  <body>
+    <div id="metadata-info-block"></div>
+    <h1>LiveServerToolCallCancellation</h1>
+    <p>
+      <pre>@<a href="/docs/reference/android/com/google/firebase/ai/type/PublicPreviewAPI.html">PublicPreviewAPI</a><br>public final class <a href="/docs/reference/android/com/google/firebase/ai/type/LiveServerToolCallCancellation.html">LiveServerToolCallCancellation</a> implements <a href="/docs/reference/android/com/google/firebase/ai/type/LiveServerMessage.html">LiveServerMessage</a></pre>
+    </p>
+    <hr>
+    <p>Notification for the client to cancel a previous function call from <code><a href="/docs/reference/android/com/google/firebase/ai/type/LiveServerToolCall.html">LiveServerToolCall</a></code>.</p>
+    <p>You do not need to send <code><a href="/docs/reference/android/com/google/firebase/ai/type/FunctionResponsePart.html">FunctionResponsePart</a></code>s for the cancelled <code><a href="/docs/reference/android/com/google/firebase/ai/type/FunctionCallPart.html">FunctionCallPart</a></code>s.</p>
+    <h2>Summary</h2>
+    <div class="devsite-table-wrapper">
+      <table class="responsive">
+        <colgroup>
+          <col width="40%">
+          <col>
+        </colgroup>
+        <thead>
+          <tr>
+            <th colspan="100%"><h3>Public fields</h3></th>
+          </tr>
+        </thead>
+        <tbody class="list">
+          <tr>
+            <td><code>final @<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/java/util/List.html">List</a>&lt;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/java/lang/String.html">String</a>&gt;</code></td>
+            <td>
+              <div><code><a href="/docs/reference/android/com/google/firebase/ai/type/LiveServerToolCallCancellation.html#functionIds()">functionIds</a></code></div>
+              <p>A list of <code>id</code>s matching the <code>id</code> provided in a previous <code><a href="/docs/reference/android/com/google/firebase/ai/type/LiveServerToolCall.html">LiveServerToolCall</a></code>, where only the provided <code>id</code>s should be cancelled.</p>
+            </td>
+          </tr>
+        </tbody>
+      </table>
+    </div>
+    <div class="devsite-table-wrapper">
+      <table class="responsive">
+        <colgroup>
+          <col width="40%">
+          <col>
+        </colgroup>
+        <thead>
+          <tr>
+            <th colspan="100%"><h3>Public constructors</h3></th>
+          </tr>
+        </thead>
+        <tbody class="list">
+          <tr>
+            <td>
+              <div><code><a href="/docs/reference/android/com/google/firebase/ai/type/LiveServerToolCallCancellation.html#LiveServerToolCallCancellation(kotlin.collections.List)">LiveServerToolCallCancellation</a>(@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/java/util/List.html">List</a>&lt;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/java/lang/String.html">String</a>&gt;&nbsp;functionIds)</code></div>
+            </td>
+          </tr>
+        </tbody>
+      </table>
+    </div>
+    <div class="list">
+      <h2>Public fields</h2>
+      <div class="api-item"><a name="getFunctionIds()"></a><a name="setFunctionIds()"></a><a name="getFunctionIds--"></a><a name="setFunctionIds--"></a>
+        <h3 class="api-name" id="functionIds()">functionIds</h3>
+        <pre class="api-signature no-pretty-print">public&nbsp;final&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/java/util/List.html">List</a>&lt;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/java/lang/String.html">String</a>&gt;&nbsp;<a href="/docs/reference/android/com/google/firebase/ai/type/LiveServerToolCallCancellation.html#functionIds()">functionIds</a></pre>
+        <p>A list of <code>id</code>s matching the <code>id</code> provided in a previous <code><a href="/docs/reference/android/com/google/firebase/ai/type/LiveServerToolCall.html">LiveServerToolCall</a></code>, where only the provided <code>id</code>s should be cancelled.</p>
+      </div>
+    </div>
+    <div class="list">
+      <h2>Public constructors</h2>
+      <div class="api-item"><a name="LiveServerToolCallCancellation-kotlin.collections.List-"></a><a name="liveservertoolcallcancellation"></a>
+        <h3 class="api-name" id="LiveServerToolCallCancellation(kotlin.collections.List)">LiveServerToolCallCancellation</h3>
+        <pre class="api-signature no-pretty-print">public&nbsp;<a href="/docs/reference/android/com/google/firebase/ai/type/LiveServerToolCallCancellation.html#LiveServerToolCallCancellation(kotlin.collections.List)">LiveServerToolCallCancellation</a>(@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/java/util/List.html">List</a>&lt;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/java/lang/String.html">String</a>&gt;&nbsp;functionIds)</pre>
+      </div>
+    </div>
+  </body>
+</html>
+
--- /home/runner/diff/original/firebase-kotlindoc/android/com/google/firebase/ai/type/LiveSession.html	2025-04-30 17:02:10.630740530 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/android/com/google/firebase/ai/type/LiveSession.html	2025-04-30 16:58:48.554286454 +0000
@@ -33,7 +33,7 @@
             </td>
           </tr>
           <tr>
-            <td><code>final @<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-flow/index.html">Flow</a>&lt;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/ai/type/LiveContentResponse.html">LiveContentResponse</a>&gt;</code></td>
+            <td><code>final @<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-flow/index.html">Flow</a>&lt;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/ai/type/LiveServerMessage.html">LiveServerMessage</a>&gt;</code></td>
             <td>
               <div><code><a href="/docs/reference/android/com/google/firebase/ai/type/LiveSession.html#receive()">receive</a>()</code></div>
               <p>Receives responses from the model for both streaming and standard requests.</p>
@@ -120,7 +120,7 @@
       </div>
       <div class="api-item"><a name="receive--"></a><a name="receive"></a>
         <h3 class="api-name" id="receive()">receive</h3>
-        <pre class="api-signature no-pretty-print">public&nbsp;final&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-flow/index.html">Flow</a>&lt;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/ai/type/LiveContentResponse.html">LiveContentResponse</a>&gt;&nbsp;<a href="/docs/reference/android/com/google/firebase/ai/type/LiveSession.html#receive()">receive</a>()</pre>
+        <pre class="api-signature no-pretty-print">public&nbsp;final&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-flow/index.html">Flow</a>&lt;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/ai/type/LiveServerMessage.html">LiveServerMessage</a>&gt;&nbsp;<a href="/docs/reference/android/com/google/firebase/ai/type/LiveSession.html#receive()">receive</a>()</pre>
         <p>Receives responses from the model for both streaming and standard requests.</p>
         <p>Call <code><a href="/docs/reference/android/com/google/firebase/ai/type/LiveSession.html#close()">close</a></code> to stop receiving responses from the model.</p>
         <div class="devsite-table-wrapper">
@@ -136,9 +136,9 @@
             </thead>
             <tbody class="list">
               <tr>
-                <td><code>@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-flow/index.html">Flow</a>&lt;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/ai/type/LiveContentResponse.html">LiveContentResponse</a>&gt;</code></td>
+                <td><code>@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-flow/index.html">Flow</a>&lt;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/ai/type/LiveServerMessage.html">LiveServerMessage</a>&gt;</code></td>
                 <td>
-                  <p>A <code><a href="https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-flow/index.html">Flow</a></code> which will emit <code><a href="/docs/reference/android/com/google/firebase/ai/type/LiveContentResponse.html">LiveContentResponse</a></code> from the model.</p>
+                  <p>A <code><a href="https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-flow/index.html">Flow</a></code> which will emit <code><a href="/docs/reference/android/com/google/firebase/ai/type/LiveServerMessage.html">LiveServerMessage</a></code> from the model.</p>
                 </td>
               </tr>
             </tbody>
--- /home/runner/diff/original/firebase-kotlindoc/android/com/google/firebase/ai/type/package-summary.html	2025-04-30 17:02:10.619740560 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/android/com/google/firebase/ai/type/package-summary.html	2025-04-30 16:58:48.540286487 +0000
@@ -30,6 +30,12 @@
         </colgroup>
         <tbody class="list">
           <tr>
+            <td><code><a href="/docs/reference/android/com/google/firebase/ai/type/LiveServerMessage.html">LiveServerMessage</a></code></td>
+            <td>
+              <p>Parent interface for responses from the model during live interactions.</p>
+            </td>
+          </tr>
+          <tr>
             <td><code><a href="/docs/reference/android/com/google/firebase/ai/type/Part.html">Part</a></code></td>
             <td>
               <p>Interface representing data sent to and received from requests.</p>
@@ -261,32 +267,44 @@
             </td>
           </tr>
           <tr>
-            <td><code><a href="/docs/reference/android/com/google/firebase/ai/type/LiveContentResponse.html">LiveContentResponse</a></code></td>
+            <td><code><a href="/docs/reference/android/com/google/firebase/ai/type/LiveGenerationConfig.html">LiveGenerationConfig</a></code></td>
             <td>
-              <p>Represents the response from the model for live content updates.</p>
+              <p>Configuration parameters to use for live content generation.</p>
             </td>
           </tr>
           <tr>
-            <td><code><a href="/docs/reference/android/com/google/firebase/ai/type/LiveContentResponse.Status.html">LiveContentResponse.Status</a></code></td>
+            <td><code><a href="/docs/reference/android/com/google/firebase/ai/type/LiveGenerationConfig.Builder.html">LiveGenerationConfig.Builder</a></code></td>
             <td>
-              <p>Represents the status of a <code><a href="/docs/reference/android/com/google/firebase/ai/type/LiveContentResponse.html">LiveContentResponse</a></code>, within a single interaction.</p>
+              <p>Builder for creating a <code><a href="/docs/reference/android/com/google/firebase/ai/type/LiveGenerationConfig.html">LiveGenerationConfig</a></code>.</p>
             </td>
           </tr>
           <tr>
-            <td><code><a href="/docs/reference/android/com/google/firebase/ai/type/LiveGenerationConfig.html">LiveGenerationConfig</a></code></td>
+            <td><code><a href="/docs/reference/android/com/google/firebase/ai/type/LiveGenerationConfigKt.html">LiveGenerationConfigKt</a></code></td>
+            <td></td>
+          </tr>
+          <tr>
+            <td><code><a href="/docs/reference/android/com/google/firebase/ai/type/LiveServerContent.html">LiveServerContent</a></code></td>
             <td>
-              <p>Configuration parameters to use for live content generation.</p>
+              <p>Incremental server update generated by the model in response to client messages.</p>
             </td>
           </tr>
           <tr>
-            <td><code><a href="/docs/reference/android/com/google/firebase/ai/type/LiveGenerationConfig.Builder.html">LiveGenerationConfig.Builder</a></code></td>
+            <td><code><a href="/docs/reference/android/com/google/firebase/ai/type/LiveServerSetupComplete.html">LiveServerSetupComplete</a></code></td>
             <td>
-              <p>Builder for creating a <code><a href="/docs/reference/android/com/google/firebase/ai/type/LiveGenerationConfig.html">LiveGenerationConfig</a></code>.</p>
+              <p>The model is ready to receive client messages.</p>
             </td>
           </tr>
           <tr>
-            <td><code><a href="/docs/reference/android/com/google/firebase/ai/type/LiveGenerationConfigKt.html">LiveGenerationConfigKt</a></code></td>
-            <td></td>
+            <td><code><a href="/docs/reference/android/com/google/firebase/ai/type/LiveServerToolCall.html">LiveServerToolCall</a></code></td>
+            <td>
+              <p>Request for the client to execute the provided <code><a href="/docs/reference/android/com/google/firebase/ai/type/LiveServerToolCall.html#functionCalls()">functionCalls</a></code>.</p>
+            </td>
+          </tr>
+          <tr>
+            <td><code><a href="/docs/reference/android/com/google/firebase/ai/type/LiveServerToolCallCancellation.html">LiveServerToolCallCancellation</a></code></td>
+            <td>
+              <p>Notification for the client to cancel a previous function call from <code><a href="/docs/reference/android/com/google/firebase/ai/type/LiveServerToolCall.html">LiveServerToolCall</a></code>.</p>
+            </td>
           </tr>
           <tr>
             <td><code><a href="/docs/reference/android/com/google/firebase/ai/type/LiveSession.html">LiveSession</a></code></td>
--- /home/runner/diff/original/firebase-kotlindoc/kotlin/client/firebase-ai/_toc.yaml	2025-04-30 17:02:10.553740741 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/kotlin/client/firebase-ai/_toc.yaml	2025-04-30 16:58:48.497286590 +0000
@@ -42,6 +42,8 @@
   - title: "Interfaces"
 
     section:
+    - title: "LiveServerMessage"
+      path: "/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerMessage.html"
     - title: "Part"
       path: "/docs/reference/kotlin/com/google/firebase/ai/type/Part.html"
 
@@ -116,14 +118,18 @@
       path: "/docs/reference/kotlin/com/google/firebase/ai/type/ImagenSafetySettings.html"
     - title: "InlineDataPart"
       path: "/docs/reference/kotlin/com/google/firebase/ai/type/InlineDataPart.html"
-    - title: "LiveContentResponse"
-      path: "/docs/reference/kotlin/com/google/firebase/ai/type/LiveContentResponse.html"
-    - title: "LiveContentResponse.Status"
-      path: "/docs/reference/kotlin/com/google/firebase/ai/type/LiveContentResponse.Status.html"
     - title: "LiveGenerationConfig"
       path: "/docs/reference/kotlin/com/google/firebase/ai/type/LiveGenerationConfig.html"
     - title: "LiveGenerationConfig.Builder"
       path: "/docs/reference/kotlin/com/google/firebase/ai/type/LiveGenerationConfig.Builder.html"
+    - title: "LiveServerContent"
+      path: "/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerContent.html"
+    - title: "LiveServerSetupComplete"
+      path: "/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerSetupComplete.html"
+    - title: "LiveServerToolCall"
+      path: "/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerToolCall.html"
+    - title: "LiveServerToolCallCancellation"
+      path: "/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerToolCallCancellation.html"
     - title: "LiveSession"
       path: "/docs/reference/kotlin/com/google/firebase/ai/type/LiveSession.html"
     - title: "MediaData"
--- /home/runner/diff/original/firebase-kotlindoc/kotlin/com/google/firebase/ai/java/LiveSessionFutures.html	2025-04-30 17:02:10.557740730 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/kotlin/com/google/firebase/ai/java/LiveSessionFutures.html	2025-04-30 16:58:48.502286578 +0000
@@ -73,7 +73,7 @@
             </td>
           </tr>
           <tr>
-            <td><code>abstract <a href="/docs/reference/kotlin/org/reactivestreams/Publisher.html">Publisher</a>&lt;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveContentResponse.html">LiveContentResponse</a>&gt;</code></td>
+            <td><code>abstract <a href="/docs/reference/kotlin/org/reactivestreams/Publisher.html">Publisher</a>&lt;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerMessage.html">LiveServerMessage</a>&gt;</code></td>
             <td>
               <div><code><a href="/docs/reference/kotlin/com/google/firebase/ai/java/LiveSessionFutures.html#receive()">receive</a>()</code></div>
               <p>Receives responses from the model for both streaming and standard requests.</p>
@@ -195,7 +195,7 @@
       </div>
       <div class="api-item"><a name="receive--"></a><a name="receive"></a>
         <h3 class="api-name" id="receive()">receive</h3>
-        <pre class="api-signature no-pretty-print">abstract&nbsp;fun&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/ai/java/LiveSessionFutures.html#receive()">receive</a>():&nbsp;<a href="/docs/reference/kotlin/org/reactivestreams/Publisher.html">Publisher</a>&lt;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveContentResponse.html">LiveContentResponse</a>&gt;</pre>
+        <pre class="api-signature no-pretty-print">abstract&nbsp;fun&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/ai/java/LiveSessionFutures.html#receive()">receive</a>():&nbsp;<a href="/docs/reference/kotlin/org/reactivestreams/Publisher.html">Publisher</a>&lt;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerMessage.html">LiveServerMessage</a>&gt;</pre>
         <p>Receives responses from the model for both streaming and standard requests.</p>
         <p>Call <code><a href="/docs/reference/kotlin/com/google/firebase/ai/java/LiveSessionFutures.html#close()">close</a></code> to stop receiving responses from the model.</p>
         <div class="devsite-table-wrapper">
@@ -211,9 +211,9 @@
             </thead>
             <tbody class="list">
               <tr>
-                <td><code><a href="/docs/reference/kotlin/org/reactivestreams/Publisher.html">Publisher</a>&lt;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveContentResponse.html">LiveContentResponse</a>&gt;</code></td>
+                <td><code><a href="/docs/reference/kotlin/org/reactivestreams/Publisher.html">Publisher</a>&lt;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerMessage.html">LiveServerMessage</a>&gt;</code></td>
                 <td>
-                  <p>A <code><a href="/docs/reference/kotlin/org/reactivestreams/Publisher.html">Publisher</a></code> which will emit <code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveContentResponse.html">LiveContentResponse</a></code> from the model.</p>
+                  <p>A <code><a href="/docs/reference/kotlin/org/reactivestreams/Publisher.html">Publisher</a></code> which will emit <code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerMessage.html">LiveServerMessage</a></code> from the model.</p>
                 </td>
               </tr>
             </tbody>
--- /home/runner/diff/original/firebase-kotlindoc/kotlin/com/google/firebase/ai/type/FunctionCallPart.html	2025-04-30 17:02:10.586740651 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/kotlin/com/google/firebase/ai/type/FunctionCallPart.html	2025-04-30 16:58:48.518286540 +0000
@@ -27,7 +27,7 @@
         <tbody class="list">
           <tr>
             <td>
-              <div><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/FunctionCallPart.html#FunctionCallPart(kotlin.String,kotlin.collections.Map)">FunctionCallPart</a>(name:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html">String</a>,&nbsp;args:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-map/index.html">Map</a>&lt;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html">String</a>,&nbsp;<a href="/docs/reference/kotlin/kotlinx/serialization/json/JsonElement.html">JsonElement</a>&gt;)</code></div>
+              <div><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/FunctionCallPart.html#FunctionCallPart(kotlin.String,kotlin.collections.Map,kotlin.String)">FunctionCallPart</a>(name:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html">String</a>,&nbsp;args:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-map/index.html">Map</a>&lt;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html">String</a>,&nbsp;<a href="/docs/reference/kotlin/kotlinx/serialization/json/JsonElement.html">JsonElement</a>&gt;,&nbsp;id:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html">String</a>?)</code></div>
             </td>
           </tr>
         </tbody>
@@ -53,6 +53,13 @@
             </td>
           </tr>
           <tr>
+            <td><code><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html">String</a>?</code></td>
+            <td>
+              <div><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/FunctionCallPart.html#id()">id</a></code></div>
+              <p>Unique id of the function call.</p>
+            </td>
+          </tr>
+          <tr>
             <td><code><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html">String</a></code></td>
             <td>
               <div><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/FunctionCallPart.html#name()">name</a></code></div>
@@ -64,9 +71,9 @@
     </div>
     <div class="list">
       <h2>Public constructors</h2>
-      <div class="api-item"><a name="FunctionCallPart(kotlin.String, kotlin.collections.Map)"></a><a name="FunctionCallPart-kotlin.String-kotlin.collections.Map-"></a><a name="functioncallpart"></a>
-        <h3 class="api-name" id="FunctionCallPart(kotlin.String,kotlin.collections.Map)">FunctionCallPart</h3>
-        <pre class="api-signature no-pretty-print"><a href="/docs/reference/kotlin/com/google/firebase/ai/type/FunctionCallPart.html#FunctionCallPart(kotlin.String,kotlin.collections.Map)">FunctionCallPart</a>(name:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html">String</a>,&nbsp;args:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-map/index.html">Map</a>&lt;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html">String</a>,&nbsp;<a href="/docs/reference/kotlin/kotlinx/serialization/json/JsonElement.html">JsonElement</a>&gt;)</pre>
+      <div class="api-item"><a name="FunctionCallPart(kotlin.String, kotlin.collections.Map, kotlin.String)"></a><a name="FunctionCallPart-kotlin.String-kotlin.collections.Map-kotlin.String-"></a><a name="functioncallpart"></a>
+        <h3 class="api-name" id="FunctionCallPart(kotlin.String,kotlin.collections.Map,kotlin.String)">FunctionCallPart</h3>
+        <pre class="api-signature no-pretty-print"><a href="/docs/reference/kotlin/com/google/firebase/ai/type/FunctionCallPart.html#FunctionCallPart(kotlin.String,kotlin.collections.Map,kotlin.String)">FunctionCallPart</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;name:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html">String</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;args:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-map/index.html">Map</a>&lt;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html">String</a>,&nbsp;<a href="/docs/reference/kotlin/kotlinx/serialization/json/JsonElement.html">JsonElement</a>&gt;,<br>&nbsp;&nbsp;&nbsp;&nbsp;id:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html">String</a>? = null<br>)</pre>
         <div class="devsite-table-wrapper">
           <table class="responsive">
             <colgroup>
@@ -91,6 +98,12 @@
                   <p>the function parameters and values as a <code><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-map/index.html">Map</a></code></p>
                 </td>
               </tr>
+              <tr>
+                <td><code>id:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html">String</a>? = null</code></td>
+                <td>
+                  <p>Unique id of the function call. If present, the returned <code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/FunctionResponsePart.html">FunctionResponsePart</a></code> should have a matching <code>id</code> field.</p>
+                </td>
+              </tr>
             </tbody>
           </table>
         </div>
@@ -103,6 +116,11 @@
         <pre class="api-signature no-pretty-print">val&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/FunctionCallPart.html#args()">args</a>:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-map/index.html">Map</a>&lt;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html">String</a>,&nbsp;<a href="/docs/reference/kotlin/kotlinx/serialization/json/JsonElement.html">JsonElement</a>&gt;</pre>
         <p>the function parameters and values as a <code><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-map/index.html">Map</a></code></p>
       </div>
+      <div class="api-item"><a name="getId()"></a><a name="setId()"></a><a name="getId--"></a><a name="setId--"></a>
+        <h3 class="api-name" id="id()">id</h3>
+        <pre class="api-signature no-pretty-print">val&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/FunctionCallPart.html#id()">id</a>:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html">String</a>?</pre>
+        <p>Unique id of the function call. If present, the returned <code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/FunctionResponsePart.html">FunctionResponsePart</a></code> should have a matching <code>id</code> field.</p>
+      </div>
       <div class="api-item"><a name="getName()"></a><a name="setName()"></a><a name="getName--"></a><a name="setName--"></a>
         <h3 class="api-name" id="name()">name</h3>
         <pre class="api-signature no-pretty-print">val&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/FunctionCallPart.html#name()">name</a>:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html">String</a></pre>
--- /home/runner/diff/original/firebase-kotlindoc/kotlin/com/google/firebase/ai/type/FunctionResponsePart.html	2025-04-30 17:02:10.580740667 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/kotlin/com/google/firebase/ai/type/FunctionResponsePart.html	2025-04-30 16:58:48.514286549 +0000
@@ -27,7 +27,7 @@
         <tbody class="list">
           <tr>
             <td>
-              <div><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/FunctionResponsePart.html#FunctionResponsePart(kotlin.String,kotlinx.serialization.json.JsonObject)">FunctionResponsePart</a>(name:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html">String</a>,&nbsp;response:&nbsp;<a href="/docs/reference/kotlin/kotlinx/serialization/json/JsonObject.html">JsonObject</a>)</code></div>
+              <div><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/FunctionResponsePart.html#FunctionResponsePart(kotlin.String,kotlinx.serialization.json.JsonObject,kotlin.String)">FunctionResponsePart</a>(name:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html">String</a>,&nbsp;response:&nbsp;<a href="/docs/reference/kotlin/kotlinx/serialization/json/JsonObject.html">JsonObject</a>,&nbsp;id:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html">String</a>?)</code></div>
             </td>
           </tr>
         </tbody>
@@ -46,17 +46,24 @@
         </thead>
         <tbody class="list">
           <tr>
+            <td><code><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html">String</a>?</code></td>
+            <td>
+              <div><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/FunctionResponsePart.html#id()">id</a></code></div>
+              <p>Matching <code>id</code> for a <code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/FunctionCallPart.html">FunctionCallPart</a></code>, if one was provided.</p>
+            </td>
+          </tr>
+          <tr>
             <td><code><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html">String</a></code></td>
             <td>
               <div><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/FunctionResponsePart.html#name()">name</a></code></div>
-              <p>the name of the called function</p>
+              <p>The name of the called function.</p>
             </td>
           </tr>
           <tr>
             <td><code><a href="/docs/reference/kotlin/kotlinx/serialization/json/JsonObject.html">JsonObject</a></code></td>
             <td>
               <div><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/FunctionResponsePart.html#response()">response</a></code></div>
-              <p>the response produced by the function as a <code><a href="https://developer.android.com/reference/kotlin/org/json/JSONObject.html">JSONObject</a></code></p>
+              <p>The response produced by the function as a <code><a href="https://developer.android.com/reference/kotlin/org/json/JSONObject.html">JSONObject</a></code>.</p>
             </td>
           </tr>
         </tbody>
@@ -64,9 +71,9 @@
     </div>
     <div class="list">
       <h2>Public constructors</h2>
-      <div class="api-item"><a name="FunctionResponsePart(kotlin.String, kotlinx.serialization.json.JsonObject)"></a><a name="FunctionResponsePart-kotlin.String-kotlinx.serialization.json.JsonObject-"></a><a name="functionresponsepart"></a>
-        <h3 class="api-name" id="FunctionResponsePart(kotlin.String,kotlinx.serialization.json.JsonObject)">FunctionResponsePart</h3>
-        <pre class="api-signature no-pretty-print"><a href="/docs/reference/kotlin/com/google/firebase/ai/type/FunctionResponsePart.html#FunctionResponsePart(kotlin.String,kotlinx.serialization.json.JsonObject)">FunctionResponsePart</a>(name:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html">String</a>,&nbsp;response:&nbsp;<a href="/docs/reference/kotlin/kotlinx/serialization/json/JsonObject.html">JsonObject</a>)</pre>
+      <div class="api-item"><a name="FunctionResponsePart(kotlin.String, kotlinx.serialization.json.JsonObject, kotlin.String)"></a><a name="FunctionResponsePart-kotlin.String-kotlinx.serialization.json.JsonObject-kotlin.String-"></a><a name="functionresponsepart"></a>
+        <h3 class="api-name" id="FunctionResponsePart(kotlin.String,kotlinx.serialization.json.JsonObject,kotlin.String)">FunctionResponsePart</h3>
+        <pre class="api-signature no-pretty-print"><a href="/docs/reference/kotlin/com/google/firebase/ai/type/FunctionResponsePart.html#FunctionResponsePart(kotlin.String,kotlinx.serialization.json.JsonObject,kotlin.String)">FunctionResponsePart</a>(name:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html">String</a>,&nbsp;response:&nbsp;<a href="/docs/reference/kotlin/kotlinx/serialization/json/JsonObject.html">JsonObject</a>,&nbsp;id:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html">String</a>? = null)</pre>
         <div class="devsite-table-wrapper">
           <table class="responsive">
             <colgroup>
@@ -82,13 +89,19 @@
               <tr>
                 <td><code>name:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html">String</a></code></td>
                 <td>
-                  <p>the name of the called function</p>
+                  <p>The name of the called function.</p>
                 </td>
               </tr>
               <tr>
                 <td><code>response:&nbsp;<a href="/docs/reference/kotlin/kotlinx/serialization/json/JsonObject.html">JsonObject</a></code></td>
                 <td>
-                  <p>the response produced by the function as a <code><a href="https://developer.android.com/reference/kotlin/org/json/JSONObject.html">JSONObject</a></code></p>
+                  <p>The response produced by the function as a <code><a href="https://developer.android.com/reference/kotlin/org/json/JSONObject.html">JSONObject</a></code>.</p>
+                </td>
+              </tr>
+              <tr>
+                <td><code>id:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html">String</a>? = null</code></td>
+                <td>
+                  <p>Matching <code>id</code> for a <code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/FunctionCallPart.html">FunctionCallPart</a></code>, if one was provided.</p>
                 </td>
               </tr>
             </tbody>
@@ -98,15 +111,20 @@
     </div>
     <div class="list">
       <h2>Public properties</h2>
+      <div class="api-item"><a name="getId()"></a><a name="setId()"></a><a name="getId--"></a><a name="setId--"></a>
+        <h3 class="api-name" id="id()">id</h3>
+        <pre class="api-signature no-pretty-print">val&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/FunctionResponsePart.html#id()">id</a>:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html">String</a>?</pre>
+        <p>Matching <code>id</code> for a <code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/FunctionCallPart.html">FunctionCallPart</a></code>, if one was provided.</p>
+      </div>
       <div class="api-item"><a name="getName()"></a><a name="setName()"></a><a name="getName--"></a><a name="setName--"></a>
         <h3 class="api-name" id="name()">name</h3>
         <pre class="api-signature no-pretty-print">val&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/FunctionResponsePart.html#name()">name</a>:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html">String</a></pre>
-        <p>the name of the called function</p>
+        <p>The name of the called function.</p>
       </div>
       <div class="api-item"><a name="getResponse()"></a><a name="setResponse()"></a><a name="getResponse--"></a><a name="setResponse--"></a>
         <h3 class="api-name" id="response()">response</h3>
         <pre class="api-signature no-pretty-print">val&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/FunctionResponsePart.html#response()">response</a>:&nbsp;<a href="/docs/reference/kotlin/kotlinx/serialization/json/JsonObject.html">JsonObject</a></pre>
-        <p>the response produced by the function as a <code><a href="https://developer.android.com/reference/kotlin/org/json/JSONObject.html">JSONObject</a></code></p>
+        <p>The response produced by the function as a <code><a href="https://developer.android.com/reference/kotlin/org/json/JSONObject.html">JSONObject</a></code>.</p>
       </div>
     </div>
   </body>
--- /home/runner/diff/original/firebase-kotlindoc/kotlin/com/google/firebase/ai/type/LiveContentResponse.Status.html	2025-04-30 17:02:10.579740670 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/kotlin/com/google/firebase/ai/type/LiveContentResponse.Status.html	1970-01-01 00:00:00.000000000 +0000
@@ -1,74 +0,0 @@
-<html devsite="true">
-  <head>
-    <title>LiveContentResponse.Status</title>
-{% setvar book_path %}/_book.yaml{% endsetvar %}
-{% include "docs/reference/kotlin/_reference-head-tags.html" %}
-  </head>
-  <body>
-    <div id="metadata-info-block"></div>
-    <h1>LiveContentResponse.Status</h1>
-    <p>
-      <pre>value class <a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveContentResponse.Status.html">LiveContentResponse.Status</a></pre>
-    </p>
-    <hr>
-    <p>Represents the status of a <code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveContentResponse.html">LiveContentResponse</a></code>, within a single interaction.</p>
-    <h2>Summary</h2>
-    <div class="devsite-table-wrapper">
-      <table class="responsive">
-        <colgroup>
-          <col width="40%">
-          <col>
-        </colgroup>
-        <thead>
-          <tr>
-            <th colspan="100%"><h3>Public companion properties</h3></th>
-          </tr>
-        </thead>
-        <tbody class="list">
-          <tr>
-            <td><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveContentResponse.Status.html">LiveContentResponse.Status</a></code></td>
-            <td>
-              <div><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveContentResponse.Status.Companion.html#INTERRUPTED()">INTERRUPTED</a></code></div>
-              <p>The server was interrupted while generating data.</p>
-            </td>
-          </tr>
-          <tr>
-            <td><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveContentResponse.Status.html">LiveContentResponse.Status</a></code></td>
-            <td>
-              <div><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveContentResponse.Status.Companion.html#NORMAL()">NORMAL</a></code></div>
-              <p>The server is actively sending data for the current interaction.</p>
-            </td>
-          </tr>
-          <tr>
-            <td><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveContentResponse.Status.html">LiveContentResponse.Status</a></code></td>
-            <td>
-              <div><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveContentResponse.Status.Companion.html#TURN_COMPLETE()">TURN_COMPLETE</a></code></div>
-              <p>The model has finished sending data in the current interaction.</p>
-            </td>
-          </tr>
-        </tbody>
-      </table>
-    </div>
-    <div class="list">
-      <h2>Public companion properties</h2>
-      <div class="api-item"><a name="getINTERRUPTED()"></a><a name="setINTERRUPTED()"></a><a name="getINTERRUPTED--"></a><a name="setINTERRUPTED--"></a>
-        <h3 class="api-name" id="INTERRUPTED()">INTERRUPTED</h3>
-        <pre class="api-signature no-pretty-print">val&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveContentResponse.Status.Companion.html#INTERRUPTED()">INTERRUPTED</a>:&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveContentResponse.Status.html">LiveContentResponse.Status</a></pre>
-        <p>The server was interrupted while generating data.</p>
-        <p>An interruption occurs when the client sends a message while the server is <code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveContentResponse.Status.Companion.html#NORMAL()">actively</a></code> sending data.</p>
-      </div>
-      <div class="api-item"><a name="getNORMAL()"></a><a name="setNORMAL()"></a><a name="getNORMAL--"></a><a name="setNORMAL--"></a>
-        <h3 class="api-name" id="NORMAL()">NORMAL</h3>
-        <pre class="api-signature no-pretty-print">val&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveContentResponse.Status.Companion.html#NORMAL()">NORMAL</a>:&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveContentResponse.Status.html">LiveContentResponse.Status</a></pre>
-        <p>The server is actively sending data for the current interaction.</p>
-      </div>
-      <div class="api-item"><a name="getTURN_COMPLETE()"></a><a name="setTURN_COMPLETE()"></a><a name="getTURN_COMPLETE--"></a><a name="setTURN_COMPLETE--"></a>
-        <h3 class="api-name" id="TURN_COMPLETE()">TURN_COMPLETE</h3>
-        <pre class="api-signature no-pretty-print">val&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveContentResponse.Status.Companion.html#TURN_COMPLETE()">TURN_COMPLETE</a>:&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveContentResponse.Status.html">LiveContentResponse.Status</a></pre>
-        <p>The model has finished sending data in the current interaction.</p>
-        <p>Can be set alongside content, signifying that the content is the last in the turn.</p>
-      </div>
-    </div>
-  </body>
-</html>
-
--- /home/runner/diff/original/firebase-kotlindoc/kotlin/com/google/firebase/ai/type/LiveContentResponse.html	2025-04-30 17:02:10.564740711 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/kotlin/com/google/firebase/ai/type/LiveContentResponse.html	1970-01-01 00:00:00.000000000 +0000
@@ -1,107 +0,0 @@
-<html devsite="true">
-  <head>
-    <title>LiveContentResponse</title>
-{% setvar book_path %}/_book.yaml{% endsetvar %}
-{% include "docs/reference/kotlin/_reference-head-tags.html" %}
-  </head>
-  <body>
-    <div id="metadata-info-block"></div>
-    <h1>LiveContentResponse</h1>
-    <p>
-      <pre>@<a href="/docs/reference/kotlin/com/google/firebase/ai/type/PublicPreviewAPI.html">PublicPreviewAPI</a><br>class <a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveContentResponse.html">LiveContentResponse</a></pre>
-    </p>
-    <hr>
-    <p>Represents the response from the model for live content updates.</p>
-    <p>This class encapsulates the content data, the status of the response, and any function calls included in the response.</p>
-    <h2>Summary</h2>
-    <div class="devsite-table-wrapper">
-      <table class="responsive">
-        <colgroup>
-          <col width="40%">
-          <col>
-        </colgroup>
-        <thead>
-          <tr>
-            <th colspan="100%"><h3>Nested types</h3></th>
-          </tr>
-        </thead>
-        <tbody class="list">
-          <tr>
-            <td>
-              <div><code>value class <a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveContentResponse.Status.html">LiveContentResponse.Status</a></code></div>
-              <p>Represents the status of a <code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveContentResponse.html">LiveContentResponse</a></code>, within a single interaction.</p>
-            </td>
-          </tr>
-        </tbody>
-      </table>
-    </div>
-    <div class="devsite-table-wrapper">
-      <table class="responsive">
-        <colgroup>
-          <col width="40%">
-          <col>
-        </colgroup>
-        <thead>
-          <tr>
-            <th colspan="100%"><h3>Public properties</h3></th>
-          </tr>
-        </thead>
-        <tbody class="list">
-          <tr>
-            <td><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/Content.html">Content</a>?</code></td>
-            <td>
-              <div><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveContentResponse.html#data()">data</a></code></div>
-              <p>The main content data of the response.</p>
-            </td>
-          </tr>
-          <tr>
-            <td><code><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html">List</a>&lt;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/FunctionCallPart.html">FunctionCallPart</a>&gt;?</code></td>
-            <td>
-              <div><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveContentResponse.html#functionCalls()">functionCalls</a></code></div>
-              <p>A list of <code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/FunctionCallPart.html">FunctionCallPart</a></code> included in the response, if any.</p>
-            </td>
-          </tr>
-          <tr>
-            <td><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveContentResponse.Status.html">LiveContentResponse.Status</a></code></td>
-            <td>
-              <div><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveContentResponse.html#status()">status</a></code></div>
-              <p>The status of the live content response.</p>
-            </td>
-          </tr>
-          <tr>
-            <td><code><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html">String</a>?</code></td>
-            <td>
-              <div><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveContentResponse.html#text()">text</a></code></div>
-              <p>Convenience field representing all the text parts in the response as a single string, if they exists.</p>
-            </td>
-          </tr>
-        </tbody>
-      </table>
-    </div>
-    <div class="list">
-      <h2>Public properties</h2>
-      <div class="api-item"><a name="getData()"></a><a name="setData()"></a><a name="getData--"></a><a name="setData--"></a>
-        <h3 class="api-name" id="data()">data</h3>
-        <pre class="api-signature no-pretty-print">val&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveContentResponse.html#data()">data</a>:&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/Content.html">Content</a>?</pre>
-        <p>The main content data of the response. This can be <code>null</code> if there is no content.</p>
-      </div>
-      <div class="api-item"><a name="getFunctionCalls()"></a><a name="setFunctionCalls()"></a><a name="getFunctionCalls--"></a><a name="setFunctionCalls--"></a>
-        <h3 class="api-name" id="functionCalls()">functionCalls</h3>
-        <pre class="api-signature no-pretty-print">val&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveContentResponse.html#functionCalls()">functionCalls</a>:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html">List</a>&lt;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/FunctionCallPart.html">FunctionCallPart</a>&gt;?</pre>
-        <p>A list of <code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/FunctionCallPart.html">FunctionCallPart</a></code> included in the response, if any.</p>
-        <p>This list can be null or empty if no function calls are present.</p>
-      </div>
-      <div class="api-item"><a name="getStatus()"></a><a name="setStatus()"></a><a name="getStatus--"></a><a name="setStatus--"></a>
-        <h3 class="api-name" id="status()">status</h3>
-        <pre class="api-signature no-pretty-print">val&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveContentResponse.html#status()">status</a>:&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveContentResponse.Status.html">LiveContentResponse.Status</a></pre>
-        <p>The status of the live content response. Indicates whether the response is normal, was interrupted, or signifies the completion of a turn.</p>
-      </div>
-      <div class="api-item"><a name="getText()"></a><a name="setText()"></a><a name="getText--"></a><a name="setText--"></a>
-        <h3 class="api-name" id="text()">text</h3>
-        <pre class="api-signature no-pretty-print">val&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveContentResponse.html#text()">text</a>:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html">String</a>?</pre>
-        <p>Convenience field representing all the text parts in the response as a single string, if they exists.</p>
-      </div>
-    </div>
-  </body>
-</html>
-
--- /home/runner/diff/original/firebase-kotlindoc/kotlin/com/google/firebase/ai/type/LiveServerContent.html	1970-01-01 00:00:00.000000000 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/kotlin/com/google/firebase/ai/type/LiveServerContent.html	2025-04-30 16:58:48.505286571 +0000
@@ -0,0 +1,137 @@
+<html devsite="true">
+  <head>
+    <title>LiveServerContent</title>
+{% setvar book_path %}/_book.yaml{% endsetvar %}
+{% include "docs/reference/kotlin/_reference-head-tags.html" %}
+  </head>
+  <body>
+    <div id="metadata-info-block"></div>
+    <h1>LiveServerContent</h1>
+    <p>
+      <pre>@<a href="/docs/reference/kotlin/com/google/firebase/ai/type/PublicPreviewAPI.html">PublicPreviewAPI</a><br>class <a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerContent.html">LiveServerContent</a> : <a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerMessage.html">LiveServerMessage</a></pre>
+    </p>
+    <hr>
+    <p>Incremental server update generated by the model in response to client messages.</p>
+    <p>Content is generated as quickly as possible, and not in realtime. You may choose to buffer and play it out in realtime.</p>
+    <h2>Summary</h2>
+    <div class="devsite-table-wrapper">
+      <table class="responsive">
+        <colgroup>
+          <col width="40%">
+          <col>
+        </colgroup>
+        <thead>
+          <tr>
+            <th colspan="100%"><h3>Public constructors</h3></th>
+          </tr>
+        </thead>
+        <tbody class="list">
+          <tr>
+            <td>
+              <div><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerContent.html#LiveServerContent(com.google.firebase.ai.type.Content,kotlin.Boolean,kotlin.Boolean,kotlin.Boolean)">LiveServerContent</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;content:&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/Content.html">Content</a>?,<br>&nbsp;&nbsp;&nbsp;&nbsp;interrupted:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html">Boolean</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;turnComplete:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html">Boolean</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;generationComplete:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html">Boolean</a><br>)</code></div>
+            </td>
+          </tr>
+        </tbody>
+      </table>
+    </div>
+    <div class="devsite-table-wrapper">
+      <table class="responsive">
+        <colgroup>
+          <col width="40%">
+          <col>
+        </colgroup>
+        <thead>
+          <tr>
+            <th colspan="100%"><h3>Public properties</h3></th>
+          </tr>
+        </thead>
+        <tbody class="list">
+          <tr>
+            <td><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/Content.html">Content</a>?</code></td>
+            <td>
+              <div><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerContent.html#content()">content</a></code></div>
+              <p>The content that the model has generated as part of the current conversation with the user.</p>
+            </td>
+          </tr>
+          <tr>
+            <td><code><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html">Boolean</a></code></td>
+            <td>
+              <div><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerContent.html#generationComplete()">generationComplete</a></code></div>
+              <p>The model has finished <em>generating</em> data for the current turn.</p>
+            </td>
+          </tr>
+          <tr>
+            <td><code><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html">Boolean</a></code></td>
+            <td>
+              <div><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerContent.html#interrupted()">interrupted</a></code></div>
+              <p>The model was interrupted by the client while generating data.</p>
+            </td>
+          </tr>
+          <tr>
+            <td><code><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html">Boolean</a></code></td>
+            <td>
+              <div><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerContent.html#turnComplete()">turnComplete</a></code></div>
+              <p>The model has finished sending data in the current turn.</p>
+            </td>
+          </tr>
+        </tbody>
+      </table>
+    </div>
+    <div class="list">
+      <h2>Public constructors</h2>
+      <div class="api-item"><a name="LiveServerContent(com.google.firebase.ai.type.Content, kotlin.Boolean, kotlin.Boolean, kotlin.Boolean)"></a><a name="LiveServerContent-com.google.firebase.ai.type.Content-kotlin.Boolean-kotlin.Boolean-kotlin.Boolean-"></a><a name="liveservercontent"></a>
+        <h3 class="api-name" id="LiveServerContent(com.google.firebase.ai.type.Content,kotlin.Boolean,kotlin.Boolean,kotlin.Boolean)">LiveServerContent</h3>
+        <pre class="api-signature no-pretty-print"><a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerContent.html#LiveServerContent(com.google.firebase.ai.type.Content,kotlin.Boolean,kotlin.Boolean,kotlin.Boolean)">LiveServerContent</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;content:&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/Content.html">Content</a>?,<br>&nbsp;&nbsp;&nbsp;&nbsp;interrupted:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html">Boolean</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;turnComplete:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html">Boolean</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;generationComplete:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html">Boolean</a><br>)</pre>
+      </div>
+    </div>
+    <div class="list">
+      <h2>Public properties</h2>
+      <div class="api-item"><a name="getContent()"></a><a name="setContent()"></a><a name="getContent--"></a><a name="setContent--"></a>
+        <h3 class="api-name" id="content()">content</h3>
+        <pre class="api-signature no-pretty-print">val&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerContent.html#content()">content</a>:&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/Content.html">Content</a>?</pre>
+        <p>The content that the model has generated as part of the current conversation with the user.</p>
+        <p>This can be <code>null</code> if there is no content.</p>
+      </div>
+      <div class="api-item"><a name="getGenerationComplete()"></a><a name="setGenerationComplete()"></a><a name="getGenerationComplete--"></a><a name="setGenerationComplete--"></a>
+        <h3 class="api-name" id="generationComplete()">generationComplete</h3>
+        <pre class="api-signature no-pretty-print">val&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerContent.html#generationComplete()">generationComplete</a>:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html">Boolean</a></pre>
+        <p>The model has finished <em>generating</em> data for the current turn.</p>
+        <p>For realtime playback, there will be a delay between when the model finishes generating content and the client has finished playing back the generated content. <code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerContent.html#generationComplete()">generationComplete</a></code> indicates that the model is done generating data, while <code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerContent.html#turnComplete()">turnComplete</a></code> indicates the model is waiting for additional client messages. Sending a message during this delay may cause an <code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerContent.html#interrupted()">interrupted</a></code> message to be sent.</p>
+        <p>Note that if the model was <code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerContent.html#interrupted()">interrupted</a></code>, this will not be set. The model will go from <code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerContent.html#interrupted()">interrupted</a></code> -><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerContent.html#turnComplete()">turnComplete</a></code>.</p>
+      </div>
+      <div class="api-item"><a name="getInterrupted()"></a><a name="setInterrupted()"></a><a name="getInterrupted--"></a><a name="setInterrupted--"></a>
+        <h3 class="api-name" id="interrupted()">interrupted</h3>
+        <pre class="api-signature no-pretty-print">val&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerContent.html#interrupted()">interrupted</a>:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html">Boolean</a></pre>
+        <p>The model was interrupted by the client while generating data.</p>
+        <p>An interruption occurs when the client sends a message while the model is actively sending data.</p>
+      </div>
+      <div class="api-item"><a name="getTurnComplete()"></a><a name="setTurnComplete()"></a><a name="getTurnComplete--"></a><a name="setTurnComplete--"></a>
+        <h3 class="api-name" id="turnComplete()">turnComplete</h3>
+        <pre class="api-signature no-pretty-print">val&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerContent.html#turnComplete()">turnComplete</a>:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html">Boolean</a></pre>
+        <p>The model has finished sending data in the current turn.</p>
+        <p>Generation will only start in response to additional client messages.</p>
+        <p>Can be set alongside <code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/package-summary.html#content(kotlin.String,kotlin.Function1)">content</a></code>, indicating that the <code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/package-summary.html#content(kotlin.String,kotlin.Function1)">content</a></code> is the last in the turn.</p>
+        <div class="devsite-table-wrapper">
+          <table class="responsive">
+            <colgroup>
+              <col width="40%">
+              <col>
+            </colgroup>
+            <thead>
+              <tr>
+                <th colspan="100%">See also</th>
+              </tr>
+            </thead>
+            <tbody class="list">
+              <tr>
+                <td><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerContent.html#generationComplete()">generationComplete</a></code></td>
+                <td></td>
+              </tr>
+            </tbody>
+          </table>
+        </div>
+      </div>
+    </div>
+  </body>
+</html>
+
--- /home/runner/diff/original/firebase-kotlindoc/kotlin/com/google/firebase/ai/type/LiveServerMessage.html	1970-01-01 00:00:00.000000000 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/kotlin/com/google/firebase/ai/type/LiveServerMessage.html	2025-04-30 16:58:48.518286540 +0000
@@ -0,0 +1,88 @@
+<html devsite="true">
+  <head>
+    <title>LiveServerMessage</title>
+{% setvar book_path %}/_book.yaml{% endsetvar %}
+{% include "docs/reference/kotlin/_reference-head-tags.html" %}
+  </head>
+  <body>
+    <div id="metadata-info-block"></div>
+    <h1>LiveServerMessage</h1>
+    <p>
+      <pre>@<a href="/docs/reference/kotlin/com/google/firebase/ai/type/PublicPreviewAPI.html">PublicPreviewAPI</a><br>interface <a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerMessage.html">LiveServerMessage</a></pre>
+    </p>
+    <div class="devsite-table-wrapper"><devsite-expandable><span class="expand-control jd-sumtable-subclasses">Known direct subclasses
+        <div class="showalways" id="subclasses-direct"><a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerContent.html">LiveServerContent</a>, <a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerSetupComplete.html">LiveServerSetupComplete</a>, <a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerToolCallCancellation.html">LiveServerToolCallCancellation</a>, <a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerToolCall.html">LiveServerToolCall</a></div>
+      </span>
+      <div id="subclasses-direct-summary">
+        <div class="devsite-table-wrapper">
+          <table class="responsive">
+            <colgroup>
+              <col width="40%">
+              <col>
+            </colgroup>
+            <tbody class="list">
+              <tr>
+                <td><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerContent.html">LiveServerContent</a></code></td>
+                <td>
+                  <p>Incremental server update generated by the model in response to client messages.</p>
+                </td>
+              </tr>
+              <tr>
+                <td><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerSetupComplete.html">LiveServerSetupComplete</a></code></td>
+                <td>
+                  <p>The model is ready to receive client messages.</p>
+                </td>
+              </tr>
+              <tr>
+                <td><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerToolCallCancellation.html">LiveServerToolCallCancellation</a></code></td>
+                <td>
+                  <p>Notification for the client to cancel a previous function call from <code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerToolCall.html">LiveServerToolCall</a></code>.</p>
+                </td>
+              </tr>
+              <tr>
+                <td><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerToolCall.html">LiveServerToolCall</a></code></td>
+                <td>
+                  <p>Request for the client to execute the provided <code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerToolCall.html#functionCalls()">functionCalls</a></code>.</p>
+                </td>
+              </tr>
+            </tbody>
+          </table>
+        </div>
+      </div>
+</devsite-expandable>    </div>
+    <hr>
+    <p>Parent interface for responses from the model during live interactions.</p>
+    <div class="devsite-table-wrapper">
+      <table class="responsive">
+        <colgroup>
+          <col width="40%">
+          <col>
+        </colgroup>
+        <thead>
+          <tr>
+            <th colspan="100%">See also</th>
+          </tr>
+        </thead>
+        <tbody class="list">
+          <tr>
+            <td><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerContent.html">LiveServerContent</a></code></td>
+            <td></td>
+          </tr>
+          <tr>
+            <td><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerToolCall.html">LiveServerToolCall</a></code></td>
+            <td></td>
+          </tr>
+          <tr>
+            <td><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerToolCallCancellation.html">LiveServerToolCallCancellation</a></code></td>
+            <td></td>
+          </tr>
+          <tr>
+            <td><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerSetupComplete.html">LiveServerSetupComplete</a></code></td>
+            <td></td>
+          </tr>
+        </tbody>
+      </table>
+    </div>
+  </body>
+</html>
+
--- /home/runner/diff/original/firebase-kotlindoc/kotlin/com/google/firebase/ai/type/LiveServerSetupComplete.html	1970-01-01 00:00:00.000000000 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/kotlin/com/google/firebase/ai/type/LiveServerSetupComplete.html	2025-04-30 16:58:48.515286547 +0000
@@ -0,0 +1,45 @@
+<html devsite="true">
+  <head>
+    <title>LiveServerSetupComplete</title>
+{% setvar book_path %}/_book.yaml{% endsetvar %}
+{% include "docs/reference/kotlin/_reference-head-tags.html" %}
+  </head>
+  <body>
+    <div id="metadata-info-block"></div>
+    <h1>LiveServerSetupComplete</h1>
+    <p>
+      <pre>@<a href="/docs/reference/kotlin/com/google/firebase/ai/type/PublicPreviewAPI.html">PublicPreviewAPI</a><br>class <a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerSetupComplete.html">LiveServerSetupComplete</a> : <a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerMessage.html">LiveServerMessage</a></pre>
+    </p>
+    <hr>
+    <p>The model is ready to receive client messages.</p>
+    <h2>Summary</h2>
+    <div class="devsite-table-wrapper">
+      <table class="responsive">
+        <colgroup>
+          <col width="40%">
+          <col>
+        </colgroup>
+        <thead>
+          <tr>
+            <th colspan="100%"><h3>Public constructors</h3></th>
+          </tr>
+        </thead>
+        <tbody class="list">
+          <tr>
+            <td>
+              <div><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerSetupComplete.html#LiveServerSetupComplete()">LiveServerSetupComplete</a>()</code></div>
+            </td>
+          </tr>
+        </tbody>
+      </table>
+    </div>
+    <div class="list">
+      <h2>Public constructors</h2>
+      <div class="api-item"><a name="LiveServerSetupComplete--"></a><a name="liveserversetupcomplete"></a>
+        <h3 class="api-name" id="LiveServerSetupComplete()">LiveServerSetupComplete</h3>
+        <pre class="api-signature no-pretty-print"><a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerSetupComplete.html#LiveServerSetupComplete()">LiveServerSetupComplete</a>()</pre>
+      </div>
+    </div>
+  </body>
+</html>
+
--- /home/runner/diff/original/firebase-kotlindoc/kotlin/com/google/firebase/ai/type/LiveServerToolCall.html	1970-01-01 00:00:00.000000000 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/kotlin/com/google/firebase/ai/type/LiveServerToolCall.html	2025-04-30 16:58:48.504286574 +0000
@@ -0,0 +1,76 @@
+<html devsite="true">
+  <head>
+    <title>LiveServerToolCall</title>
+{% setvar book_path %}/_book.yaml{% endsetvar %}
+{% include "docs/reference/kotlin/_reference-head-tags.html" %}
+  </head>
+  <body>
+    <div id="metadata-info-block"></div>
+    <h1>LiveServerToolCall</h1>
+    <p>
+      <pre>@<a href="/docs/reference/kotlin/com/google/firebase/ai/type/PublicPreviewAPI.html">PublicPreviewAPI</a><br>class <a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerToolCall.html">LiveServerToolCall</a> : <a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerMessage.html">LiveServerMessage</a></pre>
+    </p>
+    <hr>
+    <p>Request for the client to execute the provided <code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerToolCall.html#functionCalls()">functionCalls</a></code>.</p>
+    <p>The client should return matching <code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/FunctionResponsePart.html">FunctionResponsePart</a></code>, where the <code>id</code> fields correspond to individual <code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/FunctionCallPart.html">FunctionCallPart</a></code>s.</p>
+    <h2>Summary</h2>
+    <div class="devsite-table-wrapper">
+      <table class="responsive">
+        <colgroup>
+          <col width="40%">
+          <col>
+        </colgroup>
+        <thead>
+          <tr>
+            <th colspan="100%"><h3>Public constructors</h3></th>
+          </tr>
+        </thead>
+        <tbody class="list">
+          <tr>
+            <td>
+              <div><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerToolCall.html#LiveServerToolCall(kotlin.collections.List)">LiveServerToolCall</a>(functionCalls:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html">List</a>&lt;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/FunctionCallPart.html">FunctionCallPart</a>&gt;)</code></div>
+            </td>
+          </tr>
+        </tbody>
+      </table>
+    </div>
+    <div class="devsite-table-wrapper">
+      <table class="responsive">
+        <colgroup>
+          <col width="40%">
+          <col>
+        </colgroup>
+        <thead>
+          <tr>
+            <th colspan="100%"><h3>Public properties</h3></th>
+          </tr>
+        </thead>
+        <tbody class="list">
+          <tr>
+            <td><code><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html">List</a>&lt;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/FunctionCallPart.html">FunctionCallPart</a>&gt;</code></td>
+            <td>
+              <div><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerToolCall.html#functionCalls()">functionCalls</a></code></div>
+              <p>A list of <code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/FunctionCallPart.html">FunctionCallPart</a></code> to run and return responses for.</p>
+            </td>
+          </tr>
+        </tbody>
+      </table>
+    </div>
+    <div class="list">
+      <h2>Public constructors</h2>
+      <div class="api-item"><a name="LiveServerToolCall-kotlin.collections.List-"></a><a name="liveservertoolcall"></a>
+        <h3 class="api-name" id="LiveServerToolCall(kotlin.collections.List)">LiveServerToolCall</h3>
+        <pre class="api-signature no-pretty-print"><a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerToolCall.html#LiveServerToolCall(kotlin.collections.List)">LiveServerToolCall</a>(functionCalls:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html">List</a>&lt;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/FunctionCallPart.html">FunctionCallPart</a>&gt;)</pre>
+      </div>
+    </div>
+    <div class="list">
+      <h2>Public properties</h2>
+      <div class="api-item"><a name="getFunctionCalls()"></a><a name="setFunctionCalls()"></a><a name="getFunctionCalls--"></a><a name="setFunctionCalls--"></a>
+        <h3 class="api-name" id="functionCalls()">functionCalls</h3>
+        <pre class="api-signature no-pretty-print">val&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerToolCall.html#functionCalls()">functionCalls</a>:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html">List</a>&lt;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/FunctionCallPart.html">FunctionCallPart</a>&gt;</pre>
+        <p>A list of <code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/FunctionCallPart.html">FunctionCallPart</a></code> to run and return responses for.</p>
+      </div>
+    </div>
+  </body>
+</html>
+
--- /home/runner/diff/original/firebase-kotlindoc/kotlin/com/google/firebase/ai/type/LiveServerToolCallCancellation.html	1970-01-01 00:00:00.000000000 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/kotlin/com/google/firebase/ai/type/LiveServerToolCallCancellation.html	2025-04-30 16:58:48.507286566 +0000
@@ -0,0 +1,76 @@
+<html devsite="true">
+  <head>
+    <title>LiveServerToolCallCancellation</title>
+{% setvar book_path %}/_book.yaml{% endsetvar %}
+{% include "docs/reference/kotlin/_reference-head-tags.html" %}
+  </head>
+  <body>
+    <div id="metadata-info-block"></div>
+    <h1>LiveServerToolCallCancellation</h1>
+    <p>
+      <pre>@<a href="/docs/reference/kotlin/com/google/firebase/ai/type/PublicPreviewAPI.html">PublicPreviewAPI</a><br>class <a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerToolCallCancellation.html">LiveServerToolCallCancellation</a> : <a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerMessage.html">LiveServerMessage</a></pre>
+    </p>
+    <hr>
+    <p>Notification for the client to cancel a previous function call from <code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerToolCall.html">LiveServerToolCall</a></code>.</p>
+    <p>You do not need to send <code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/FunctionResponsePart.html">FunctionResponsePart</a></code>s for the cancelled <code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/FunctionCallPart.html">FunctionCallPart</a></code>s.</p>
+    <h2>Summary</h2>
+    <div class="devsite-table-wrapper">
+      <table class="responsive">
+        <colgroup>
+          <col width="40%">
+          <col>
+        </colgroup>
+        <thead>
+          <tr>
+            <th colspan="100%"><h3>Public constructors</h3></th>
+          </tr>
+        </thead>
+        <tbody class="list">
+          <tr>
+            <td>
+              <div><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerToolCallCancellation.html#LiveServerToolCallCancellation(kotlin.collections.List)">LiveServerToolCallCancellation</a>(functionIds:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html">List</a>&lt;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html">String</a>&gt;)</code></div>
+            </td>
+          </tr>
+        </tbody>
+      </table>
+    </div>
+    <div class="devsite-table-wrapper">
+      <table class="responsive">
+        <colgroup>
+          <col width="40%">
+          <col>
+        </colgroup>
+        <thead>
+          <tr>
+            <th colspan="100%"><h3>Public properties</h3></th>
+          </tr>
+        </thead>
+        <tbody class="list">
+          <tr>
+            <td><code><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html">List</a>&lt;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html">String</a>&gt;</code></td>
+            <td>
+              <div><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerToolCallCancellation.html#functionIds()">functionIds</a></code></div>
+              <p>A list of <code>id</code>s matching the <code>id</code> provided in a previous <code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerToolCall.html">LiveServerToolCall</a></code>, where only the provided <code>id</code>s should be cancelled.</p>
+            </td>
+          </tr>
+        </tbody>
+      </table>
+    </div>
+    <div class="list">
+      <h2>Public constructors</h2>
+      <div class="api-item"><a name="LiveServerToolCallCancellation-kotlin.collections.List-"></a><a name="liveservertoolcallcancellation"></a>
+        <h3 class="api-name" id="LiveServerToolCallCancellation(kotlin.collections.List)">LiveServerToolCallCancellation</h3>
+        <pre class="api-signature no-pretty-print"><a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerToolCallCancellation.html#LiveServerToolCallCancellation(kotlin.collections.List)">LiveServerToolCallCancellation</a>(functionIds:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html">List</a>&lt;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html">String</a>&gt;)</pre>
+      </div>
+    </div>
+    <div class="list">
+      <h2>Public properties</h2>
+      <div class="api-item"><a name="getFunctionIds()"></a><a name="setFunctionIds()"></a><a name="getFunctionIds--"></a><a name="setFunctionIds--"></a>
+        <h3 class="api-name" id="functionIds()">functionIds</h3>
+        <pre class="api-signature no-pretty-print">val&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerToolCallCancellation.html#functionIds()">functionIds</a>:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html">List</a>&lt;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html">String</a>&gt;</pre>
+        <p>A list of <code>id</code>s matching the <code>id</code> provided in a previous <code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerToolCall.html">LiveServerToolCall</a></code>, where only the provided <code>id</code>s should be cancelled.</p>
+      </div>
+    </div>
+  </body>
+</html>
+
--- /home/runner/diff/original/firebase-kotlindoc/kotlin/com/google/firebase/ai/type/LiveSession.html	2025-04-30 17:02:10.583740659 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/kotlin/com/google/firebase/ai/type/LiveSession.html	2025-04-30 16:58:48.515286547 +0000
@@ -33,7 +33,7 @@
             </td>
           </tr>
           <tr>
-            <td><code><a href="https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-flow/index.html">Flow</a>&lt;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveContentResponse.html">LiveContentResponse</a>&gt;</code></td>
+            <td><code><a href="https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-flow/index.html">Flow</a>&lt;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerMessage.html">LiveServerMessage</a>&gt;</code></td>
             <td>
               <div><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveSession.html#receive()">receive</a>()</code></div>
               <p>Receives responses from the model for both streaming and standard requests.</p>
@@ -120,7 +120,7 @@
       </div>
       <div class="api-item"><a name="receive--"></a><a name="receive"></a>
         <h3 class="api-name" id="receive()">receive</h3>
-        <pre class="api-signature no-pretty-print">fun&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveSession.html#receive()">receive</a>():&nbsp;<a href="https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-flow/index.html">Flow</a>&lt;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveContentResponse.html">LiveContentResponse</a>&gt;</pre>
+        <pre class="api-signature no-pretty-print">fun&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveSession.html#receive()">receive</a>():&nbsp;<a href="https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-flow/index.html">Flow</a>&lt;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerMessage.html">LiveServerMessage</a>&gt;</pre>
         <p>Receives responses from the model for both streaming and standard requests.</p>
         <p>Call <code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveSession.html#close()">close</a></code> to stop receiving responses from the model.</p>
         <div class="devsite-table-wrapper">
@@ -136,9 +136,9 @@
             </thead>
             <tbody class="list">
               <tr>
-                <td><code><a href="https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-flow/index.html">Flow</a>&lt;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveContentResponse.html">LiveContentResponse</a>&gt;</code></td>
+                <td><code><a href="https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-flow/index.html">Flow</a>&lt;<a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerMessage.html">LiveServerMessage</a>&gt;</code></td>
                 <td>
-                  <p>A <code><a href="https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-flow/index.html">Flow</a></code> which will emit <code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveContentResponse.html">LiveContentResponse</a></code> from the model.</p>
+                  <p>A <code><a href="https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-flow/index.html">Flow</a></code> which will emit <code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerMessage.html">LiveServerMessage</a></code> from the model.</p>
                 </td>
               </tr>
             </tbody>
--- /home/runner/diff/original/firebase-kotlindoc/kotlin/com/google/firebase/ai/type/package-summary.html	2025-04-30 17:02:10.566740705 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/kotlin/com/google/firebase/ai/type/package-summary.html	2025-04-30 16:58:48.506286569 +0000
@@ -15,6 +15,12 @@
         </colgroup>
         <tbody class="list">
           <tr>
+            <td><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerMessage.html">LiveServerMessage</a></code></td>
+            <td>
+              <p>Parent interface for responses from the model during live interactions.</p>
+            </td>
+          </tr>
+          <tr>
             <td><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/Part.html">Part</a></code></td>
             <td>
               <p>Interface representing data sent to and received from requests.</p>
@@ -234,27 +240,39 @@
             </td>
           </tr>
           <tr>
-            <td><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveContentResponse.html">LiveContentResponse</a></code></td>
+            <td><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveGenerationConfig.html">LiveGenerationConfig</a></code></td>
             <td>
-              <p>Represents the response from the model for live content updates.</p>
+              <p>Configuration parameters to use for live content generation.</p>
             </td>
           </tr>
           <tr>
-            <td><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveContentResponse.Status.html">LiveContentResponse.Status</a></code></td>
+            <td><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveGenerationConfig.Builder.html">LiveGenerationConfig.Builder</a></code></td>
             <td>
-              <p>Represents the status of a <code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveContentResponse.html">LiveContentResponse</a></code>, within a single interaction.</p>
+              <p>Builder for creating a <code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveGenerationConfig.html">LiveGenerationConfig</a></code>.</p>
             </td>
           </tr>
           <tr>
-            <td><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveGenerationConfig.html">LiveGenerationConfig</a></code></td>
+            <td><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerContent.html">LiveServerContent</a></code></td>
             <td>
-              <p>Configuration parameters to use for live content generation.</p>
+              <p>Incremental server update generated by the model in response to client messages.</p>
             </td>
           </tr>
           <tr>
-            <td><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveGenerationConfig.Builder.html">LiveGenerationConfig.Builder</a></code></td>
+            <td><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerSetupComplete.html">LiveServerSetupComplete</a></code></td>
             <td>
-              <p>Builder for creating a <code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveGenerationConfig.html">LiveGenerationConfig</a></code>.</p>
+              <p>The model is ready to receive client messages.</p>
+            </td>
+          </tr>
+          <tr>
+            <td><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerToolCall.html">LiveServerToolCall</a></code></td>
+            <td>
+              <p>Request for the client to execute the provided <code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerToolCall.html#functionCalls()">functionCalls</a></code>.</p>
+            </td>
+          </tr>
+          <tr>
+            <td><code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerToolCallCancellation.html">LiveServerToolCallCancellation</a></code></td>
+            <td>
+              <p>Notification for the client to cancel a previous function call from <code><a href="/docs/reference/kotlin/com/google/firebase/ai/type/LiveServerToolCall.html">LiveServerToolCall</a></code>.</p>
             </td>
           </tr>
           <tr>

Copy link
Contributor

Vertex AI Mock Responses Check ⚠️

A newer major version of the mock responses for Vertex AI unit tests is available. update_responses.sh should be updated to clone the latest version of the responses: v10.0

@daymxn daymxn enabled auto-merge (squash) April 24, 2025 21:07
@google-oss-bot
Copy link
Contributor

google-oss-bot commented Apr 24, 2025

Coverage Report 1

Affected Products

No changes between base commit (7b7e11e) and merge commit (bfd745f).

Test Logs

  1. https://storage.googleapis.com/firebase-sdk-metric-reports/63NpY7tkvJ.html

Copy link
Contributor

github-actions bot commented Apr 24, 2025

Test Results

 22 files   -  18   22 suites   - 18   14s ⏱️ -14s
 98 tests  -  86   98 ✅  -  86  0 💤 ±0  0 ❌ ±0 
196 runs   - 172  196 ✅  - 172  0 💤 ±0  0 ❌ ±0 

Results for commit f1c15d8. ± Comparison against base commit 7b7e11e.

This pull request removes 86 tests.
com.google.firebase.vertexai.GenerativeModelTesting ‑ exception thrown when using invalid location
com.google.firebase.vertexai.GenerativeModelTesting ‑ system calling in request
com.google.firebase.vertexai.SchemaTests ‑ basic schema declaration
com.google.firebase.vertexai.SchemaTests ‑ full schema declaration
com.google.firebase.vertexai.SerializationTests ‑ test Candidate serialization as Json
com.google.firebase.vertexai.SerializationTests ‑ test GenerateContentResponse serialization as Json
com.google.firebase.vertexai.SerializationTests ‑ test Schema serialization as Json
com.google.firebase.vertexai.SerializationTests ‑ test countTokensResponse serialization as Json
com.google.firebase.vertexai.SerializationTests ‑ test modalityTokenCount serialization as Json
com.google.firebase.vertexai.VertexAIStreamingSnapshotTests ‑ citation parsed correctly
…

♻️ This comment has been updated with latest results.

@google-oss-bot
Copy link
Contributor

The public api surface has changed for the subproject firebase-vertexai:
error: Method com.google.firebase.vertexai.java.LiveSessionFutures.receive has changed return type from org.reactivestreams.Publisher<com.google.firebase.vertexai.type.LiveContentResponse> to org.reactivestreams.Publisher<com.google.firebase.vertexai.type.LiveServerMessage> [ChangedType]
error: Added constructor com.google.firebase.vertexai.type.FunctionCallPart(String,java.util.Map<java.lang.String,? extends kotlinx.serialization.json.JsonElement>,String) [AddedMethod]
error: Added method com.google.firebase.vertexai.type.FunctionCallPart.getId() [AddedMethod]
error: Added constructor com.google.firebase.vertexai.type.FunctionResponsePart(String,kotlinx.serialization.json.JsonObject,String) [AddedMethod]
error: Added method com.google.firebase.vertexai.type.FunctionResponsePart.getId() [AddedMethod]
error: Removed class com.google.firebase.vertexai.type.LiveContentResponse [RemovedClass]
error: Added class com.google.firebase.vertexai.type.LiveServerContent [AddedClass]
error: Added class com.google.firebase.vertexai.type.LiveServerSetupComplete [AddedClass]
error: Added class com.google.firebase.vertexai.type.LiveServerToolCall [AddedClass]
error: Added class com.google.firebase.vertexai.type.LiveServerToolCallCancellation [AddedClass]
error: Method com.google.firebase.vertexai.type.LiveSession.receive has changed return type from kotlinx.coroutines.flow.Flow<com.google.firebase.vertexai.type.LiveContentResponse> to kotlinx.coroutines.flow.Flow<com.google.firebase.vertexai.type.LiveServerMessage> [ChangedType]

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.

1 similar comment
@google-oss-bot
Copy link
Contributor

The public api surface has changed for the subproject firebase-vertexai:
error: Method com.google.firebase.vertexai.java.LiveSessionFutures.receive has changed return type from org.reactivestreams.Publisher<com.google.firebase.vertexai.type.LiveContentResponse> to org.reactivestreams.Publisher<com.google.firebase.vertexai.type.LiveServerMessage> [ChangedType]
error: Added constructor com.google.firebase.vertexai.type.FunctionCallPart(String,java.util.Map<java.lang.String,? extends kotlinx.serialization.json.JsonElement>,String) [AddedMethod]
error: Added method com.google.firebase.vertexai.type.FunctionCallPart.getId() [AddedMethod]
error: Added constructor com.google.firebase.vertexai.type.FunctionResponsePart(String,kotlinx.serialization.json.JsonObject,String) [AddedMethod]
error: Added method com.google.firebase.vertexai.type.FunctionResponsePart.getId() [AddedMethod]
error: Removed class com.google.firebase.vertexai.type.LiveContentResponse [RemovedClass]
error: Added class com.google.firebase.vertexai.type.LiveServerContent [AddedClass]
error: Added class com.google.firebase.vertexai.type.LiveServerSetupComplete [AddedClass]
error: Added class com.google.firebase.vertexai.type.LiveServerToolCall [AddedClass]
error: Added class com.google.firebase.vertexai.type.LiveServerToolCallCancellation [AddedClass]
error: Method com.google.firebase.vertexai.type.LiveSession.receive has changed return type from kotlinx.coroutines.flow.Flow<com.google.firebase.vertexai.type.LiveContentResponse> to kotlinx.coroutines.flow.Flow<com.google.firebase.vertexai.type.LiveServerMessage> [ChangedType]

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.

@google-oss-bot
Copy link
Contributor

google-oss-bot commented Apr 24, 2025

Size Report 1

Affected Products

  • firebase-ai

    TypeBase (7b7e11e)Merge (bfd745f)Diff
    aar804 kB816 kB+12.1 kB (+1.5%)
    apk (aggressive)1.54 MB1.55 MB+5.16 kB (+0.3%)
    apk (release)9.51 MB9.51 MB+6.47 kB (+0.1%)

Test Logs

  1. https://storage.googleapis.com/firebase-sdk-metric-reports/ddqmoWil4h.html

@rlazo
Copy link
Collaborator

rlazo commented Apr 25, 2025

Be aware of #6907 and the need to make the changes to the new files

@daymxn daymxn disabled auto-merge April 25, 2025 16:19
@daymxn daymxn force-pushed the daymon-align-bidi-proto branch from 0f7afe5 to ec5e96e Compare April 29, 2025 16:31
@daymxn
Copy link
Member Author

daymxn commented Apr 29, 2025

Be aware of #6907 and the need to make the changes to the new files

I've updated the PR now that it's in

@daymxn daymxn enabled auto-merge (squash) April 29, 2025 16:32
@rlazo rlazo disabled auto-merge April 30, 2025 16:53
@daymxn daymxn enabled auto-merge (squash) April 30, 2025 16:55
@daymxn daymxn merged commit 2b23887 into main Apr 30, 2025
30 of 31 checks passed
@daymxn daymxn deleted the daymon-align-bidi-proto branch April 30, 2025 17:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants