Commit Graph

48 Commits

Author SHA1 Message Date
Brandon Keiji 4eea2e594b fix: synchronization between executed tools and turn loops (#488) 2025-05-22 02:51:07 -07:00
Taylor Mullen 495b3a7c56 feat: Update feedback mechanism to use /bug command
- Replaces the previous email-based feedback with a /bug command in the system prompt.
2025-05-21 23:32:54 -07:00
Brandon Keiji 854de99e34 feat: useToolScheduler hook to manage parallel tool calls (#448) 2025-05-21 22:57:53 -07:00
Seth Troisi d913d44981 Add Logger for command history (#435) 2025-05-21 00:36:22 -07:00
Jacob Richman 042b85a4dc Support Images and PDFs (#447) 2025-05-20 13:02:41 -07:00
Olcan da4c0ee589 indicate system prompt override on bottom right; require GEMINI_SYSTEM_MD to make it more explicit; allow custom paths for read/write (#427) 2025-05-19 11:03:04 -07:00
Olcan 6eeb95b126 trim system prompt (#426) 2025-05-19 09:39:05 -07:00
Olcan cca0cca84e ability to write system prompt to file (#414) 2025-05-17 20:14:06 -07:00
Olcan 935686a278 ability to override core system prompt (via .gemini/system.md) and specify core tools via coreTools setting (e.g. coreTools:["ls", "GrepTool", ...]) ; added tests, but did not update docs for now (#413) 2025-05-17 19:45:16 -07:00
Allen Hutchison 5af93cfb9c feat: Implement CLI and model memory management (#371)
Co-authored-by: N. Taylor Mullen <ntaylormullen@google.com>
2025-05-16 16:36:50 -07:00
sasha-gitg 39e4455d94 feat: Add support for Vertex AI and Vertex express mode (#380) 2025-05-16 08:06:43 -07:00
Brandon Keiji cfb44d04ee refactor: break submitQuery into smaller functions (#350) 2025-05-14 15:14:15 -07:00
Allen Hutchison c5985fea09 This commit introduces the hierarchical memory feature, allowing GEMI… (#327) 2025-05-14 12:37:17 -07:00
Olcan aff5165997 mention git diff --staged for partial commits (#336) 2025-05-13 14:06:14 -07:00
Olcan a5371d7a22 use git diff HEAD instead of git diff && git diff --staged (#333) 2025-05-13 12:56:32 -07:00
Taylor Mullen bda1ff7ab4 Encourage utilization of git diff --staged for commit message writing.
- This enables GC to base commit message changes on actual file content.
2025-05-12 23:51:37 -07:00
Taylor Mullen 9ee6d79a1e feat: Enhance replace tool reliability with multi-stage edit correction
This commit significantly improves the `replace` tool's robustness by introducing a multi-stage correction mechanism. This directly addresses challenges with LLM-generated tool inputs, particularly the over-escaping of strings sometimes observed with Gemini models, and other minor discrepancies that previously led to failed edits.

The correction process is as follows:
1.  **Targeted Unescaping:** The system first applies a specialized unescaping function to the `old_string` and `new_string` to counteract common LLM-induced escaping patterns.
2.  **LLM-Powered Discrepancy Resolution:** If a unique match for the `old_string` is still not found, the system leverages a Gemini model (`gemini-2.5-flash-preview-04-17`) to:
    *   Identify the most probable intended `old_string` in the file by intelligently correcting minor formatting or escaping differences.
    *   Adjust the `new_string` to correspond with any corrections made to the `old_string`, maintaining the original edit's intent.

This enhancement makes the `replace` tool more resilient and effective, leading to a higher success rate for automated code modifications. The `expected_replacements` parameter has been removed as the tool now focuses on finding a single, unique, and correctable match. The tool's description and error reporting have been updated to reflect these new capabilities.

Fixes https://b.corp.google.com/issues/416933027
2025-05-12 23:33:12 -07:00
Olcan 3da6ec086f ensure no 'undefined' in system prompt (#322) 2025-05-12 16:41:11 -07:00
Olcan 08caf730c7 system prompt for working with git (#321) 2025-05-12 16:27:07 -07:00
Taylor Mullen 1080b4f13c When an error occurs stop processing. 2025-05-12 00:06:20 -07:00
Taylor Mullen 259c40e015 feat: Add User-Agent to API requests
This change introduces a User-Agent header to all API requests made by the Gemini CLI.

The User-Agent string includes the CLI version, Node.js version, operating system, and architecture. This will help in tracking usage and identifying potential issues.

Fixes https://b.corp.google.com/issues/416353675

Signed-off-by: Gemini
2025-05-11 14:33:58 -07:00
Taylor Mullen 6ab1fc4756 feat: Integrate centralized error reporting for API interactions
Implements robust error handling for Gemini API calls, integrating with the centralized error reporting system.

- API errors are now caught and reported to dedicated log files, providing detailed diagnostics without cluttering the user interface.
- A concise error message is surfaced to the user in the UI, indicating an API issue.
- Ensures any pending UI updates are processed before an API error is displayed.

This change improves our ability to diagnose API-related problems by capturing rich error context centrally, while maintaining a clean user experience.

Signed-off-by: Gemini <YourFriendlyNeighborhoodAI@example.com>
2025-05-11 13:55:55 -07:00
Taylor Mullen 6457e3b791 Log server information on error.
- The goal of this is to enable us to better diagnose server issues when they occur.
- Added tests because why not.
2025-05-10 14:18:23 -07:00
Taylor Mullen 02cd095d89 Don't prematurely end convo w/ Gemini.
- There seems to be a root model bug where the model will preemptively bail on conversations without trying harder. Typically the stops are VERY obvious and bug-looking where you need to prmopt the model to "continue".
- This PR attempts to fix the above by running a 2.0-flash request (don't need somethign more powerful) at the end of every full interaction to see who should speak (user or model).
- Add tests for nextSpeakerChecker

Fixes https://b.corp.google.com/issues/416826051
2025-05-10 14:05:58 -07:00
Taylor Mullen 2b1e39db6a Enable tools to cancel active execution.
- Plumbed abort signals through to tools
- Updated the shell tool to properly cancel active requests by killing the entire child process tree of the underlying shell process and then report that the shell itself was canceled.

Fixes https://b.corp.google.com/issues/416829935
2025-05-10 00:21:09 -07:00
Taylor Mullen 90d85820b8 Make cancel not explode.
- We were console.erroring, throwing and early aborting. Instead we now treat cancels like a normal user message and show an indicator in the UI

Fixes https://b.corp.google.com/issues/416515841
2025-05-09 22:49:32 -07:00
Olcan cabcdda449 sandbox/seatbelt-aware system prompt, support for custom seatbelt profiles under project settings (#304) 2025-05-09 11:33:05 -07:00
Taylor Mullen 9d9f7739b7 Continue to work through 429/500s.
- The root of this issue was actually a genai SDK bug that was fixed here: https://critique.corp.google.com/cl/753255997
- Upgrade to latest genai SDK for latest bug fixes (including the above)
- Removed specific 429 handling for uncaught rejections.

Fixes https://b.corp.google.com/issues/413760164
2025-05-07 16:38:06 -07:00
Brandon Keiji 1a7582b766 fix: use flat config for react eslint plugin (#265) 2025-05-06 08:48:26 -07:00
Taylor Mullen fe3206e29e Add vibe coding instructions for 0->game.
- Prior to this GC would attempt to utilize React components as game assets (instead of using canvas) + would fail to deal with placeholder assets effectively.

Part of https://b.corp.google.com/issues/413718497
2025-05-05 20:53:47 -07:00
Jacob Richman 3f9c759932 Cleanup low value comments. (#248) 2025-05-02 14:39:39 -07:00
Jacob Richman 99f047b349 Use parameter properties where possible. (#242) 2025-05-02 09:31:18 -07:00
Olcan 03a40f9904 switch to shell tool, deprecating terminal (#203)
* switch to shell tool, deprecating terminal

* Merge remote-tracking branch 'origin/main' into deprecate_terminal
2025-04-28 15:05:36 -07:00
Taylor Mullen b61cf3c44b Refactor: Update core system prompt with new application workflow and improved structure
- Refine agent persona from 'assistant' to 'agent'.
- Restructure prompt into distinct 'Software Engineering Tasks' and 'New Application' workflows.
- Add detailed steps and tool usage guidance for creating new applications.
- Improve clarity and formatting of prompt instructions.

Part of https://b.corp.google.com/issues/413718497

Signed-off-by: Gemini, your friendly neighborhood code agent.
2025-04-27 22:36:05 -07:00
Taylor Mullen 8a8983deea Prevent console.warn's for tool calls.
- Added helper for extracting text content from responses without warning.

See fixed issue for more detail: https://b.corp.google.com/issues/414005146
2025-04-26 15:50:44 -07:00
Allen Hutchison 761293bd1c Adding a full_context command line argument. (#158)
* Adding a full_context command line argument.

* Update packages/cli/src/config/config.ts

Co-authored-by: N. Taylor Mullen <ntaylormullen@google.com>

* lint fix.

---------

Co-authored-by: N. Taylor Mullen <ntaylormullen@google.com>
2025-04-24 16:08:29 -07:00
Olcan 0c293647a7 general rules should apply to whole project (#159)
* general rules should apply to whole project

* Merge remote-tracking branch 'origin/main' into fix_eslint

* lint fixes under server package
2025-04-24 15:42:18 -07:00
Taylor Mullen c73fa983a0 Refactor: Remove GEMINI.md memory and refactor system prompt
- Updates CONTRIBUTING.md and Tips.tsx to remove references to GEMINI.md and the /init command, and renumbers tips.
- Fixes a typo in Tips.tsx ("information.s" -> "information.").
- Refactors the core system prompt in prompts.ts from a constant string to a function .
- Updates client.ts to call the  function.
- Updates tool name references within the system prompt to use template literals for dynamic naming.

Fixes bug: https://buganizer.corp.google.com/issues/413061073
---

Generated by yours truly __Gemini Code__
2025-04-23 15:57:40 -07:00
Chris Perry bf596ff4b6 Updating the system prompt to allow for more complex app creation 2025-04-23 14:39:12 -07:00
Jaana Dogan afa0a31555 fix hanging tools
https://github.com/google-gemini/gemini-code/pull/117/
2025-04-22 13:40:36 -07:00
Jaana Dogan 3fb6725506 Initiate the GeminiClient with a config
Also address the open readability improvement comments from #104.
2025-04-22 11:20:19 -07:00
Jaana Dogan c0c1f3579e Simplify GeminiClient (#101)
Doing some more clean-up:
* Remove confusing continue/break
* Handle empty result
* Rename the file just client.js
2025-04-21 17:15:20 -07:00
Jaana Dogan ed4f47e6d1 Remove redundant else branches (#86)
Else branches are an anti pattern especially if you can easily return from the previous branch. Over time, else branches cause deep nesting and make code unreadable and unmaintainable. Remove elses where possible.
2025-04-21 12:15:47 -07:00
Taylor Mullen 86dac064b7 Fix confirmations.
- This fixes what it means to get confirmations in GC. Prior to this they had just been accidentally unwired as part of all of the refactorings to turns + to server/core.
  - The key piece of this is that we wrap the onConfirm in the gemini stream hook in order to resubmit function responses. This isn't 100% ideal but gets the job done for now.
- Fixed history not updating properly with confirmations.

Fixes https://b.corp.google.com/issues/412323656
2025-04-21 14:47:17 -04:00
Taylor Mullen c282e8b67e Fix Gemini Code's (GC) smarts.
- The tl;dr; is that GC couldn't see what the user was saying when tool call events happened in response. The rason why this was happening was because we were instantly invoking tools that the model told us to invoke and then instantly re-requesting. This resulted in the bug because the genai APIs can't update the chat history before a full response has been completed (doesn't know how to update if it's incomplete).
- To address the above issue I had to do quite the large refactor. The gist is that now turns truly drive everything on the server (vs. a server client split). This ensured that when we got tool invocations we could control when/how re-requesting would happen and then also ensure that history was updated. This change also meant that the server would act as an event publisher to enable the client to react to events rather than try and weave in complex logic between the events.
- A BIG change that this changeset incudes is the removal of all of the CLI tools in favor of the server tools.
- Removed some dead code as part of this
- **NOTE: Confirmations are still broken (they were broken prior to this); however, I've set them up to be able to work in the future, I'll dot hat in a follow up to be less breaking to others.**

Fixes https://b.corp.google.com/issues/412320087
2025-04-21 11:07:09 -04:00
Olcan 80745fe1cc fix function calling for gemini 2.5 series (#65) 2025-04-20 19:05:27 -07:00
Tyler 77cca7b92e add linter for checking license headers (and eslint --fix target to match, and fix missing license headers while we're here) (#62) 2025-04-20 17:16:25 -07:00
Evan Senter 236949431b Starting to modularize into separate cli / server packages. (#55)
* Starting to move a lot of code into packages/server

* More of the massive refactor, builds and runs, some issues though.

* Fixing outstanding issue with double messages.

* Fixing a minor UI issue.

* Fixing the build post-merge.

* Running formatting.

* Addressing comments.
2025-04-19 19:45:42 +01:00