diff options
| author | Tolik Malibroda <[email protected]> | 2025-06-02 22:05:45 +0200 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-06-02 22:05:45 +0200 |
| commit | 0795e55f0e7d2f2822bcd83eaf066eb99c67f858 (patch) | |
| tree | 3fd259976c8cfc5df79bba2d37f0a17fa3f683a4 /packages/cli/src/ui/hooks/useAutoAcceptIndicator.ts | |
| parent | 42bedbc3d39265932cbd6c9b818b6a7fbcbdd022 (diff) | |
feat: Add --yolo mode that automatically accepts all tools executions (#695)
Co-authored-by: N. Taylor Mullen <[email protected]>
Diffstat (limited to 'packages/cli/src/ui/hooks/useAutoAcceptIndicator.ts')
| -rw-r--r-- | packages/cli/src/ui/hooks/useAutoAcceptIndicator.ts | 32 |
1 files changed, 21 insertions, 11 deletions
diff --git a/packages/cli/src/ui/hooks/useAutoAcceptIndicator.ts b/packages/cli/src/ui/hooks/useAutoAcceptIndicator.ts index 5af1783b..aaa1dc68 100644 --- a/packages/cli/src/ui/hooks/useAutoAcceptIndicator.ts +++ b/packages/cli/src/ui/hooks/useAutoAcceptIndicator.ts @@ -6,7 +6,7 @@ import { useState, useEffect } from 'react'; import { useInput } from 'ink'; -import type { Config } from '@gemini-code/core'; +import { ApprovalMode, type Config } from '@gemini-code/core'; export interface UseAutoAcceptIndicatorArgs { config: Config; @@ -14,8 +14,8 @@ export interface UseAutoAcceptIndicatorArgs { export function useAutoAcceptIndicator({ config, -}: UseAutoAcceptIndicatorArgs): boolean { - const currentConfigValue = config.getAlwaysSkipModificationConfirmation(); +}: UseAutoAcceptIndicatorArgs): ApprovalMode { + const currentConfigValue = config.getApprovalMode(); const [showAutoAcceptIndicator, setShowAutoAcceptIndicator] = useState(currentConfigValue); @@ -23,15 +23,25 @@ export function useAutoAcceptIndicator({ setShowAutoAcceptIndicator(currentConfigValue); }, [currentConfigValue]); - useInput((_input, key) => { - if (key.tab && key.shift) { - const alwaysAcceptModificationConfirmations = - !config.getAlwaysSkipModificationConfirmation(); - config.setAlwaysSkipModificationConfirmation( - alwaysAcceptModificationConfirmations, - ); + 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(alwaysAcceptModificationConfirmations); + setShowAutoAcceptIndicator(nextApprovalMode); } }); |
