Skip to content

Commit d6e81f6

Browse files
committed
Fix null Event ID in adk_request_confirmation events
Fixes #871 Events generated for tool confirmation requests (adk_request_confirmation) were being created with null IDs because the generateRequestConfirmationEvent() method was missing the .id(Event.generateEventId()) call in the Event builder. This commit: - Adds .id(Event.generateEventId()) to generateRequestConfirmationEvent() in Functions.java to ensure all confirmation request events have non-null UUIDs - Adds regression test generateRequestConfirmationEvent_generatesNonNullEventId() to FunctionsTest.java to verify the fix
1 parent 0b5ac92 commit d6e81f6

2 files changed

Lines changed: 52 additions & 0 deletions

File tree

core/src/main/java/com/google/adk/flows/llmflows/Functions.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -686,6 +686,7 @@ public static Optional<Event> generateRequestConfirmationEvent(
686686

687687
return Optional.of(
688688
Event.builder()
689+
.id(Event.generateEventId())
689690
.invocationId(invocationContext.invocationId())
690691
.author(invocationContext.agent().name())
691692
.branch(invocationContext.branch())

core/src/test/java/com/google/adk/flows/llmflows/FunctionsTest.java

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@
2626
import com.google.adk.agents.RunConfig;
2727
import com.google.adk.agents.RunConfig.ToolExecutionMode;
2828
import com.google.adk.events.Event;
29+
import com.google.adk.events.EventActions;
30+
import com.google.adk.events.ToolConfirmation;
2931
import com.google.adk.testing.TestUtils;
3032
import com.google.common.collect.ImmutableList;
3133
import com.google.common.collect.ImmutableMap;
@@ -34,6 +36,7 @@
3436
import com.google.genai.types.FunctionResponse;
3537
import com.google.genai.types.Part;
3638
import java.util.Optional;
39+
import java.util.concurrent.ConcurrentHashMap;
3740
import org.junit.Test;
3841
import org.junit.runner.RunWith;
3942
import org.junit.runners.JUnit4;
@@ -395,4 +398,52 @@ public void getAskUserConfirmationFunctionCalls_eventWithConfirmationFunctionCal
395398
ImmutableList<FunctionCall> result = Functions.getAskUserConfirmationFunctionCalls(event);
396399
assertThat(result).containsExactly(confirmationCall1, confirmationCall2);
397400
}
401+
402+
@Test
403+
public void generateRequestConfirmationEvent_generatesNonNullEventId() {
404+
InvocationContext invocationContext = createInvocationContext(createRootAgent());
405+
String functionCallId = "function_call_123";
406+
407+
// Create a function call event with a function call that has an ID
408+
Event functionCallEvent =
409+
Event.builder()
410+
.id("event1")
411+
.invocationId(invocationContext.invocationId())
412+
.author(invocationContext.agent().name())
413+
.content(
414+
Content.fromParts(
415+
Part.builder()
416+
.functionCall(
417+
FunctionCall.builder()
418+
.id(functionCallId)
419+
.name("some_tool")
420+
.args(ImmutableMap.of())
421+
.build())
422+
.build()))
423+
.build();
424+
425+
// Create a function response event with requestedToolConfirmations
426+
ConcurrentHashMap<String, ToolConfirmation> toolConfirmations = new ConcurrentHashMap<>();
427+
toolConfirmations.put(functionCallId, ToolConfirmation.builder().build());
428+
429+
EventActions actionsWithConfirmation =
430+
EventActions.builder().requestedToolConfirmations(toolConfirmations).build();
431+
432+
Event functionResponseEvent =
433+
Event.builder()
434+
.id("event2")
435+
.invocationId(invocationContext.invocationId())
436+
.author(invocationContext.agent().name())
437+
.content(Content.fromParts(Part.fromText("response")))
438+
.actions(actionsWithConfirmation)
439+
.build();
440+
441+
Optional<Event> result =
442+
Functions.generateRequestConfirmationEvent(
443+
invocationContext, functionCallEvent, functionResponseEvent);
444+
445+
assertThat(result).isPresent();
446+
assertThat(result.get().id()).isNotNull();
447+
assertThat(result.get().id()).isNotEmpty();
448+
}
398449
}

0 commit comments

Comments
 (0)