Run 终端事件

wesgine 的 Run 终端事件保证——每条 return 路径必须发出终端事件。


INV-TERM-04

runLoop 的每个 return 路径必须在返回前发出终端事件。

终端事件类型:


为什么必须保证

缺少终端事件的后果:

  1. terminal guard 合成虚假 EventError(missing_terminal_event)
  2. 消费方显示误导性"引擎内部错误"
  3. 无效的重试按钮出现在 UI 上

context 取消的特殊处理

callLLM 和 execute 返回 phaseReturn 时:

原因:phaseReturn 直接 return,永远到不了循环顶部。


终端事件与消费方

终端事件消费方行为
EventDone("end_turn")正常结束,显示回复
EventDone("context_cancelled")压制,不显示错误块
EventError(kind)按 severity 决定是否显示重试
EventInterrupted压制,不显示错误块

terminal guard

如果 runLoop 返回时没有发出任何终端事件:

terminal guard 自动合成 EventError(missing_terminal_event)。

这是最后防线,不是正常流程。


与 SSE 的关系

终端事件通过 SSE 推送到前端。

但 Run 生命周期与 SSE 连接解耦(INV-RUN-DETACH):