Skip to content

Commit 7c57a62

Browse files
committed
test(appserver): define listener event contract
1 parent 0436179 commit 7c57a62

1 file changed

Lines changed: 33 additions & 0 deletions

File tree

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

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -309,6 +309,39 @@ void shouldIgnoreUnknownRpcResponses() {
309309
}
310310

311311

312+
313+
@Test
314+
void shouldBridgeTurnAndDeltaEventsToListener() {
315+
List<String> events = new ArrayList<>();
316+
CodexAppServerListener listener = new CodexAppServerListener() {
317+
@Override
318+
public void onTurnStarted(String turnId) {
319+
events.add("turn:" + turnId);
320+
}
321+
322+
@Override
323+
public void onTextDelta(String delta) {
324+
events.add("delta:" + delta);
325+
}
326+
327+
@Override
328+
public void onItemCompleted(String itemType, String content) {
329+
events.add("item:" + itemType + ":" + content);
330+
}
331+
};
332+
CodexAppServerTurn turn = newTurn(
333+
AppServerTurnRequest.builder().prompt("hi").listener(listener).build(),
334+
new ThreadMappingCache(10));
335+
336+
handshake(turn);
337+
turn.handleFrame("{\"jsonrpc\":\"2.0\",\"id\":2,\"result\":{\"thread\":{\"id\":\"th_1\"}}}");
338+
turn.handleFrame("{\"method\":\"turn/started\",\"params\":{\"turnId\":\"turn_1\"}}");
339+
turn.handleFrame("{\"method\":\"item/agentMessage/delta\",\"params\":{\"itemId\":\"item_1\",\"delta\":\"\"}}");
340+
turn.handleFrame("{\"method\":\"item/completed\",\"params\":{\"item\":{\"id\":\"item_1\",\"type\":\"agentMessage\",\"text\":\"\"}}}");
341+
342+
assertEquals(List.of("turn:turn_1", "delta:你", "item:agentMessage:你"), events);
343+
}
344+
312345
@Test
313346
void shouldStreamRealAgentMessageDeltas() {
314347
List<String> deltas = new ArrayList<>();

0 commit comments

Comments
 (0)