diff options
| author | Brandon Keiji <[email protected]> | 2025-05-22 06:00:36 +0000 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-05-22 06:00:36 +0000 |
| commit | 4e3ba687a6bd37ba387edfc3db88467e47c7775f (patch) | |
| tree | 3b70784660cb2d75f97a4d7c053b0eb789ebf1c7 /packages/cli/src/ui/hooks/useToolScheduler.ts | |
| parent | 02eec5c8cafc054ac6293217cd988a5b775a1f26 (diff) | |
fix: forward entire tool call confirmation object through useToolScheduler (#481)
Diffstat (limited to 'packages/cli/src/ui/hooks/useToolScheduler.ts')
| -rw-r--r-- | packages/cli/src/ui/hooks/useToolScheduler.ts | 39 |
1 files changed, 19 insertions, 20 deletions
diff --git a/packages/cli/src/ui/hooks/useToolScheduler.ts b/packages/cli/src/ui/hooks/useToolScheduler.ts index 2cb27141..fde632df 100644 --- a/packages/cli/src/ui/hooks/useToolScheduler.ts +++ b/packages/cli/src/ui/hooks/useToolScheduler.ts @@ -10,6 +10,7 @@ import { ToolCallResponseInfo, ToolConfirmationOutcome, Tool, + ToolCallConfirmationDetails, } from '@gemini-code/server'; import { Part } from '@google/genai'; import { useCallback, useEffect, useState } from 'react'; @@ -55,7 +56,7 @@ type WaitingToolCall = { status: 'awaiting_approval'; request: ToolCallRequestInfo; tool: Tool; - confirm: (outcome: ToolConfirmationOutcome) => Promise<void>; + confirmationDetails: ToolCallConfirmationDetails; }; export type Status = ToolCall['status']; @@ -119,17 +120,20 @@ export function useToolScheduler( status: 'awaiting_approval', request: r, tool, - confirm: async (outcome) => { - await userApproval.onConfirm(outcome); - setToolCalls( - outcome === ToolConfirmationOutcome.Cancel - ? setStatus( - r.callId, - 'cancelled', - 'User did not allow tool call', - ) - : setStatus(r.callId, 'scheduled'), - ); + confirmationDetails: { + ...userApproval, + onConfirm: async (outcome) => { + await userApproval.onConfirm(outcome); + setToolCalls( + outcome === ToolConfirmationOutcome.Cancel + ? setStatus( + r.callId, + 'cancelled', + 'User did not allow tool call', + ) + : setStatus(r.callId, 'scheduled'), + ); + }, }, }; } @@ -249,7 +253,7 @@ function setStatus( function setStatus( targetCallId: string, status: 'awaiting_approval', - confirm: (t: ToolConfirmationOutcome) => Promise<void>, + confirm: ToolCallConfirmationDetails, ): (t: ToolCall[]) => ToolCall[]; function setStatus( targetCallId: string, @@ -296,9 +300,7 @@ function setStatus( const next: WaitingToolCall = { ...t, status: 'awaiting_approval', - confirm: auxiliaryData as ( - o: ToolConfirmationOutcome, - ) => Promise<void>, + confirmationDetails: auxiliaryData as ToolCallConfirmationDetails, }; return next; } @@ -426,10 +428,7 @@ export function mapToDisplay( description: t.tool.getDescription(t.request.args), resultDisplay: undefined, status: mapStatus(t.status), - confirmationDetails: { - title: t.request.name, - onConfirm: t.confirm, - }, + confirmationDetails: t.confirmationDetails, }; case 'executing': return { |
