Commit Graph

505 Commits

Author SHA1 Message Date
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
N. Taylor Mullen 7508a7cbf4 feat(cli): add glob as a direct dependency (#1065) 2025-06-15 00:50:26 -07: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
Leo 1aa98d48a3 bug: Fix code colorizer (#1046) 2025-06-14 21:27:53 +01:00
Anas H. Sulaiman 194e091d4a centralize file filtering in FileDiscoveryService (#1039) 2025-06-14 14:25:34 +00:00
Steren 32c3093082 Fix 404 URL for Vertex Auth (#1040) 2025-06-14 08:25:08 +00:00
Allen Hutchison 33989cbec0 feat: Add custom URL support for the /bug command (#1017) 2025-06-14 07:00:24 +00:00
Jacob MacDonald 6f444fae25 Add /compress command to force a compression of the context (#986)
Related to https://b.corp.google.com/issues/423605555 - I figured this might be a simpler solution to start with, while still also being useful on its own even if we do implement that.
2025-06-14 04:21:40 +00:00
Keir Mierle f27809703d Add a local telemetry launcher (#1015) 2025-06-13 18:08:03 -07:00
Allen Hutchison 44285aa760 Improvements to web-fetch tool (#1030) 2025-06-13 17:44:14 -07:00
Anas H. Sulaiman 5a5ec49341 initialize FileDiscoveryService once (#1029) 2025-06-13 17:25:59 -07:00
Brandon Keiji 7af228b436 fix: add micromatch to package deps (#1020) 2025-06-13 22:18:05 +00:00
Tommaso Sciortino f61f9996a1 Stop extension MCPs from hopping into settings. (#1026) 2025-06-13 14:51:29 -07:00
Anas H. Sulaiman 84c7332308 reuse GitIgnoreParser for loading .geminiignore (#1025) 2025-06-13 17:17:08 -04:00
Tommaso Sciortino 2d84cf7803 Fix default extension context filename and update docs (#1024) 2025-06-13 13:57:00 -07:00
Tommaso Sciortino 37d929f628 Don't exclude config.test.ts. (#1021) 2025-06-13 20:07:46 +00:00
Daniel Lee 68dc1e8678 feat(cli): support ctrl+d to exit (#878)
Similar to ctrl+c, ctrl+d can now be used to exit the program. To avoid accidental exit, ctrl+d must be pressed twice in relatively quick succession (same as ctrl+c).

Following common UX pattern, ctrl+d will be ignored when the input prompt is non-empty. This behavior is similar to how most shell (bash/zsh) behaves. To support this, I had to refactor so that text buffer is initialized outside of the InputPrompt component and instead do it on the main App component to allow input controller to have access to check the content of the text buffer.
2025-06-13 16:59:09 +00:00
Billy Biggs 0bbc287f88 Update contextFileName to support an optional list of strings (#1001) 2025-06-13 09:19:08 -07:00
Anas H. Sulaiman 082a65caa5 cleanup unused allowBuildArtifacts (#1010) 2025-06-13 12:00:38 -04:00
Anas H. Sulaiman 43cfdde579 cleanup unused customIgnorePatterns (#1009) 2025-06-13 11:49:48 -04:00
Leo 0adc677a52 Edit wording in /edit description (#1006) 2025-06-13 15:36:51 +00:00
Mark McDonald ec3b660add Support GOOGLE_API_KEY hoisting in sandbox too (#998) 2025-06-13 08:32:15 +00:00
N. Taylor Mullen 7ec11849ae refactor: Use default centralized Flash & Pro models everywhere (#994) 2025-06-13 08:25:42 +00:00
Miguel Solorio bd5f227055 Replace logo with custom ASCII (#958) 2025-06-13 07:59:45 +00:00
Jerop Kipruto bea4a403ee Handle telemetry in non-interactive mode (#1002)
Changes:
- Ensure proper shutdown in non-interactive mode
- Ensures the initial user prompt is logged in non-interactive mode
- Improve telemetry for streaming - handle chunks and input token count is now alongside other token counts in response

To test:
- Follow instructions in https://github.com/google-gemini/gemini-cli/blob/main/docs/core/telemetry.md#google-cloud
- Run CLI in non-interactive mode and observe logs/metrics in GCP Logs Explorer and Metrics Explorer

#750
2025-06-13 03:44:17 -04:00
Tommaso Sciortino eeda52b896 Code Assist cleanup and docs (#993) 2025-06-12 18:00:17 -07:00
Marat Boshernitsan 53ac32ee56 Reduce coupling between core and cli packages (#961)
Co-authored-by: Marat Boshernitsan <maratb@google.com>
2025-06-12 17:17:29 -07:00
Seth Troisi 74a5887bbb Have @ pass through images and other Part objects (#990) 2025-06-12 16:17:44 -07:00
Seth Troisi 5c815ead99 Fixed @ file content not being added or sent to server (#962) 2025-06-12 23:08:27 +00:00
Jerop Kipruto 650881237c telemetry: include user decisions in tool call logs (#966)
Add the user's decision (accept, reject, modify) to tool call telemetry to better understand user intent. The decision provides crucial context to the `success` metric, as a user can reject a call that would have succeeded or accept one that fails. 

Also prettify the arguments json.

Example: 
![image](https://github.com/user-attachments/assets/251cb9fc-ceaa-4cdd-929c-8de47031aca8)

#750
2025-06-12 20:48:10 +00:00
Abhi fec47363a3 bug: only show tool tokens if > 0 (#985) 2025-06-12 19:31:17 +00:00
Jordan Demeulenaere 8f8759b019 Fix build_sandbox command (#974) 2025-06-12 17:38:10 +00:00
Leo 31710f0ef3 remove enable editor flag (#984) 2025-06-12 17:28:20 +00:00
DeWitt Clinton 69835ecb0b Ignore dot files on @-completion. (#978) 2025-06-12 17:04:15 +00:00
DeWitt Clinton abf623a1a9 Improve the performance of filename completion over large repositories. (#938) 2025-06-12 07:09:38 -07:00
anj-s b6665d82e5 Revert "Add support for local logging per session (#936)" (#970) 2025-06-11 21:59:46 -07:00
Jerop Kipruto 72b9e1a414 Telemetry: Improve clarity of user prompt event (#967) 2025-06-11 21:43:00 -04:00
Leo cb4b803f5b feat: External editor settings (#882) 2025-06-11 18:21:54 -07:00
Abhi 9f4da201b3 Show session summary on exit for ctrl+c x 2. Fix exit UI (#963) 2025-06-11 20:08:32 -04:00
Eddie Santos 8a64f8d9dc Adding silly phrases (#922) 2025-06-11 23:40:13 +00:00
anj-s 3c1f01896d Add support for local logging per session (#936) 2025-06-11 15:05:41 -07:00
JingboWang1997-1 1418c37801 add excludeTools flag to settings.json config (#957) 2025-06-11 14:32:23 -07:00
Seth Troisi 3acbb8a45d clean chat history before /resume (#949) 2025-06-11 13:40:44 -07:00
Abhi 0016e3cac6 feat: Add exit UI w/ stats (#924) 2025-06-11 16:40:31 -04:00
matt korwel d41d58afa5 Extensibility: Gemini.md files (#944) 2025-06-11 20:34:35 +00:00
Tommaso Sciortino 3da4b71ae1 Cache oauth credentials (#927) 2025-06-11 13:26:41 -07:00
Seth Troisi 1619452d7b Fix noisy tests (#950) 2025-06-11 13:01:04 -07:00
Louis Jimenez b19571d9ab Restore Checkpoint Feature (#934) 2025-06-11 15:33:09 -04:00
Olcan b86e3edfa7 fixes to proxy on macos: prevent curl from hanging during wait-for-proxy by adding ipv6 support and timeout (#947) 2025-06-11 11:31:38 -07:00
Olcan 5deff6f420 fix proxy on cloudtops/linux and for older versions of docker, more robust start/stop and error reporting (#945) 2025-06-11 10:50:31 -07:00