Download packages/cli/src/ui/hooks/useAutoAcceptIndicator.ts from Jimmi42/openCLI: direct link, hf CLI and curl.
- Browser
- Download file 1.36 kB
-
https://huggingface.co/Jimmi42/openCLI/resolve/main/packages/cli/src/ui/hooks/useAutoAcceptIndicator.ts
- Command line
-
hf download hf://Jimmi42/openCLI/packages/cli/src/ui/hooks/useAutoAcceptIndicator.ts
-
curl -L -o useAutoAcceptIndicator.ts https://huggingface.co/Jimmi42/openCLI/resolve/main/packages/cli/src/ui/hooks/useAutoAcceptIndicator.ts
1.36 kB
| /** | |
| * @license | |
| * Copyright 2025 Google LLC | |
| * SPDX-License-Identifier: Apache-2.0 | |
| */ | |
| import { useState, useEffect } from 'react'; | |
| import { useInput } from 'ink'; | |
| import { ApprovalMode, type Config } from '@google/gemini-cli-core'; | |
| export interface UseAutoAcceptIndicatorArgs { | |
| config: Config; | |
| } | |
| export function useAutoAcceptIndicator({ | |
| config, | |
| }: UseAutoAcceptIndicatorArgs): ApprovalMode { | |
| const currentConfigValue = config.getApprovalMode(); | |
| const [showAutoAcceptIndicator, setShowAutoAcceptIndicator] = | |
| useState(currentConfigValue); | |
| useEffect(() => { | |
| setShowAutoAcceptIndicator(currentConfigValue); | |
| }, [currentConfigValue]); | |
| useInput((input, key) => { | |
| let nextApprovalMode: ApprovalMode | undefined; | |
| if (key.ctrl && input === 'y') { | |
| nextApprovalMode = | |
| config.getApprovalMode() === ApprovalMode.YOLO | |
| ? ApprovalMode.DEFAULT | |
| : ApprovalMode.YOLO; | |
| } else if (key.tab && key.shift) { | |
| nextApprovalMode = | |
| config.getApprovalMode() === ApprovalMode.AUTO_EDIT | |
| ? ApprovalMode.DEFAULT | |
| : ApprovalMode.AUTO_EDIT; | |
| } | |
| if (nextApprovalMode) { | |
| config.setApprovalMode(nextApprovalMode); | |
| // Update local state immediately for responsiveness | |
| setShowAutoAcceptIndicator(nextApprovalMode); | |
| } | |
| }); | |
| return showAutoAcceptIndicator; | |
| } | |