@reinsjs / ui-agui
时间轴事件→ AG-UI 协议的事件。REINS并没有发明一个前端协议;这个包使任何AG-UI客户端(CopilotKit和朋友)都成为一个代理的工作UI。零运行时依赖;针对每个发出的事件进行验证 @ag-ui/core这是测试中的官方模式。
pnpm add @reinsjs/ui-agui
import { aguiEncoding } from "@reinsjs/ui-agui"
import { createAgentHandler } from "@reinsjs/server"
// `agentDefinition` is the AgentDefinition (loop config); with `createAgent()` that is `agent.definition`
export const POST = createAgentHandler(agentDefinition, { encode: aguiEncoding() })
雨伞 @reinsjs/agent 包已经使用 aguiEncoding() 的默认值 createAgent(...).handler.
映射
| 时间轴 | AG-UI |
|---|---|
运行start / result | RUN_STARTED, RUN_FINISHED (outcome: success 或者 interrupt 每个条目一个 Interruption,全 RunResult -包括已签署的 state ——在 result), RUN_ERROR |
model_text (+流增量) | TEXT_MESSAGE_START / _CONTENT / _END |
model_thinking | REASONING_* |
tool_call, tool_result | TOOL_CALL_START / _ARGS / _END, TOOL_CALL_RESULT |
user_message | MESSAGES_SNAPSHOT-兼容用户消息 |
其他的(system_note, compaction, approval_*, budget_usage, run_paused …) | CUSTOM 与 name =事件类型,事件为 value |
中断携带了UI需要响应它们的东西:一个 approval 有 toolCallId请求摘要和策略id;一个 subagent 中断(等待批准的嵌套代理)具有 metadata.childSessionId 再加上孩子自己的干扰——把决定退回去 sessionId: childSessionId.
mapEvent / AGUI_MAPPING 为希望在没有流编码器的情况下进行纯事件转换的主机导出。 @reinsjs/ui-agui/demo/index.html 是一个与对话的无依赖页面吗 @reinsjs/server 并渲染溪流; examples/minimal 服务于它。
文档
docs/系统全景图_模块盘点/ui-agui.md -在中文中,在存储库根。
MIT©2026 newate Limited