package com.easyagents.agui; import io.agentscope.core.agui.event.AguiEvent; import io.agentscope.core.agui.model.AguiMessage; import org.junit.Assert; import org.junit.Test; import java.util.List; /** * {@link AguiProtocolEventEncoder} 的线级协议测试。 */ public class AguiProtocolEventEncoderTest { private final AguiProtocolEventEncoder encoder = new AguiProtocolEventEncoder(); /** * 验证 AgentScope 官方事件保留 AG-UI type 字段。 */ @Test public void shouldEncodeOfficialEvent() { String json = encoder.encodeToJson(new AguiEvent.RunStarted("thread-1", "run-1")); Assert.assertTrue(json.contains("\"type\":\"RUN_STARTED\"")); Assert.assertTrue(json.contains("\"threadId\":\"thread-1\"")); } /** * 验证补充的失败和消息快照事件使用现代 AG-UI 标准事件名。 */ @Test public void shouldEncodeExtendedStandardEvents() { String error = encoder.encodeToJson( new AguiExtendedEvent.RunError("thread-1", "run-1", "boom", "FAILED")); String snapshot = encoder.encodeToJson(new AguiExtendedEvent.MessagesSnapshot( "thread-1", "run-1", List.of(AguiMessage.userMessage("message-1", "hello")))); Assert.assertTrue(error.contains("\"type\":\"RUN_ERROR\"")); Assert.assertTrue(error.contains("\"code\":\"FAILED\"")); Assert.assertTrue(snapshot.contains("\"type\":\"MESSAGES_SNAPSHOT\"")); Assert.assertTrue(snapshot.contains("\"role\":\"user\"")); } }