summaryrefslogtreecommitdiff
path: root/packages/cli/src/ui/hooks/useToolScheduler.ts
diff options
context:
space:
mode:
authorBrandon Keiji <[email protected]>2025-05-22 06:00:36 +0000
committerGitHub <[email protected]>2025-05-22 06:00:36 +0000
commit4e3ba687a6bd37ba387edfc3db88467e47c7775f (patch)
tree3b70784660cb2d75f97a4d7c053b0eb789ebf1c7 /packages/cli/src/ui/hooks/useToolScheduler.ts
parent02eec5c8cafc054ac6293217cd988a5b775a1f26 (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.ts39
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 {