Commit Graph

650 Commits

Author SHA1 Message Date
Jaana Dogan 65e8e3ed1f
Show error when GEMINI_API_KEY is not set (#52)
Also fix the bug where the API key is used accidentally as the model name.
2025-04-18 19:26:16 -07:00
Tyler 4354458cad
Add apache2 SPDX headers to all source files (#48) 2025-04-18 17:44:24 -07:00
Allen Hutchison e75f0722e7
All the pipes (#47)
* Bump the character limit to web fetch.

* Piped Input Hook. First step in bringing in STDIN piping.

* Fix linting errors.

* Remove incorrect comment.
2025-04-18 17:12:14 -07:00
Allen Hutchison 3adc0dfbaf
Command line flags got broke. Now to run with flags run: (#46)
npm run start -- -m model-id -d data/dir
2025-04-18 16:41:51 -07:00
Olcan f3669f20a9
minor lint fix (#45) 2025-04-18 16:38:01 -07:00
Brandon Keiji e5a50d0154
fix: point server 'main' to dist folder (#44) 2025-04-18 16:29:49 -07:00
Brandon Keiji 6e4d4fc604
fix: temporarily comment out .npmrc (#43) 2025-04-18 16:18:44 -07:00
Taylor Mullen 40e11e053c Fix remaining tslint errors (YAY).
- Also updated ci.yml to ensure that linting failures will break the build.

Fully fixes https://b.corp.google.com/issues/411384603
2025-04-18 19:14:36 -04:00
Brandon Keiji 2a850ed051
fix: add --build flag to tsc commands (#40) 2025-04-18 16:14:20 -07:00
Taylor Mullen 383b917784 Run `npm run format`
- This has the entirety of the changes.

Part of https://b.corp.google.com/issues/411720532
2025-04-18 18:10:57 -04:00
Taylor Mullen fa264e4286 Make CI fail if there are unformatted changes.
Fixes https://b.corp.google.com/issues/411720532
2025-04-18 18:10:57 -04:00
Brandon Keiji 23b43ff651
fix: add clean command to individual packages (#36) 2025-04-18 14:57:20 -07:00
Taylor Mullen e7fa39112a Manually fix hooks and utils linting errors (partial)
- More changes are to come, this is truly a partial change in order to not disrupt as many people as possible.

Part of https://b.corp.google.com/issues/411384603
2025-04-18 17:51:16 -04:00
Allen Hutchison dfae3f6284
Iterm refactor (#33)
* Add a warning about the flickering in iTerm.

* Move the iterm warning out of App.tsx.
2025-04-18 14:39:05 -07:00
Brandon Keiji 52683dafc3
infra: add multipackage support (#34) 2025-04-18 14:37:02 -07:00
Allen Hutchison f51ca774cf
Add a warning about the flickering in iTerm. (#32) 2025-04-18 14:09:06 -07:00
Evan Senter 482aeaff10
Warn if `npm run start` is out of date. (#20)
* Adding some wiring to allow the Ink app to warn if there are local development changes that haven't been captured in the recent build of the Gemini CLI.

* Adding a new useAppEffects.ts file that wores some useEffect handlers in.

* Updating package-lock.json to resolve `npm ci` issues.

* Updating package-lock.json and package.json to resolve `npm ci` issues.
2025-04-18 21:55:02 +01:00
Allen Hutchison 3ed61f1ff2
Web fetch tool (#31)
* Adding a web fetch tool.
2025-04-18 13:20:39 -07:00
Brandon Keiji 56d4a35d05
feat: initial configs for npm publishing (#30)
* feat: initial configs for npm publishing

* fix: workspace reference

* fix: include LICENSE in npm run build
2025-04-18 12:46:42 -07:00
Taylor Mullen abb60a4d10 Finish manually fixing linter errors for tools dir (partial).
- More changes are to come, this is truly a partial change in order to not disrupt as many people as possible.

Part of https://b.corp.google.com/issues/411384603
2025-04-18 14:41:36 -04:00
Jaana Dogan 328846c6e3
Remove extra args from config (#27)
We don't have a use case for them yet.
2025-04-18 11:26:39 -07:00
Jaana Dogan 3afaa8033b
Introduce a config module to manage configuration (#22)
* Introduce a config module to manage configuration

* Remove public modifier
2025-04-18 11:12:18 -07:00
Jaana Dogan e1fac40256
Rename invalidParams to validateToolParams (#12)
Methods should be verbs. Fixes #4.
2025-04-18 11:06:30 -07:00
Taylor Mullen 7cd3b95317 Fix linting errors in a number of core and tool files (partial)
- As part of this work I also started building out errors.ts which will be a cumulation of error helpers to better handle the challenging `catch (error: unknown)` requirement.
- More changes are to come, this is truly a partial change in order to not disrupt as many people as possible.

Part of https://b.corp.google.com/issues/411384603
2025-04-18 14:02:09 -04:00
Jaana Dogan 93fd6a9160
Style improvements to ls tool (#14) 2025-04-18 10:57:20 -07:00
Evan Senter f6a4a5c44d Revert "Adding some wiring to allow the Ink app to warn if there are local development changes that haven't been captured in the recent build of the Gemini CLI."
This reverts commit 1bfc62dcc2.
2025-04-18 18:36:33 +01:00
Evan Senter bb95c8c45a Revert "Adding support for up / down arrows in the command history."
This reverts commit 3829ac6353.
2025-04-18 18:36:33 +01:00
Evan Senter dbf4c3a37c Revert "Including a test harness for it, and making sure the cursor is always at the end."
This reverts commit 97db77997f.
2025-04-18 18:36:33 +01:00
Tyler f330a87e50
add LICENSE (#25) 2025-04-18 10:30:07 -07:00
Allen Hutchison f72aa8c840
Cicd (#24)
* Add basic non blocking CI workflow.

* Make lint and typecheck continue on error until we have fixed those warnings.
2025-04-18 10:26:27 -07:00
Brandon Keiji 999d0568fa
Refactor: Update API key missing message with link (#23) 2025-04-18 10:25:32 -07:00
Allen Hutchison 7878f54043
Add basic non blocking CI workflow. (#21) 2025-04-18 10:20:39 -07:00
Evan Senter 97db77997f Including a test harness for it, and making sure the cursor is always at the end. 2025-04-18 18:16:52 +01:00
Evan Senter 3829ac6353 Adding support for up / down arrows in the command history. 2025-04-18 18:16:52 +01:00
Evan Senter 1bfc62dcc2 Adding some wiring to allow the Ink app to warn if there are local development changes that haven't been captured in the recent build of the Gemini CLI. 2025-04-18 18:16:52 +01:00
Taylor Mullen e0339993ae Initial auto-fixing of linting errors.
- This is the result of runing `npm lint -- -fix`
2025-04-18 12:41:02 -04:00
Evan Senter cb30351403
Adding a new parameter for model, and updating the default to 2.5 Flash. (#18) 2025-04-18 17:06:16 +01:00
Allen Hutchison b56d9c8639
Merge pull request #9 from google-gemini/target-directory
Change the run command to properly pass the command line arguments to…
2025-04-17 16:57:22 -07:00
Allen Hutchison 00d29aa162 Change the run command to properly pass the command line arguments to gemini.ts 2025-04-17 16:55:46 -07:00
Taylor Mullen cfc697a96d Run `npm run format`
- Also updated README.md accordingly.

Part of https://b.corp.google.com/issues/411384603
2025-04-17 15:29:34 -07:00
Taylor Mullen 7928c1727f Configure linter + prettier.
- This is based on existing expectations for TS code in Google-esc repos.
- First part of the change (we have not run any linter or formatting commands). After this changeset goes in I'll do a mass changeset push.

Fixes https://b.corp.google.com/issues/411384603
2025-04-17 15:29:34 -07:00
Jaana Dogan d3ee91ff92
Merge pull request #3 from google-gemini/readme
Remove internal docs and mention of Gerrit from README
2025-04-17 14:39:13 -07:00
Jaana Dogan a280727248 Remove internal docs and mention of Gerrit from README 2025-04-17 14:38:44 -07:00
Taylor Mullen d970882428 Fix build break (tool -> tools).
- Without this we'd get a TS1261 about the name "tool" only differeing from "Tool" (the class) by case.
2025-04-17 17:25:01 -04:00
Taylor Mullen ece8630c33 Revert camelCasing for schemas 2025-04-17 14:15:20 -07:00
Jaana Dogan 81ba61df7f Improve readability issues
This is only the first change of many changes.

* Remove redundant autogenerated comments
* Use the recommended file name style
* Use camelCase for variable names
* Don't introduce submodules for relevant types
* Don't introduce constants like modules, these are implementation details
* Remove empty files
2025-04-17 14:15:20 -07:00
Brandon Keiji 898a83031c
docs: Add setup instructions for API key to README (#1) 2025-04-17 11:59:12 -07:00
Allen Hutchison f10aaf7e7e fix: Suppress crash from unhandled 429 stream error via global handler
Introduces a process.on('unhandledRejection') handler in src/gemini.ts
as a workaround for an issue where 429 ClientErrors originating from
the @google/genai library's sendMessageStream during iteration can
cause an unhandled rejection, even when caught within local try/catch
blocks in the application code (e.g., in processGeminiStream).
The handler specifically identifies this known 429 ClientError based on
its type and message content. If matched, it logs a warning indicating
the known issue is being suppressed and prevents process.exit(1).
Any other genuinely unhandled promise rejections will still be logged
as critical errors and will terminate the application, maintaining
default behavior for unexpected issues. This workaround mitigates a
suspected library-internal problem related to error propagation during
asynchronous stream iteration.
2025-04-17 13:20:11 -04:00
Taylor Mullen 123c3050dc Add and update README files
- Adds a detailed README.md to the `packages/cli` directory covering build, run, and debug instructions specific to the CLI package.
- Updates the root README.md with comprehensive project information, including cloning instructions (Gerrit), monorepo build/run/debug steps, and references to relevant resources.

Created by yours truly: __Gemini Code__
2025-04-17 13:20:06 -04:00
Taylor Mullen add233c504 Initial commit of Gemini Code CLI
This commit introduces the initial codebase for the Gemini Code CLI, a command-line interface designed to facilitate interaction with the Gemini API for software engineering tasks.

The code was migrated from a previous git repository as a single squashed commit.

Core Features & Components:

*   **Gemini Integration:** Leverages the `@google/genai` SDK to interact with the Gemini models, supporting chat history, streaming responses, and function calling (tools).
*   **Terminal UI:** Built with Ink (React for CLIs) providing an interactive chat interface within the terminal, including input prompts, message display, loading indicators, and tool interaction elements.
*   **Tooling Framework:** Implements a robust tool system allowing Gemini to interact with the local environment. Includes tools for:
    *   File system listing (`ls`)
    *   File reading (`read-file`)
    *   Content searching (`grep`)
    *   File globbing (`glob`)
    *   File editing (`edit`)
    *   File writing (`write-file`)
    *   Executing bash commands (`terminal`)
*   **State Management:** Handles the streaming state of Gemini responses and manages the conversation history.
*   **Configuration:** Parses command-line arguments (`yargs`) and loads environment variables (`dotenv`) for setup.
*   **Project Structure:** Organized into `core`, `ui`, `tools`, `config`, and `utils` directories using TypeScript. Includes basic build (`tsc`) and start scripts.

This initial version establishes the foundation for a powerful CLI tool enabling developers to use Gemini for coding assistance directly in their terminal environment.

---
Created by yours truly: __Gemini Code__
2025-04-17 13:19:55 -04:00