diff options
Diffstat (limited to 'packages/cli/src/ui/hooks')
| -rw-r--r-- | packages/cli/src/ui/hooks/useGeminiStream.ts | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/packages/cli/src/ui/hooks/useGeminiStream.ts b/packages/cli/src/ui/hooks/useGeminiStream.ts index 611ea3e7..40c688a3 100644 --- a/packages/cli/src/ui/hooks/useGeminiStream.ts +++ b/packages/cli/src/ui/hooks/useGeminiStream.ts @@ -396,6 +396,32 @@ export const useGeminiStream = ( // Call the original server-side handler first originalConfirmationDetails.onConfirm(outcome); + // Ensure UI updates before potentially long-running operations + if (currentToolGroupMessageId !== null) { + updateItem( + currentToolGroupMessageId, + (currentItem: HistoryItem) => { + if (currentItem?.type !== 'tool_group') + return currentItem as Partial<Omit<HistoryItem, 'id'>>; + return { + ...currentItem, + tools: (currentItem.tools || []).map((tool) => + tool.callId === request.callId + ? { + ...tool, + confirmationDetails: undefined, + status: ToolCallStatus.Executing, + } + : tool, + ), + } as Partial<Omit<HistoryItem, 'id'>>; + }, + ); + refreshStatic(); + } + + await new Promise((resolve) => setTimeout(resolve, 0)); // Allow UI to re-render + if (outcome === ToolConfirmationOutcome.Cancel) { let resultDisplay: ToolResultDisplay | undefined; if ('fileDiff' in originalConfirmationDetails) { @@ -470,6 +496,7 @@ export const useGeminiStream = ( setShowHelp, toolRegistry, setInitError, + refreshStatic, ], ); |
