gemini-cli/packages/cli
Taylor Mullen 8440b971f5 Fix(cli): Prevent premature input box reactivation during tool confirmation
- Introduced a 'validating' state for tool calls to prevent the input box from reappearing while waiting for a tool's `shouldConfirmExecute` method to complete.
- When a tool call is initiated, it's now immediately set to a 'validating' status. This ensures the UI remains in a busy/responding state.
- `useGeminiStream` now considers the 'validating' state as part of `StreamingState.Responding`.
- `useToolScheduler` has been updated to:
    - Set the initial status of new tool calls to 'validating'.
    - Asynchronously perform the `shouldConfirmExecute` check.
    - Transition to 'awaiting_approval' or 'scheduled' based on the check's outcome.
- This resolves an issue where a slow `shouldConfirmExecute` could lead to the input prompt becoming active again before the tool call lifecycle was fully determined. While 'validating' is currently treated similarly to 'executing' in the UI, this new state provides a foundation for more customized user experiences during this phase in the future.

Fixes https://github.com/google-gemini/gemini-cli/issues/527
2025-05-25 16:06:33 -07:00
..
src Fix(cli): Prevent premature input box reactivation during tool confirmation 2025-05-25 16:06:33 -07:00
Dockerfile.sandbox fix: set .npmrc in HOME dir before publishing (#206) 2025-04-28 18:16:42 -07:00
README.md Update Gemini Code verbiage -> Gemini CLI 2025-05-14 22:07:03 -07:00
index.ts feat: add alias to the cli bin directive (#126) 2025-04-23 01:04:34 +00:00
package.json Feat: Add test coverage scripts and ignore reports (#477) 2025-05-21 17:03:22 -07:00
tsconfig.json fix: use flat config for react eslint plugin (#265) 2025-05-06 08:48:26 -07:00
vitest.config.ts Fix an issue where types/react was a different version from our main … (#231) 2025-04-30 16:33:43 -07:00

README.md

Gemini CLI

This package contains the core command-line interface for Gemini CLI.

Setup

  1. Get a Gemini API Key: Obtain your API key from Google AI Studio: https://aistudio.google.com/app/apikey
  2. Set Environment Variable: Set the GEMINI_API_KEY environment variable to your obtained key. You can do this temporarily in your current shell session:
    export GEMINI_API_KEY="YOUR_API_KEY"
    
    Or add it to your shell's configuration file (like ~/.bashrc, ~/.zshrc, or ~/.profile) for persistence:
    echo 'export GEMINI_API_KEY="YOUR_API_KEY"' >> ~/.bashrc # Or your preferred shell config file
    source ~/.bashrc # Reload the config
    
    Replace "YOUR_API_KEY" with your actual key.

Building

To build only the CLI package, navigate to this directory (packages/cli) and run:

npm run build

This command executes the TypeScript compiler (tsc) as defined in this package's package.json. Ensure dependencies have been installed from the root directory (npm install) first.

Running

To start the Gemini CLI directly from this directory:

npm start

This command executes node dist/gemini.js as defined in this package's package.json.

Debugging

To debug the CLI application using VS Code:

  1. Start the CLI in debug mode from this directory (packages/cli):
    npm run debug
    
    This command runs node --inspect-brk dist/gemini.js, pausing execution until a debugger attaches.
  2. In VS Code (opened at the root of the monorepo), use the "Attach" launch configuration (found in .vscode/launch.json). This configuration is set up to attach to the Node.js process listening on port 9229, which is the default port used by --inspect-brk.