summaryrefslogtreecommitdiff
path: root/scripts
AgeCommit message (Collapse)Author
2025-06-24Jacob314/max old space (#1314)Jacob Richman
2025-06-23docs: update telemetry documentation and scripts (#1318)Jerop Kipruto
2025-06-19Move the otel folder out of project root .gemini and into user home dir (#1188)Louis Jimenez
2025-06-19refactor: remove docker tagging step from sandbox publishing (#1223)Brandon Keiji
2025-06-19add sandboxImageName in package.json (#1219)Leo
2025-06-18refactor: consolidate container image tag source of truth to cli โ†ตBrandon Keiji
package.json (#1156)
2025-06-16Preflight and integration npx (#1096)matt korwel
2025-06-16fix version release for Dockerfile build (#1080)Zach Sais
2025-06-16Decouple telemetry project ID configuration (#1077)Jerop Kipruto
#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-15Refactor: Use telemetry_utils.js in local_telemetry.js (#1066)Jerop Kipruto
## 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-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