Skip to content

Commit 8881d62

Browse files
committed
test(appserver): define turn completion status contract
1 parent 36fb6ad commit 8881d62

1 file changed

Lines changed: 24 additions & 0 deletions

File tree

src/test/java/io/github/easy4j/codex/appserver/CodexAppServerTurnTest.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -415,6 +415,30 @@ void shouldFallBackToTurnCompletedMessageWithoutItems() {
415415
assertEquals("fallback text", turn.future().join().getContent());
416416
}
417417

418+
@Test
419+
void shouldPreserveTurnCompletionStatus() {
420+
CodexAppServerTurn turn = newTurn(AppServerTurnRequest.builder().prompt("hi").build(),
421+
new ThreadMappingCache(10));
422+
423+
handshake(turn);
424+
turn.handleFrame("{\"jsonrpc\":\"2.0\",\"id\":2,\"result\":{\"thread\":{\"id\":\"th_1\"}}}");
425+
turn.handleFrame("{\"method\":\"turn/completed\",\"params\":{\"turn\":{\"status\":\"completed\"}}}");
426+
427+
assertEquals("completed", turn.future().join().getFinishReason());
428+
}
429+
430+
@Test
431+
void shouldUseCompletedFinishReasonWhenServerOmitsStatus() {
432+
CodexAppServerTurn turn = newTurn(AppServerTurnRequest.builder().prompt("hi").build(),
433+
new ThreadMappingCache(10));
434+
435+
handshake(turn);
436+
turn.handleFrame("{\"jsonrpc\":\"2.0\",\"id\":2,\"result\":{\"thread\":{\"id\":\"th_1\"}}}");
437+
turn.handleFrame("{\"method\":\"turn/completed\",\"params\":{}}");
438+
439+
assertEquals("completed", turn.future().join().getFinishReason());
440+
}
441+
418442
@Test
419443
void shouldRememberThreadMappingOnTurnCompleted() {
420444
ThreadMappingCache cache = new ThreadMappingCache(10);

0 commit comments

Comments
 (0)