summaryrefslogtreecommitdiff
path: root/scripts
AgeCommit message (Collapse)Author
2025-06-15Avoid import.meta.dirname to be backwards compatible to Node.js 18+ (#1058)Billy Biggs
2025-06-15Add telemetry command and refactor telemetry settings (#1060)Jerop Kipruto
#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 > [email protected] 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-14docs: clarify telemetry script usage (#1034)Jerop Kipruto
Updates the telemetry documentation and the GCP telemetry script to make it clearer that the Gemini CLI needs to be run in a separate terminal session after starting the collector script. This addresses potential user confusion where they might expect telemetry data to appear without actively using the CLI. #750
2025-06-13Add GCP telemetry script (#1033)Jerop Kipruto
Adds a script - `scripts/telemetry_gcp.js` - to simplify setting up a local OpenTelemetry collector that forwards data to Google Cloud. This is a follow up to the script for local telemetry `scripts/local_telemetry.js` added in #1015. This script automates downloading necessary binaries, configuring the collector, and updating workspace settings. Also includes `scripts/telemetry_utils.js` with shared helper functions for telemetry scripts. Will refactor `scripts/local_t elemetry.js` in next steps to use this shared functionality. Updates `docs/core/telemetry.md` to include: - A new "Quick Start" section - Detailed instructions for the new GCP automated script - Reorganization of existing sections for clarity #750 --- ``` โœจ Starting Local Telemetry Exporter for Google Cloud โœจ โš™๏ธ Enabled telemetry in workspace settings. ๐Ÿ”ง Set telemetry OTLP endpoint to http://localhost:4317. โœ… 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: 65145)... โœ… OTEL collector started successfully on port 4317. โœจ Local OTEL collector for GCP is running. ๐Ÿ“„ Collector logs are being written to: /Users/jerop/github/gemini-cli/.gemini/otel/collector-gcp.log ๐Ÿ“Š View your telemetry data in Google Cloud Console: - Traces: https://console.cloud.google.com/traces/list?project=foo-bar - Metrics: https://console.cloud.google.com/monitoring/metrics-explorer?project=foo-bar - Logs: https://console.cloud.google.com/logs/query;query=logName%3D%22projects%2Ffoo-bar%2Flogs%2Fgemini_cli%22?project=foo-bar Press Ctrl+C to exit. ^C ๐Ÿ‘‹ Shutting down... โš™๏ธ Disabled telemetry in workspace settings. ๐Ÿ”ง Cleared telemetry OTLP endpoint. โœ… Workspace settings updated. ๐Ÿ›‘ Stopping otelcol-contrib (PID: 65145)... โœ… otelcol-contrib stopped. ```
2025-06-13Add a local telemetry launcher (#1015)Keir Mierle
2025-06-11fixes to proxy on macos: prevent curl from hanging during wait-for-proxy by โ†ตOlcan
adding ipv6 support and timeout (#947)
2025-06-11fix version set for cli and slash commands (#892)Zach Sais
2025-06-10Remove warnings for old env var names. (#920)Tommaso Sciortino
2025-06-10Fix debug to work when not running under a sandboxSeth Troisi
2025-06-10restricted networking for all sandboxing methods, new seatbelt profiles, โ†ตOlcan
updated docs, fixes to sandbox build, debugging through sandbox (#891)
2025-06-10strip json comments in newly created sandbox_command.js (consistent w/ bash โ†ตOlcan
version) (#886)
2025-06-09Windows: Refactor Shell Scripts to Node.js for Cross-Platform Compatibility โ†ตmatt korwel
(#784)
2025-06-08replace reference to "README" with "docs" to avoid confusion for folks who โ†ตOlcan
do not have access to README (#866)
2025-06-08fix(deps): externalize tree-sitter (#840)matt korwel
Submitting without approval to fix broken deployment on main. But also, we should lock this down.
2025-06-07Makefile for convenience (#833)Keith Ballinger
2025-06-07refactor: rename gemini-code to gemini-cli (#822)cperry-goog
2025-06-07fix(build): correct sandbox warning link (#819)cperry-goog
2025-06-07Added /mcp command support and cleaned up broken tests (#817)Bryan Morgan
2025-06-05use execSync (vs spawnSync) so launch fails if build_sandbox fails; tweaks โ†ตOlcan
in build_sandbox to fix some shellcheck warnings, and to simplify the logic slightly (#767)
2025-06-05feat: Add multi-stage docker build support for custom sandbox.Dockerfile (#746)Tolik Malibroda
2025-06-02prefer to load gemini-specific .env file from .gemini folder when it exists โ†ตOlcan
there (#697)
2025-05-30Fix: Update sandbox build to use new core package nameTaylor Mullen
- The `packages/core` tarball name changed from `gemini-code-server-*.tgz` to `gemini-code-core-*.tgz` after the `server` to `core` rename. - This updates `scripts/build_sandbox.sh` and the root `Dockerfile` to use the new `gemini-code-core-*.tgz` naming, resolving the CI failure during the Docker build step of the publish process.
2025-05-30Rename server->core (#638)Tommaso Sciortino
2025-05-30feat(sandbox): use package config to dictate sandbox image name (#624)Brandon Keiji
2025-05-30fix(sandbox): set default env var to 'gemini-cli-sandbox' (#620)Brandon Keiji
2025-05-30use npx json instead of jq (#617)Olcan
2025-05-29fix(sandbox): add SHORT_SHA to image tag (#604)Brandon Keiji
2025-05-29allow comments in settings when parsed in scripts via jq (#603)Olcan
2025-05-29feat: publish root Dockerfile to our image registry (#599)Brandon Keiji
2025-05-28Display git commit info in the /about section. (#567)DeWitt Clinton
This change detects the most recent git commit short hash and writes it to the `GIT_COMMIT_INFO` constant in `packages/cli/src/generated/git-commit.sh`, optionally appending the string "(local modifications)" if additional local changes after that commit are detected. If set, this string is displayed in the `/about` dialog as well as passed into the `/bug` template. Example: ``` > /about โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ โ”‚ โ”‚ โ”‚ About Gemini CLI โ”‚ โ”‚ โ”‚ โ”‚ CLI Version development โ”‚ โ”‚ Git Commit 43370ab (local modifications) โ”‚ โ”‚ Model gemini-2.5-pro-preview-05-06 โ”‚ โ”‚ Sandbox sandbox-exec (minimal) โ”‚ โ”‚ OS darwin v23.11.0 โ”‚ โ”‚ โ”‚ โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ ``` Additionally, this change updates `.gitignore` to ignore the generated files, `scripts/clean.sh` to remove them, and adds a `npm run generate` stage for this and any other generators we need to write.
2025-05-27replace error with warning if sandbox build is triggered without enabling, โ†ตOlcan
improve README to reduce confusion (#570)
2025-05-18Refactor: Convert copy_files.cjs to ES module syntaxTaylor Mullen
- Converted scripts/copy_files.cjs to use ES module syntax (renaming to copy_files.js). - This change aligns with the project's preference for ES modules over CommonJS for better modernity and future-proofing. - Updated eslint.config.js to remove the .cjs override. - Adjusted scripts/build_package.sh to call the new .js file.
2025-05-17rename env vars GEMINI_CODE_{MODEL,SANDBOX,SANDBOX_IMAGE} (#411)Olcan
2025-05-16Fix: Use Node.js script for cross-platform file copying in buildTaylor Mullen
- Replaces the rsync command in the build_package.sh script with a Node.js script (copy_files.cjs) to handle copying necessary files (e.g., .md, .json, .sb) during the build process. - Addresses an issue where the build would fail on systems that do not have rsync installed (e.g., some Windows environments or minimal Linux distributions) by using a Node.js script, providing a cross-platform solution as Node.js is already a project dependency. - Updates the ESLint configuration to correctly lint .cjs files as CommonJS modules. Fixes https://github.com/google-gemini/gemini-cli/issues/387
2025-05-14improve sandboxing status message, update README, remove dead code from a โ†ตOlcan
previous change to build_sandbox.sh (#346)
2025-05-13fall back to ~/.env if .env is not found in current directory or any โ†ตOlcan
ancestors (#338)
2025-05-09fix debugging with seatbelt, including in strict profile (#300)Olcan
2025-05-08Add bundling support.Taylor Mullen
- This can now be invoked with `npm run bundle`, it creates a `bundle/` folder that has: - gemini.js - sandbox-macos-minimal.sb - sandbox-macos-strict.sb - shell.json - shell.md - This doesn't include any sort of automation for auto bundling pieces. It's just the root capability which we can weave into other locations. Fixes https://b.corp.google.com/issues/411432723
2025-05-07use seatbelt on macos, with two profiles: minimal (default) which only โ†ตOlcan
restricts writes, and strict, which is deny-by-default and only allows specific operations (#283)
2025-05-07Create simple script for setting up a dev environment. (#277)cornmander
2025-05-07make sandbox build quiet by default but allow VERBOSE=1 option. enable โ†ตOlcan
caching by default but allow disabling via BUILD_SANDBOX_FLAGS="--no-cache" (#278)
2025-05-07fix: build image with --no-cache (#275)Brandon Keiji
2025-05-07fix(sandbox): consolidate dev and prod sandbox (#273)Brandon Keiji
2025-05-03fix sandbox prod build w/ custom Dockerfile (#255)Olcan
2025-05-02custom sandboxing via sandbox.Dockerfile and sandbox.bashrc in project โ†ตOlcan
settings (#249)
2025-05-02pass PATH and PYTHONPATH into sandbox, let sandbox scripts recognize user โ†ตOlcan
settings for sandbox (#247)
2025-05-01remove start_sandbox.sh script (#238)Olcan
2025-04-29drop the "RE" from REBUILD_SANDBOX (#218)Olcan
2025-04-29SANDBOX_SET_UID_GID option for systems where this is necessary (should be โ†ตOlcan
only rootful docker on linux w/o userns-remap configured) (#210) * SANDBOX_SET_UID_GID option for systems where this is necessary (should be only rootful docker on linux w/o userns-remap configured) * Merge remote-tracking branch 'origin/main' into sandbox_uid_gid
2025-04-29fix: point start.sh to relative path (#209)Brandon Keiji