| fix(live): 审批通道整回合保持注册,修复同回合第二个工具被秒拒
webui 发起、tuix 审批的共享会话里,DaemonTurnExecutor::run_turn 整回合
只注册一次 approver sender,而 LiveSession.approve() 用 .take() 投递后
即 drop 掉这唯一的 sender,关闭了执行器持有的审批通道。结果同一回合内
第二个及之后的工具在 InteractivePermissionDecider::decide() 里 recv()
立刻得到 None → unwrap_or(Deny),审批卡刚弹出就被秒拒。
approve() 改为 .as_ref() 引用发送、不取走 sender,通道在整个回合内保持
armed(回合结束仍由 coordinator 清空,不跨回合误用)。固化了该 bug 的
旧测试 approval_first_come_first_served 重写为回归用例
approval_channel_survives_multiple_tools_in_one_turn。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
| 1 天前 |