summaryrefslogtreecommitdiff
path: root/packages/cli/src/ui/hooks
diff options
context:
space:
mode:
Diffstat (limited to 'packages/cli/src/ui/hooks')
-rw-r--r--packages/cli/src/ui/hooks/useGeminiStream.ts27
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,
],
);