package com.easyagents.agui; import io.agentscope.core.agui.AguiException; import io.agentscope.core.util.JsonException; import io.agentscope.core.util.JsonUtils; /** * 将 AG-UI 事件编码为 JSON 或 SSE 数据帧。 * *
编码器无可变状态,可安全跨请求复用。
*/ public final class AguiProtocolEventEncoder { /** * 编码为 JSON。 * * @param event AG-UI 官方事件或补充标准事件 * @return JSON 文本 * @throws AguiException.EncodingException 序列化失败时抛出 */ public String encodeToJson(Object event) { try { return JsonUtils.getJsonCodec().toJson(event); } catch (JsonException exception) { throw new AguiException.EncodingException("Failed to encode AG-UI event", exception); } } /** * 编码为 SSE data 帧。 * * @param event AG-UI 官方事件或补充标准事件 * @return 完整 SSE data 帧 * @throws AguiException.EncodingException 序列化失败时抛出 */ public String encode(Object event) { return "data: " + encodeToJson(event) + "\n\n"; } }