- The tl;dr; is that GC couldn't see what the user was saying when tool call events happened in response. The rason why this was happening was because we were instantly invoking tools that the model told us to invoke and then instantly re-requesting. This resulted in the bug because the genai APIs can't update the chat history before a full response has been completed (doesn't know how to update if it's incomplete). - To address the above issue I had to do quite the large refactor. The gist is that now turns truly drive everything on the server (vs. a server client split). This ensured that when we got tool invocations we could control when/how re-requesting would happen and then also ensure that history was updated. This change also meant that the server would act as an event publisher to enable the client to react to events rather than try and weave in complex logic between the events. - A BIG change that this changeset incudes is the removal of all of the CLI tools in favor of the server tools. - Removed some dead code as part of this - **NOTE: Confirmations are still broken (they were broken prior to this); however, I've set them up to be able to work in the future, I'll dot hat in a follow up to be less breaking to others.** Fixes https://b.corp.google.com/issues/412320087 |
||
---|---|---|
.. | ||
src | ||
README.md | ||
index.ts | ||
package.json | ||
tsconfig.json |
README.md
Gemini Code CLI
This package contains the core command-line interface for Gemini Code.
Setup
- Get a Gemini API Key: Obtain your API key from Google AI Studio: https://aistudio.google.com/app/apikey
- Set Environment Variable: Set the
GEMINI_API_KEY
environment variable to your obtained key. You can do this temporarily in your current shell session:
Or add it to your shell's configuration file (likeexport GEMINI_API_KEY="YOUR_API_KEY"
~/.bashrc
,~/.zshrc
, or~/.profile
) for persistence:
Replaceecho 'export GEMINI_API_KEY="YOUR_API_KEY"' >> ~/.bashrc # Or your preferred shell config file source ~/.bashrc # Reload the config
"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 Code 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:
- Start the CLI in debug mode from this directory (
packages/cli
):
This command runsnpm run debug
node --inspect-brk dist/gemini.js
, pausing execution until a debugger attaches. - 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
.