@@ -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