Skip to content

Commit eb232ee

Browse files
google-genai-botcopybara-github
authored andcommitted
fix: runAsync handles the async response of sessionService.appendEvent
PiperOrigin-RevId: 798203450
1 parent 62eb2ec commit eb232ee

File tree

1 file changed

+20
-10
lines changed

1 file changed

+20
-10
lines changed

core/src/main/java/com/google/adk/runner/Runner.java

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ public BaseSessionService sessionService() {
113113
*
114114
* @throws IllegalArgumentException if message has no parts.
115115
*/
116-
private void appendNewMessageToSession(
116+
private Single<Event> appendNewMessageToSession(
117117
Session session,
118118
Content newMessage,
119119
InvocationContext invocationContext,
@@ -153,7 +153,7 @@ private void appendNewMessageToSession(
153153
.author("user")
154154
.content(Optional.of(newMessage))
155155
.build();
156-
this.sessionService.appendEvent(session, event);
156+
return this.sessionService.appendEvent(session, event);
157157
}
158158

159159
/**
@@ -217,14 +217,24 @@ public Flowable<Event> runAsync(Session session, Content newMessage, RunConfig r
217217
/* liveRequestQueue= */ Optional.empty(),
218218
runConfig);
219219

220-
if (newMessage != null) {
221-
appendNewMessageToSession(
222-
sess, newMessage, invocationContext, runConfig.saveInputBlobsAsArtifacts());
223-
}
224-
225-
invocationContext.agent(this.findAgentToRun(sess, rootAgent));
226-
Flowable<Event> events = invocationContext.agent().runAsync(invocationContext);
227-
return events.doOnNext(event -> this.sessionService.appendEvent(sess, event));
220+
Single<Event> singleEvent =
221+
(newMessage != null)
222+
? appendNewMessageToSession(
223+
sess,
224+
newMessage,
225+
invocationContext,
226+
runConfig.saveInputBlobsAsArtifacts())
227+
: Single.just(null);
228+
return singleEvent.flatMapPublisher(
229+
ignored -> {
230+
invocationContext.agent(this.findAgentToRun(sess, rootAgent));
231+
return invocationContext
232+
.agent()
233+
.runAsync(invocationContext)
234+
.flatMap(
235+
agentEvent ->
236+
this.sessionService.appendEvent(sess, agentEvent).toFlowable());
237+
});
228238
})
229239
.doOnError(
230240
throwable -> {

0 commit comments

Comments
 (0)