|
38 | 38 | import io.reactivex.rxjava3.core.Flowable; |
39 | 39 | import io.reactivex.rxjava3.core.Maybe; |
40 | 40 | import io.reactivex.rxjava3.core.Single; |
| 41 | +import io.reactivex.rxjava3.core.Completable; |
41 | 42 | import java.util.ArrayList; |
42 | 43 | import java.util.Collections; |
43 | 44 | import java.util.List; |
@@ -83,7 +84,7 @@ public BaseSessionService sessionService() { |
83 | 84 | * |
84 | 85 | * @throws IllegalArgumentException if message has no parts. |
85 | 86 | */ |
86 | | - private void appendNewMessageToSession( |
| 87 | + private Completable appendNewMessageToSession( |
87 | 88 | Session session, |
88 | 89 | Content newMessage, |
89 | 90 | InvocationContext invocationContext, |
@@ -123,7 +124,7 @@ private void appendNewMessageToSession( |
123 | 124 | .author("user") |
124 | 125 | .content(Optional.of(newMessage)) |
125 | 126 | .build(); |
126 | | - this.sessionService.appendEvent(session, event); |
| 127 | + return this.sessionService.appendEvent(session, event).ignoreElement(); |
127 | 128 | } |
128 | 129 |
|
129 | 130 | /** |
@@ -190,14 +191,20 @@ public Flowable<Event> runAsync(Session session, Content newMessage, RunConfig r |
190 | 191 | newMessage, |
191 | 192 | runConfig); |
192 | 193 |
|
| 194 | + Completable newMessageCompletable = Completable.complete(); |
193 | 195 | if (newMessage != null) { |
194 | | - appendNewMessageToSession( |
195 | | - sess, newMessage, invocationContext, runConfig.saveInputBlobsAsArtifacts()); |
| 196 | + newMessageCompletable = |
| 197 | + appendNewMessageToSession( |
| 198 | + sess, |
| 199 | + newMessage, |
| 200 | + invocationContext, |
| 201 | + runConfig.saveInputBlobsAsArtifacts()); |
196 | 202 | } |
197 | 203 |
|
198 | 204 | invocationContext.agent(this.findAgentToRun(sess, rootAgent)); |
199 | 205 | Flowable<Event> events = invocationContext.agent().runAsync(invocationContext); |
200 | | - return events.doOnNext(event -> this.sessionService.appendEvent(sess, event)); |
| 206 | + return newMessageCompletable.andThen( |
| 207 | + events.concatMapSingle(event -> this.sessionService.appendEvent(sess, event))); |
201 | 208 | }) |
202 | 209 | .doOnError( |
203 | 210 | throwable -> { |
|
0 commit comments