Commit Graph

164 Commits

Author SHA1 Message Date
Mark McDonald
7e6fb7e874 Added sandbox error hint when MCP servers fail to launch in sandbox mode (#972) 2025-06-16 06:37:09 +00:00
Leo
5c8e49a0e3 bug: Fix modify edit (#1078) 2025-06-15 18:00:41 -07:00
Jerop Kipruto
714421c2da 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
Sijie Wang
7352cb403c fix(core): Improve shell tool reliability and test portability (#1036) 2025-06-15 09:19:19 +00:00
Keir Mierle
32dd298351 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
Leo
2c6aae863a Enable "modify" in write tool (#1044) 2025-06-14 11:20:04 -07:00
Anas H. Sulaiman
4873fce791 centralize file filtering in FileDiscoveryService (#1039) 2025-06-14 14:25:34 +00:00
Allen Hutchison
31b28ade01 Improvements to web-fetch tool (#1030) 2025-06-13 17:44:14 -07:00
Shreya Keshive
1fa41af918 Support MCP StreamableHTTPClientTransport (#1014) 2025-06-13 16:18:06 -04:00
Anas H. Sulaiman
9d04e04bc0 remove redundant isGitRepository helper` (#1012) 2025-06-13 12:45:07 -04:00
Billy Biggs
2a1ad1f5d9 Update contextFileName to support an optional list of strings (#1001) 2025-06-13 09:19:08 -07:00
Anas H. Sulaiman
34e0d9c0b6 cleanup unused allowBuildArtifacts (#1010) 2025-06-13 12:00:38 -04:00
Anas H. Sulaiman
c886f08525 cleanup unused customIgnorePatterns (#1009) 2025-06-13 11:49:48 -04:00
Shreya Keshive
1fcbdef994 Add web socket protocol support for IDE MCP server (#987)
Co-authored-by: matt korwel <matt.korwel@gmail.com>
2025-06-13 09:30:44 -04:00
Tommaso Sciortino
28e656f882 Improve some tools to support abortSignal (#997) 2025-06-12 19:46:00 -07:00
matt korwel
9a11567f73 Revert "Make glob tool support abortSignal" (#996) 2025-06-13 00:53:10 +00:00
Marat Boshernitsan
181abde2ff Reduce coupling between core and cli packages (#961)
Co-authored-by: Marat Boshernitsan <maratb@google.com>
2025-06-12 17:17:29 -07:00
Tommaso Sciortino
f8863f4d00 Make glob tool support abortSignal (#988) 2025-06-12 13:27:40 -07:00
Leo
1ef68e0612 feat: External editor settings (#882) 2025-06-11 18:21:54 -07:00
Anas Sulaiman
00c4527a1b unify diff generation before and after an edit 2025-06-11 09:47:11 -04:00
jerop
d1e23b7c71 refactor: Centralize session ID generation and propagation 2025-06-11 01:18:40 -04:00
Bryan Morgan
1e3abf96b5 addressed b/423798481 (#887) 2025-06-10 08:47:46 -04:00
Eddie Santos
6484dc9008 Add Windsurf in edit tool to modify changes, if installed (#853) 2025-06-09 16:01:06 -07:00
matt korwel
3b943c1582 Windows: Refactor Shell Scripts to Node.js for Cross-Platform Compatibility (#784) 2025-06-09 12:19:42 -07:00
Tommaso Sciortino
0613062fc8 Simplify user agent handling. (#828) 2025-06-09 09:31:27 -07:00
Olcan
87474e52d7 rename shell tool more intuitively as run_shell_command (from historical name of execute_bash_command inherited from terminal tool) (#869) 2025-06-09 08:57:30 -07:00
anj-s
c55a1d9012 Add support for sorting files search by recency threshold followed by lexicographic sorting (#867) 2025-06-09 08:07:24 -07:00
Olcan
a2fee6bdd3 fix mcp timeouts and missing description on mcp errors (#868) 2025-06-08 21:52:11 -07:00
matt korwel
37edbd8c18 Rollforward AST changes to unblock Sandboxing (#863) 2025-06-08 19:07:25 -07:00
N. Taylor Mullen
d62dad5575 Revert "Add batch editing capabilities to Edit Tool (#648)" (#857) 2025-06-08 23:20:43 +00:00
Bryan Morgan
152af28a34 Bryanmorgan/add tool source description (#856) 2025-06-08 19:07:05 -04:00
N. Taylor Mullen
f2ea78d0e4 fix(tool-scheduler): Correctly pipe cancellation signal to tool calls (#852) 2025-06-08 22:42:49 +00:00
Leo
9efca40dae feat: Add flow to allow modifying edits during edit tool call (#808) 2025-06-08 10:56:58 -07:00
Tommaso Sciortino
389907ce65 Introduce ContentGeneratorConfig (#826) 2025-06-07 16:17:27 -07:00
Bryan Morgan
e95a6086fc Bryanmorgan/add mcp description support (#825) 2025-06-07 18:30:56 -04:00
Eddie Santos
27fdd1b6e6 Add embedder (#818) 2025-06-07 13:38:05 -07:00
matt korwel
f1a4e5d4d3 Creating Node AST Tool. (#756) 2025-06-07 12:07:58 -07:00
Bryan Morgan
28ff62e7b1 Added /mcp command support and cleaned up broken tests (#817) 2025-06-07 15:06:18 -04:00
Keith Ballinger
0c86874677 Add batch editing capabilities to Edit Tool (#648)
Co-authored-by: N. Taylor Mullen <ntaylormullen@google.com>
2025-06-06 22:54:37 -07:00
N. Taylor Mullen
1ffe027d8a Add support for configured mcp client timeout. (#775) 2025-06-05 20:35:00 +00:00
Eddie Santos
422c763a55 Add support for .geminiignore file (#757) 2025-06-05 10:15:27 -07:00
anj-s
78b2a28fb6 Checks for diff changes before displaying the code snippet (#751) 2025-06-05 06:48:03 -07:00
Jacob Richman
aa386d135b Jacob314/memory fixes (#754)
Address multiple possible memory leaks found bystatic analysis of the codebase. The primary source of the leaks was event listeners on child processes and global objects that were not being properly removed, potentially causing their closures to be retained in memory indefinitely particularly for processes that did not exit.

There are two commits. A larger one made by gemini CLI and a smaller one by me to make sure we always disconnect child processes as part of the cleanup methods. These changes may not actually fix any leaks but do look like reasonable defensive coding to avoid leaking event listeners or child processes.

The following files were fixed:
This is Gemini's somewhat overconfident description of what it did.

packages/core/src/tools/shell.ts: Fixed a leak where an abortSignal listener was not being reliably removed.
packages/cli/src/utils/readStdin.ts: Fixed a significant leak where listeners on process.stdin were never removed.
packages/cli/src/utils/sandbox.ts: Fixed leaks in the imageExists and pullImage helper functions where listeners on spawned child processes were not being removed.
packages/core/src/tools/grep.ts: Fixed three separate leaks in the isCommandAvailable check and the git grep and system grep strategies due to un-removed listeners on child processes.
packages/core/src/tools/tool-registry.ts: Corrected a leak in the execute method of the DiscoveredTool class where listeners on the spawned tool process were not being removed.
2025-06-05 06:40:33 -07:00
N. Taylor Mullen
d179b3aae4 refactor(core): Centralize tool response formatting (#743) 2025-06-04 07:24:25 +00:00
Keith Ballinger
c313762ba0 Ignore folders files (#651)
# Add .gitignore-Aware File Filtering to gemini-cli

This pull request introduces .gitignore-based file filtering to the gemini-cli, ensuring that git-ignored files are automatically excluded from file-related operations and suggestions throughout the CLI. The update enhances usability, reduces noise from build artifacts and dependencies, and provides new configuration options for fine-tuning file discovery.

Key Improvements
.gitignore File Filtering

All @ (at) commands, file completions, and core discovery tools now honor .gitignore patterns by default.
Git-ignored files (such as node_modules/, dist/, .env, and .git) are excluded from results unless explicitly overridden.
The behavior can be customized via a new fileFiltering section in settings.json, including options for:
Turning .gitignore respect on/off.
Adding custom ignore patterns.
Allowing or excluding build artifacts.
Configuration & Documentation Updates

settings.json schema extended with fileFiltering options.
Documentation updated to explain new filtering controls and usage patterns.
Testing

New and updated integration/unit tests for file filtering logic, configuration merging, and edge cases.
Test coverage ensures .gitignore filtering works as intended across different workflows.
Internal Refactoring

Core file discovery logic refactored for maintainability and extensibility.
Underlying tools (ls, glob, read-many-files) now support git-aware filtering out of the box.


Co-authored-by: N. Taylor Mullen <ntaylormullen@google.com>
2025-06-04 04:40:46 +00:00
Olcan
80a445c7ae bandaid for broken mcp calls (#732) 2025-06-03 14:40:36 -07:00
anj-s
fffa06f0b1 Modify shortenPath and add param validation (#663) 2025-06-03 08:59:17 -07:00
anj-s
e9d43b9388 Add params check for writeTool (#708) 2025-06-03 07:47:27 -07:00
N. Taylor Mullen
c71d6ddc3b Fix: Ensure MCP tools are discovered from slow-starting servers (#717) 2025-06-03 07:40:51 +00:00
N. Taylor Mullen
8ab74ef1bb Refactor: Use config.getGeminiClient() for GeminiClient instantiation (#715) 2025-06-03 05:30:52 +00:00