diff --git a/web/src/App.tsx b/web/src/App.tsx index bc69aec5..469836a4 100644 --- a/web/src/App.tsx +++ b/web/src/App.tsx @@ -1160,14 +1160,11 @@ export default function App() { () => resolveChatComposerStreaming(currentSessionMessages, { turnLive: turnRuntime.isThinking, - taskRunLive: taskRunStream.isThinking || Boolean(taskRunStream.activeTaskRunId), + // Retained activeTaskRunId alone must not lock send after the run is + // terminal; orphan streaming_status + leftover run id was blocking UI-05+. + taskRunLive: taskRunStream.isThinking, }), - [ - currentSessionMessages, - turnRuntime.isThinking, - taskRunStream.isThinking, - taskRunStream.activeTaskRunId, - ], + [currentSessionMessages, turnRuntime.isThinking, taskRunStream.isThinking], ); // 处理交互卡片动作流转 (驳回门禁确认、撤回、取消与终审联动) diff --git a/web/src/hooks/useTaskRunStream.ts b/web/src/hooks/useTaskRunStream.ts index ba678491..0fba8bff 100644 --- a/web/src/hooks/useTaskRunStream.ts +++ b/web/src/hooks/useTaskRunStream.ts @@ -84,6 +84,7 @@ export function useTaskRunStream(activeSessionId: string) { rt.controller?.abort(); rt.controller = null; rt.thinking = false; + rt.runId = null; notify(); }, [getRuntime, notify],