@@ -64,6 +64,7 @@ import com.google.adk.kt.types.GenerationConfigRoutingConfig as KtRoutingConfig
6464import com.google.adk.kt.types.GenerationConfigRoutingConfigManualRoutingMode as KtManualRoutingMode
6565import com.google.adk.kt.types.GoogleMaps as KtGoogleMaps
6666import com.google.adk.kt.types.GoogleSearch as KtGoogleSearch
67+ import com.google.adk.kt.types.GroundingMetadata as KtGroundingMetadata
6768import com.google.adk.kt.types.HarmBlockMethod as KtHarmBlockMethod
6869import com.google.adk.kt.types.HarmBlockThreshold as KtHarmBlockThreshold
6970import com.google.adk.kt.types.HarmCategory as KtHarmCategory
@@ -4552,6 +4553,25 @@ class KtRunnerInteropTest {
45524553 assertEquals(" places/abc" , maps.placeId().getOrNull(), " maps chunk placeId" )
45534554 }
45544555
4556+ @Test
4557+ fun asKtSessionService_groundedEventWithoutImageSearchQueries_isStored () = runBlocking {
4558+ // Kotlin's Gemini leaves imageSearchQueries unset on a Google Search answer.
4559+ val sessions = JavaAdkToKt .asKtSessionService(JavaInMemorySessionService ())
4560+ val key = KtSessionKey (" app" , " u" , " s" )
4561+ val grounding = KtGroundingMetadata (webSearchQueries = listOf (" tallest building" ))
4562+
4563+ val unused =
4564+ sessions.appendEvent(
4565+ sessions.createSession(key),
4566+ KtEvent (author = " model" , groundingMetadata = grounding),
4567+ )
4568+
4569+ assertEquals(
4570+ grounding,
4571+ assertNotNull(sessions.getSession(key)).events.single().groundingMetadata,
4572+ )
4573+ }
4574+
45554575 @Test
45564576 fun asKtSessionService_listEvents_carriesNextPageToken () = runBlocking {
45574577 // The listEvents bridge must carry nextPageToken, or a paged Java service's continuation token
0 commit comments