Commit Graph

106 Commits

Author SHA1 Message Date
owenofbrien
4cfab0a893 Clearcut logging - initial implementation (#1274)
Flag-guarded initial implementation of a clearcut logger to collect telemetry data and send it to Concord for dashboards, etc.
2025-06-22 14:26:48 +00:00
Abhi
c9950b3cb2 feat: Add client-initiated tool call handling (#1292) 2025-06-22 01:35:36 -04:00
Abhi
52afcb3a12 bug: fix cancel after a tool has been used (#1270) 2025-06-20 20:01:44 -07:00
Louis Jimenez
6c67618624 Make checkpoints configurable in settings.json (#1251) 2025-06-20 00:39:15 -04:00
N. Taylor Mullen
4059a3e8ee fix: flicker of StreamingState to Idle when tool finishes (#1190) (#1216)
Co-authored-by: Asad Memon <asad.lionpk@gmail.com>
2025-06-20 01:25:23 +00:00
matt korwel
04518b52c0 Auth First Run (#1207)
Co-authored-by: Tommaso Sciortino <sciortino@gmail.com>
Co-authored-by: N. Taylor Mullen <ntaylormullen@google.com>
2025-06-19 16:52:22 -07:00
Jacob MacDonald
e59c872b3d code review followup for compress command (#1097)
Followup to https://github.com/google-gemini/gemini-cli/pull/986
2025-06-17 15:44:54 +00:00
Abhi
bedff2ca79 feat: Adds shell command context to gemini history (#1076) 2025-06-15 22:09:30 -04:00
Asad Memon
123ad20e9b feat: Show model thoughts while loading (#992) 2025-06-15 18:19:05 +00:00
Jacob MacDonald
d5c6bb9740 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
anj-s
6fc7028031 Revert "Add support for local logging per session (#936)" (#970) 2025-06-11 21:59:46 -07:00
Jerop Kipruto
89f682f081 Telemetry: Improve clarity of user prompt event (#967) 2025-06-11 21:43:00 -04:00
Leo
1ef68e0612 feat: External editor settings (#882) 2025-06-11 18:21:54 -07:00
anj-s
2dc79b3bd0 Add support for local logging per session (#936) 2025-06-11 15:05:41 -07:00
Louis Jimenez
e0f4f428fc Restore Checkpoint Feature (#934) 2025-06-11 15:33:09 -04:00
Abhi
9c3f34890f feat: Add UI for /stats slash command (#883) 2025-06-10 15:59:52 -04:00
Abhi
7f1252d364 feat: Display initial token usage metrics in /stats (#879) 2025-06-09 20:25:37 -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
N. Taylor Mullen
241c404573 fix(cli): correctly handle tool invocation cancellation (#844) 2025-06-08 11:14:45 -07:00
Scott Densmore
b46f220931 feat(cli): improve API error parsing and display (#829) 2025-06-07 22:04:57 -07:00
cperry-goog
18d6a11c04 refactor: rename gemini-code to gemini-cli (#822) 2025-06-07 14:27:22 -07:00
Brandon Keiji
2285bba66e refactor: remove unnecessary useRefs (#780) 2025-06-05 21:33:24 +00:00
Jerop Kipruto
2ebf2fbc82 OpenTelemetry Integration & Telemetry Control Flag (#762) 2025-06-05 13:04:25 -07:00
Brandon Keiji
546e033081 feat: notify user when chat context is compressed (#724) 2025-06-03 19:19:49 +00:00
N. Taylor Mullen
8ab74ef1bb Refactor: Use config.getGeminiClient() for GeminiClient instantiation (#715) 2025-06-03 05:30:52 +00:00
Brandon Keiji
74801e9004 refactor: maintain 1 GeminiChat per GeminiClient (#710) 2025-06-02 19:10:54 -07:00
Allen Hutchison
7f20425c98 feat(cli): add pro model availability check and fallback to flash (#608) 2025-06-02 13:55:54 -07:00
N. Taylor Mullen
34b81abd9c fix: Ensure all tool calls are complete before submitting responses (#689) 2025-06-02 08:50:28 +00:00
N. Taylor Mullen
f2a8d39f42 refactor: Centralize tool scheduling logic and simplify React hook (#670) 2025-06-01 14:16:24 -07:00
Tommaso Sciortino
21fba832d1 Rename server->core (#638) 2025-05-30 18:25:47 -07:00
Olcan
a3b557222a tweaks to shell abort logic based on feedback (#618) 2025-05-30 01:35:03 -07:00
Olcan
8935a248f6 allow aborting of shell mode (!) commands, similar to shell tool commands. fix bug that prevented aborts after first abort. more robust killing logic (#616) 2025-05-30 00:46:43 -07:00
Jacob Richman
dab7517622 Refactor read-file and support images. (#480) 2025-05-29 15:30:18 -07:00
Olcan
bfeaac8441 live output from shell tool (#573) 2025-05-27 15:40:18 -07:00
Taylor Mullen
480549e02e Refactor(chat): Introduce custom Chat class for future modifications
- Copied the `Chat` class from `@google/genai` into `packages/server/src/core/geminiChat.ts`.
- This change is in preparation for future modifications to the chat handling logic.
- Updated relevant files to use the new `GeminiChat` class.

Part of https://github.com/google-gemini/gemini-cli/issues/551
2025-05-26 14:20:28 -07:00
Taylor Mullen
8440b971f5 Fix(cli): Prevent premature input box reactivation during tool confirmation
- Introduced a 'validating' state for tool calls to prevent the input box from reappearing while waiting for a tool's `shouldConfirmExecute` method to complete.
- When a tool call is initiated, it's now immediately set to a 'validating' status. This ensures the UI remains in a busy/responding state.
- `useGeminiStream` now considers the 'validating' state as part of `StreamingState.Responding`.
- `useToolScheduler` has been updated to:
    - Set the initial status of new tool calls to 'validating'.
    - Asynchronously perform the `shouldConfirmExecute` check.
    - Transition to 'awaiting_approval' or 'scheduled' based on the check's outcome.
- This resolves an issue where a slow `shouldConfirmExecute` could lead to the input prompt becoming active again before the tool call lifecycle was fully determined. While 'validating' is currently treated similarly to 'executing' in the UI, this new state provides a foundation for more customized user experiences during this phase in the future.

Fixes https://github.com/google-gemini/gemini-cli/issues/527
2025-05-25 16:06:33 -07:00
Jacob Richman
b4c16d1f56 Code review comment fixes and some refactors. (#525)
No intentional different behavior aside for tweaks suggested from the code review of #506 Refactor: Extract console message logic to custom hook

This commit refactors the console message handling from App.tsx into a new custom hook useConsoleMessages.

This change improves the testability of the console message logic and declutters the main App component.

Created useConsoleMessages.ts to encapsulate console message state and update logic.
Updated App.tsx to utilize the new useConsoleMessages hook.
Added unit tests for useConsoleMessages.ts to ensure its functionality.
I deleted and started over on LoadingIndicator.test.tsx as I spent way too much time trying to fix it before just regenerating the tests as the code was easier to write tests for from scratch and the existing tests were not that good (I added them in the previous pull request).
2025-05-24 00:44:17 -07:00
Jacob Richman
91ee02898a feat: Modify loading indicator to support a paused state (#506) 2025-05-23 10:25:17 -07:00
Allen Hutchison
f8c4276e69 Refactor(cli): Move memory add logic to server tool call (#493) 2025-05-23 08:47:19 -07:00
Taylor Mullen
7c3591f641 Refactor: Update streaming state logic to hide loader during confirmation
- The streaming state logic in `useGeminiStream.ts` has been updated.
- Previously, the loading indicator was displayed even when the system was
waiting for user confirmation on a tool call.
- This change introduces a `WaitingForConfirmation` state to ensure the
loading indicator is hidden during these confirmation prompts, improving
the user experience.
2025-05-23 00:39:05 -07:00
Brandon Keiji
fb1d13d600 fix: cancel parallel tool calls mid-execution (#489) 2025-05-22 03:02:45 -07:00
Brandon Keiji
a8bfdf2d56 fix: synchronization between executed tools and turn loops (#488) 2025-05-22 02:51:07 -07:00
Brandon Keiji
02eec5c8ca feat: useToolScheduler hook to manage parallel tool calls (#448) 2025-05-21 22:57:53 -07:00
Olcan
00ab1905e0 use pending history item for shell mode, update as output is received (#471) 2025-05-21 13:16:50 -07:00
Seth Troisi
cd13c5881b Add Logger for command history (#435) 2025-05-21 00:36:22 -07:00
Taylor Mullen
bda472f147 fix(cli): Prevent request cancellation after multiple Esc presses
- Ensures `abortControllerRef` is reset after a request is aborted or completed.
- Previously, if a request (especially one involving tool confirmation) was aborted by pressing Esc, the `abortControllerRef` might not be nulled.
- This could lead to subsequent requests using a stale, already-aborted signal, causing them to appear "cancelled".
- The fix unconditionally sets `abortControllerRef.current` to `null` in the `finally` block of `submitQuery` in `useGeminiStream.ts`.
- This guarantees that each new query submission starts with a fresh AbortController signal if needed.
- Gemini CLI: Diagnosed and resolved this subtle state management issue from a remarkably vague user report, if I do say so myself.

Fixes https://buganizer.corp.google.com/issues/418496499
2025-05-20 23:58:53 -07:00
Jacob Richman
716f7875a2 Support Images and PDFs (#447) 2025-05-20 13:02:41 -07:00
Taylor Mullen
323b1298f9 fix: Ensure user written ! is treated opaquely if not in shell mode\n\n- Addresses an issue where commands prefixed with ! (e.g., !ls) were incorrectly handled by the shell command processor if the ! was added after initially typing the command.\n- Ensures that such commands are correctly forwarded to the Gemini model.\n- Updates useGeminiStream to be aware of shell mode to properly manage streaming state.\n\nFixes https://buganizer.corp.google.com/issues/418761305 2025-05-19 16:16:47 -07:00
Taylor Mullen
968e09f0b5 fix: Ensure filename is available for diff rendering in write-file
This commit resolves a bug where the `write-file` operation could fail to render content due to a missing filename.

The fix involves:
- Ensuring `fileName` is consistently passed to `DiffRenderer.tsx` through `ToolConfirmationMessage.tsx`, `ToolMessage.tsx`, and `useGeminiStream.ts`.
- Modifying `edit.ts` and `write-file.ts` to include `fileName` in the `FileDiff` object.
- Expanding the `FileDiff` interface in `tools.ts` to include `fileName`.

Additionally, this commit enhances the diff rendering by:
- Adding syntax highlighting based on file extension in `DiffRenderer.tsx`.
- Adding more language mappings to `getLanguageFromExtension` in `DiffRenderer.tsx`.
- Added lots of tests for all the above.

Fixes https://b.corp.google.com/issues/418125982
2025-05-16 10:13:13 -07:00
Brandon Keiji
458fd86429 refactor: derive streaming state from tool calls and isresponding state (#376) 2025-05-16 09:45:58 -07:00