40 lines
1.1 KiB
Java
40 lines
1.1 KiB
Java
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 数据帧。
|
|
*
|
|
* <p>编码器无可变状态,可安全跨请求复用。</p>
|
|
*/
|
|
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";
|
|
}
|
|
}
|