@@ -113,7 +113,7 @@ public BaseSessionService sessionService() {
113
113
*
114
114
* @throws IllegalArgumentException if message has no parts.
115
115
*/
116
- private void appendNewMessageToSession (
116
+ private Single < Event > appendNewMessageToSession (
117
117
Session session ,
118
118
Content newMessage ,
119
119
InvocationContext invocationContext ,
@@ -153,7 +153,7 @@ private void appendNewMessageToSession(
153
153
.author ("user" )
154
154
.content (Optional .of (newMessage ))
155
155
.build ();
156
- this .sessionService .appendEvent (session , event );
156
+ return this .sessionService .appendEvent (session , event );
157
157
}
158
158
159
159
/**
@@ -217,14 +217,24 @@ public Flowable<Event> runAsync(Session session, Content newMessage, RunConfig r
217
217
/* liveRequestQueue= */ Optional .empty (),
218
218
runConfig );
219
219
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
+ });
228
238
})
229
239
.doOnError (
230
240
throwable -> {
0 commit comments