feat: 支持 Agent 运行刷新恢复
- 解耦 Runtime 与浏览器 SSE 订阅并增加 Redis 游标日志 - 支持正式聊天与草稿试运行刷新重连和权威终态恢复 - 完善显式取消、owner 丢失、容量限制与故障测试
This commit is contained in:
@@ -31,6 +31,7 @@ import tech.easyflow.agent.runtime.AgentChatRequest;
|
||||
import tech.easyflow.agent.runtime.AgentDraftChatRequest;
|
||||
import tech.easyflow.agent.runtime.AgentRunService;
|
||||
import tech.easyflow.agent.runtime.agui.AgentAguiHitlResolveRequest;
|
||||
import tech.easyflow.agent.runtime.agui.AgentAguiRunStatusView;
|
||||
import tech.easyflow.agent.runtime.composer.AgentComposerDraft;
|
||||
import tech.easyflow.agent.runtime.composer.AgentComposerDraftService;
|
||||
import tech.easyflow.agent.runtime.composer.AgentComposerSession;
|
||||
@@ -319,6 +320,51 @@ public class AgentController extends BaseCurdController<AgentService, Agent> {
|
||||
return agentRunService.chatDraftAgui(input);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询可重连 AG-UI 运行状态。
|
||||
*
|
||||
* @param runId 客户端运行 ID
|
||||
* @return 运行状态
|
||||
*/
|
||||
@GetMapping("/agui/run/{runId}/status")
|
||||
@SaCheckPermission(value = {
|
||||
"/api/v1/agent/session/query", "/api/v1/agent/save"
|
||||
}, mode = SaMode.OR)
|
||||
public Result<AgentAguiRunStatusView> getAguiRunStatus(@PathVariable String runId) {
|
||||
return Result.ok(agentRunService.getAguiRunStatus(runId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 从指定游标继续订阅 AG-UI 运行事件。
|
||||
*
|
||||
* @param runId 客户端运行 ID
|
||||
* @param after 已消费的最后事件游标
|
||||
* @return 增量重放 SSE
|
||||
*/
|
||||
@GetMapping("/agui/run/{runId}/events")
|
||||
@SaCheckPermission(value = {
|
||||
"/api/v1/agent/session/query", "/api/v1/agent/save"
|
||||
}, mode = SaMode.OR)
|
||||
public SseEmitter subscribeAguiRun(@PathVariable String runId,
|
||||
@RequestParam(defaultValue = "0") long after) {
|
||||
return agentRunService.subscribeAguiRun(runId, after);
|
||||
}
|
||||
|
||||
/**
|
||||
* 显式取消单次 AG-UI 运行。
|
||||
*
|
||||
* @param runId 客户端运行 ID
|
||||
* @return 操作结果
|
||||
*/
|
||||
@PostMapping("/agui/run/{runId}/cancel")
|
||||
@SaCheckPermission(value = {
|
||||
"/api/v1/agent/session/query", "/api/v1/agent/save"
|
||||
}, mode = SaMode.OR)
|
||||
public Result<Void> cancelAguiRun(@PathVariable String runId) {
|
||||
agentRunService.cancelAguiRun(runId);
|
||||
return Result.ok();
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理 AG-UI 自定义 HITL 兼容桥审批。
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user