Commit Graph

854 Commits

Author SHA1 Message Date
starsandskies
b494f4569f Move theme discussion from configuration.md to themes.md (#1158)
This content looks like it is better hosted in the themes.md doc.

This is as close as possible to an as-is cut-paste from one file to the other, with the goal of minimizing fine-grained review in this particular PR. I'll take another pass through themes.md specifically to improve the moved content in a follow up PR
2025-06-17 16:07:12 -07:00
Seth Troisi
756cbb3e3d Updating CONTRIBUTING.md (#1144) 2025-06-17 13:16:28 -07:00
matt korwel
cb4a3aed14 Forked PR: Contributing.md (#1146) 2025-06-17 11:26:27 -07:00
Billy Biggs
ea84b23a34 Support escaping carriage returns with \ (#1127) 2025-06-17 10:03:05 -07:00
Jacob MacDonald
9f4f4ae89e code review followup for compress command (#1097)
Followup to https://github.com/google-gemini/gemini-cli/pull/986
2025-06-17 15:44:54 +00:00
Eddie Santos
d925aac735 Auto-update notifications (#1110) 2025-06-17 15:24:07 +00:00
matt korwel
6994e5f659 Update CONTRIBUTING.md (#1130) 2025-06-17 00:09:23 -07:00
Miguel Solorio
7d8ebe89f3 Update /help page (#1119) 2025-06-16 20:13:33 -07:00
Tommaso Sciortino
11b43d4eba Cache credentials in home dir, not working dir (#1122) 2025-06-16 19:31:32 -07:00
Tommaso Sciortino
53ba909a81 Simplify Error handling in Code Assist onboarding (#1123) 2025-06-16 18:30:55 -07:00
Jacob Richman
dd31e004a5 Fix bug where single line inserts were deleting all text after the in… (#1114) 2025-06-16 15:21:22 -07:00
Tommaso Sciortino
af929f6c4f Propagate abort signal to ccpa generateContent. (#1106) 2025-06-16 13:24:42 -07:00
Marlon Gamez
baad4cf0d3 fix: add httpOptions with headers field to CCPA client and set User-Agent header (#1103) 2025-06-16 12:03:06 -07:00
Tommaso Sciortino
e934cd74a8 Mock out 'open' in tests. Fix test issues. (#1100) 2025-06-16 11:12:42 -07:00
matt korwel
fbe69c2135 Preflight and integration npx (#1096) 2025-06-16 15:27:29 +00:00
Taylor Mullen
4e68c48591 Add ask mode approvers to code owners. 2025-06-15 23:46:58 -07:00
Mark McDonald
7be9fb5499 Added sandbox error hint when MCP servers fail to launch in sandbox mode (#972) 2025-06-16 06:37:09 +00:00
Abhi
662403c66c feat: clear should also clear chat history (#1008) 2025-06-16 06:33:59 +00:00
Louis Jimenez
6607d47c2c Move the shadow git repository to the user's home dir (#1013) 2025-06-16 06:30:02 +00:00
Jacob Richman
10ca703cce feat: text-buffer: input sanitization and delete character handling. (#1031) 2025-06-16 06:25:11 +00:00
N. Taylor Mullen
7348d6efe8 feat(cli): Standardize keyboard shortcut hints (#1092) 2025-06-16 06:21:58 +00:00
Zach Sais
8e147263db fix version release for Dockerfile build (#1080) 2025-06-16 06:13:39 +00:00
Billy Biggs
d80ad70c07 Update /tools desc to show the name of each tool as known to the model (#1091) 2025-06-15 23:09:53 -07:00
N. Taylor Mullen
c36bccc811 feat(test): Increase test coverage across CLI and Core packages (#1089) 2025-06-15 22:41:32 -07:00
N. Taylor Mullen
d80ec4b7ae feat(ci): run actions on the release branch (#1086) 2025-06-15 21:43:32 -07:00
Mark McDonald
350fe5f26e Add Vertex env vars to sandbox (#1005)
Co-authored-by: Scott Densmore <scottdensmore@github.com>
2025-06-16 02:55:13 +00:00
Jerop Kipruto
1386e2dd42 small fixes in telemetry docs (#1081)
- `GOOGLE_CLOUD_PROJECT` --> `OTLP_GOOGLE_CLOUD_PROJECT`
- Remove `npm run start:gcp` shorthand from docs until after improving cleanup process
2025-06-16 02:45:16 +00:00
Abhi
47c88dd25c feat: Adds shell command context to gemini history (#1076) 2025-06-15 22:09:30 -04:00
Jerop Kipruto
de356ae72d Add a command for starting Gemini CLI with GCP telemetry (#1079)
This command enables starting the application with GCP telemetry:

```shell
npm run start:gcp
```
2025-06-15 21:28:29 -04:00
Jerop Kipruto
e741fc2205 Decouple telemetry project ID configuration (#1077)
#750 

Renames project ID for telemetry from `GOOGLE_CLOUD_PROJECT` to `OTLP_GOOGLE_CLOUD_PROJECT`.

This change allows for a separate Google Cloud Project to be used for telemetry data, distinct from the project used for other services like Vertex AI or Code Assist. This enhances clarity and flexibility in project configuration.
2025-06-16 01:12:57 +00:00
Leo
72d581369d bug: Fix modify edit (#1078) 2025-06-15 18:00:41 -07:00
N. Taylor Mullen
7db86df9f5 refactor(cli): Use excludeTools for non-interactive mode (#1072) 2025-06-15 16:05:40 -07:00
Jerop Kipruto
468dd24740 Stabilize /bug command tests with consistent version mocking (#1070)
The `/bug` command tests in `slashCommandProcessor.test.ts` were flaky due to inconsistent CLI versioning.

This commit:
- Implements a flexible, top-level mock for `getCliVersion` that can be overridden per test.
- Sets a default mock value for `/bug` command tests via `beforeEach`.
- Overrides the mock in one test case requiring a specific version ('test-version').
- Ensures the test's helper `getExpectedUrl` receives the correct explicit version.
- Aligns the expected CLI version in the custom bug URL test with the default mock.

These changes ensure consistent CLI versioning in tests, resolving flakiness.

#1071
2025-06-15 16:35:15 -04:00
Jerop Kipruto
bd0f1c9b6b Add file operation telemetry (#1068)
Introduces telemetry for file create, read, and update operations.

This change adds the `gemini_cli.file.operation.count` metric, recorded by the `read-file`, `read-many-files`, and `write-file` tools.

The metric includes the following attributes:
    - `operation` (string: `create`, `read`, `update`): The type of file operation.
    - `lines` (optional, Int): Number of lines in the file.
    - `mimetype` (optional, string): Mimetype of the file.
    - `extension` (optional, string): File extension of the file.

Here is a stacked bar chart of file operations by extension (`js`, `ts`, `md`):
![image](https://github.com/user-attachments/assets/3e8f8ea9-6155-4186-863c-075cc47647c5)

Here is a stacked bar chart of file operations by type (`create`, `read`, `update`):
![image](https://github.com/user-attachments/assets/3fcf491d-31d0-4ba8-80e6-7fd2bd9c7c27)

#750 

cc @allenhutchison as discussed
2025-06-15 13:24:53 -07:00
Jerop Kipruto
80f93154b1 Refactor: Use telemetry_utils.js in local_telemetry.js (#1066)
## TLDR

Refactors `scripts/local_telemetry.js` to use shared helper functions and constants from `scripts/telemetry_utils.js`.

## Dive Deeper

This change centralizes common telemetry-related logic, including:
- Binary downloading and management (`ensureBinary`)
- Reading and writing JSON files
- Waiting for network ports
- Managing workspace telemetry settings (`manageTelemetrySettings`)
- Process cleanup and signal handling (`registerCleanup`)

By using the shared utilities, `local_telemetry.js` becomes more concise and focused on its specific task of setting up the local OpenTelemetry and Jaeger environment.

## Docs

https://github.com/google-gemini/gemini-cli/blob/main/docs/core/telemetry.md#local-telemetry-with-jaeger-ui-for-traces

## Issue

#750
2025-06-15 19:32:12 +00:00
Billy Biggs
69d436d754 Support completion of checkpoint names in /resume (#1063) 2025-06-15 11:40:39 -07:00
Marat Boshernitsan
2732f83f4a Stabilize prompts snapshot test by properly mocking the SANDBOX env var. (#1067)
Co-authored-by: Marat Boshernitsan <maratb@google.com>
2025-06-15 11:33:30 -07:00
Billy Biggs
6bb705dd0d Add support for /mcp schema to show full parameter schema as JSON (#1050)
Outputs a raw JSON version of the parameter names and descriptions as provided to the model, plus minor formatting adjustments to /mcp desc.
2025-06-15 11:25:40 -07:00
Asad Memon
07eff94919 feat: Show model thoughts while loading (#992) 2025-06-15 18:19:05 +00:00
Asad Memon
407a71396f feat: Add token stats in footer (#909) 2025-06-15 11:15:53 -07:00
Billy Biggs
c9155665ae Add support for showing descriptions of CLI tools (#1052)
Adds support for /tools desc to show the full description of tools as provided to the model.
2025-06-15 07:56:07 -07:00
Sijie Wang
6a167c6953 fix(core): Improve shell tool reliability and test portability (#1036) 2025-06-15 09:19:19 +00:00
matt korwel
1b50d03524 Create pull_request_template.md (#1054) 2025-06-15 01:34:40 -07:00
N. Taylor Mullen
7508a7cbf4 feat(cli): add glob as a direct dependency (#1065) 2025-06-15 00:50:26 -07:00
Jerop Kipruto
bd252ca64c Telemetry: Improve API response logging with function call details (#1064) 2025-06-15 01:48:01 -04:00
Billy Biggs
75b3ff1487 Avoid import.meta.dirname to be backwards compatible to Node.js 18+ (#1058) 2025-06-15 05:30:00 +00:00
Jerop Kipruto
ab714f9116 Add telemetry command and refactor telemetry settings (#1060)
#750 

### Telemetry Settings
Refactors telemetry configuration to use a nested `telemetry` object in `settings.json`, for example:

```json
{
  "telemetry": {
    "enabled": true,
    "target": "gcp"
    "log-prompts": "true"
  },
  "sandbox": false
}
```

The above includes
- Centralized telemetry settings under a `telemetry` object in `settings.json`.
- CLI flags for the `gemini` command to override all telemetry sub-settings:
    - `--telemetry` / `--no-telemetry`
    - `--telemetry-target <local|gcp>`
    - `--telemetry-otlp-endpoint <URL>`
    - `--telemetry-log-prompts` / `--no-telemetry-log-prompts`
- Updates `packages/cli/src/config/config.ts` and `packages/core/src/config/config.ts` to read from the new settings structure and respect the new CLI flags.
- Modifies `scripts/handle-telemetry.js`, `scripts/local_telemetry.js`, and `scripts/telemetry_utils.js` to align with the new settings structure.
- Updates `docs/core/telemetry.md` to reflect the new settings structure, CLI flags, and order of precedence.
- Renames `logUserPromptsEnabled` to `logPrompts` for brevity.

### `npm run telemetry`

Add a new `npm run telemetry` command that uses `scripts/telemetry.js`, automates the entire process of setting up a local and GCP telemetry pipelines, including configuring the necessary settings in the `.gemini/settings.json` workspace file and installing required binaries (e.g. `otelcol-contrib`).

---
```shell
$ npm run telemetry -- --target=gcp

> gemini-cli@0.1.0 telemetry
> node scripts/telemetry.js --target=gcp

⚙️  Using command-line target: gcp
🚀 Running telemetry script for target: gcp.
 Starting Local Telemetry Exporter for Google Cloud 
⚙️  Enabled telemetry in workspace settings.
🔧 Set telemetry OTLP endpoint to http://localhost:4317.
🎯 Set telemetry target to gcp.
 Workspace settings updated.
 Using Google Cloud Project ID: foo-bar

🔑 Please ensure you are authenticated with Google Cloud:
  - Run `gcloud auth application-default login` OR ensure `GOOGLE_APPLICATION_CREDENTIALS` environment variable points to a valid service account key.
  - The account needs "Cloud Trace Agent", "Monitoring Metric Writer", and "Logs Writer" roles.
 otelcol-contrib already exists at /Users/jerop/github/gemini-cli/.gemini/otel/bin/otelcol-contrib
🧹 Cleaning up old processes and logs...
 Deleted old GCP collector log.
📄 Wrote OTEL collector config to /Users/jerop/github/gemini-cli/.gemini/otel/collector-gcp.yaml
🚀 Starting OTEL collector for GCP... Logs: /Users/jerop/github/gemini-cli/.gemini/otel/collector-gcp.log
 Waiting for OTEL collector to start (PID: 17013)...
 OTEL collector started successfully on port 4317.

 Local OTEL collector for GCP is running.

🚀 To send telemetry, run the Gemini CLI in a separate terminal window.

📄 Collector logs are being written to: /Users/jerop/github/gemini-cli/.gemini/otel/collector-gcp.log

📊 View your telemetry data in Google Cloud Console:
   - Logs: https://console.cloud.google.com/logs/query;query=logName%3D%22projects%2Ffoo-bar%2Flogs%2Fgemini_cli%22?project=foo-bar
   - Metrics: https://console.cloud.google.com/monitoring/metrics-explorer?project=foo-bar
   - Traces: https://console.cloud.google.com/traces/list?project=foo-bar

Press Ctrl+C to exit.
^C
👋 Shutting down...
⚙️  Disabled telemetry in workspace settings.
🔧 Cleared telemetry OTLP endpoint.
🎯 Cleared telemetry target.
 Workspace settings updated.
🛑 Stopping otelcol-contrib (PID: 17013)...
 otelcol-contrib stopped.
```
2025-06-15 00:47:32 -04:00
Keir Mierle
86b193e323 fix: Push tool calls to absolute paths (#1055) (#1057)
Make several changes to guide the model to request absolute paths,
reducing frequent accidental relative path tool call failures.

- Switch the parameter name: path --> absolute_path.
- Update the tool definition to strongly require an absolute path.
- Update the system prompt to indicate absolute paths are required.
- Update the system prompt tool use examples to use absolute paths.

Test case:

Open GC in GC: "Locate the primary file calling genai"
- Expected: Model opens files with absolute path, successfully.
- Actual (pre-patch): Failure, attempts to read with relative path.
- Actual (post-patch): Success, attempts to read with absolute path.
2025-06-14 21:16:11 -07:00
Scott Densmore
02be484146 docs: document environment variables for cloud services (#1048) 2025-06-14 15:19:05 -07:00
Leo
1aa98d48a3 bug: Fix code colorizer (#1046) 2025-06-14 21:27:53 +01:00