| fix(webui): 连续审批时第二个审批卡片不弹出导致任务卡死
审批为「发了即返回」的 POST,后端收到决定后才跑工具、再在同一条 SSE 流上
推下一个 permission_request。当被批准的工具是瞬时的(如 Read_file 0.00s),
下一个请求会在决定 POST 仍在 await 时到达并占用唯一的 pending 槽位,而卡片
的 onDone 无条件 setPending(null),把这个它从未处理过的新请求清掉——第二个
工具永远停在「等待批准…」、卡片不再弹出,任务卡死。
修复:抽出纯函数 resolvePendingAfterDecision,仅当槽位仍是本卡片刚决定的
请求(按 call_id 匹配)时才清空;若已被更新的请求替换则保留它。实时(/live)
与非 sync(/chat) 两条路径同改,消除重复的同款缺陷。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
| 4 天前 |