Commit Graph

2570 Commits

Author SHA1 Message Date
Allen Hutchison
9bc9c6e6c5 Question flag (#125) 2025-04-22 18:32:03 -07:00
Brandon Keiji
ef7dcdb49e feat: add alias to the cli bin directive (#126) 2025-04-23 01:04:34 +00:00
Jaana Dogan
05c568126f Add a tip about creating an alias during development (#122)
Identical to #118, it's lost while we were recovering the main branch.
2025-04-22 16:17:37 -07:00
Allen Hutchison
8cfd915960 Fix the case where passthrough tools weren't using the correct CWD from -d 2025-04-22 15:19:40 -07:00
Olcan
93458727e8 use full url for base image (found by seth troisi to save 5s from docker build time) (#124) 2025-04-22 14:41:25 -07:00
Olcan
a792c4a159 fix .env check (#123) 2025-04-22 14:31:02 -07:00
Olcan
5e34d9e276 Refactor_sandbox_command (#121) 2025-04-22 13:51:50 -07:00
Jaana Dogan
60fc979332 fix hanging tools
https://github.com/google-gemini/gemini-code/pull/117/
2025-04-22 13:40:36 -07:00
Jaana Dogan
8e0fb9ee2f Initiate the GeminiClient with a config
Also address the open readability improvement comments from #104.
2025-04-22 11:20:19 -07:00
Taylor Mullen
3db2a796ec Fix Tool -> Text -> Confirmation bu that results in disordered history
- We weren't reseting the tool group inbetween content which meant we'd start a new group on the first tool call, and if regular textual content followed it'd effectively close that group; however, we weren't updating our state to really close that group. Meaning, any subsequent tool calls or confirmations would get grouped with the original grouping.
  - When we see textual content from Gemini we now reset the tool call group.

Fixes https://b.corp.google.com/issues/412605330
2025-04-22 10:33:36 -04:00
Taylor Mullen
5c5c470671 Update confirmation dialog UI
- This chaneset aligns our confirmation dialog with: https://screenshot.googleplex.com/9yZCX636LzpMrgc
- Primary changes include having custom indicators for confirmation options that align with our coloring / scheme

Fixes https://b.corp.google.com/issues/412607128
2025-04-22 10:33:06 -04:00
Taylor Mullen
80b04dc505 Update UI of tool messages
- Bring tool messages in line with original envisioned UI of: https://screenshot.googleplex.com/9yZCX636LzpMrgc
  - In particular this represents more descriptive names. FWIW we already had this tech we just weren't passing around information correctly (`displayName` vs. `name`)
 - Add gray to our list of color pallete's and removed Background (unused)
 - Re-enabled representing canceled messages
 - Migrated back towards a cleaner tool message design of status symbols & border colors vs. overly verbose text.
 - Removed border from confirmation diffs.
Fixes https://b.corp.google.com/issues/412598909
2025-04-22 08:05:30 -04:00
Olcan
1ed9743ad4 quiet sandbox build (#111) 2025-04-21 23:26:53 -07:00
Olcan
a7fba66832 env var to set default model, display model on lower right (#110) 2025-04-21 23:25:10 -07:00
Brandon Keiji
79710375e3 fix: point npmrc to dogfood artifact registry (#108) 2025-04-21 23:11:51 -07:00
Brandon Keiji
98fa8d2b51 fix: support node globals in scripts (#109) 2025-04-22 06:10:25 +00:00
Benjamin Bastian
1eeadcd85c Update sandbox script to not require term variables (#105)
If `nounset` is active, it'll require that TERM and COLORTERM is set in the
environment. It's not necessary that these variables are set and it should be
passed to the sandbox. This change just causes the TERM and COLORTERM to be set
to an empty string if they are unset.
2025-04-21 22:59:49 -07:00
Olcan
f9c4014e28 fix source mapping when debugging in sandbox (#107) 2025-04-21 19:04:00 -07:00
Allen Hutchison
1a167b2ea5 Piped input (#104)
* New method for handling stdin. Bypass Ink, and output to stdout. Makes the CLI work like a typical Unix application when called with piped input.

* Fixing a few post-merge errors.

* Format code.

* Clean up lint and format errors.
2025-04-21 17:41:44 -07:00
Jaana Dogan
cacf0cc0ef 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
dd81be1b9b Add build status to README (#99) 2025-04-21 15:47:53 -07:00
Jaana Dogan
843d7c1fe3 Fix the broken build (#98) 2025-04-21 15:44:20 -07:00
Olcan
1340c7a792 fix sandbox build broken at #94 (#97) 2025-04-21 14:55:17 -07:00
Olcan
319f211211 improved (full color) sandbox, mount /tmp to display build warnings, display sandbox name in footer (#96) 2025-04-21 14:43:43 -07:00
Seth Troisi
7663ccf0bd Fix Docker Build permission issue (#95)
During docker build `npm install` running as node was exiting with 243 (EACCES) from trying to install the tgz files because `npm pack` created the files with 400 permissions on my system.
2025-04-21 14:35:03 -07:00
Brandon Keiji
3f048bce0f fix: remove circular dependency in background terminal analyzer (#94) 2025-04-21 14:27:11 -07:00
Brandon Keiji
dec9726083 fix: use relative imports within the same package (#93) 2025-04-21 14:09:14 -07:00
Olcan
09973956ae sandbox.sh utility to easily log into or execute commands in a sandbox, set hostname and SANDBOX env var to container name (#92) 2025-04-21 13:52:51 -07:00
Jaana Dogan
ddaa21c750 Remove dead methods from ToolRegistry (#91)
* getToolSchemas is deprecated.
* listAvailableTools is now getAllTools.
2025-04-21 13:29:36 -07:00
Jaana Dogan
d4614619b4 Remove dead comments (#90) 2025-04-21 13:06:46 -07:00
Jaana Dogan
baf39042c8 Remove duplicate CLI tools module, remove the global tool registry (#89) 2025-04-21 12:59:31 -07:00
Olcan
2571e07175 enable debugging through sandbox (#88) 2025-04-21 12:39:58 -07:00
Jaana Dogan
53a5728009 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
Olcan
dea0782c89 fix flags via sandbox (again) (#87) 2025-04-21 12:13:16 -07:00
Jaana Dogan
651a543403 Remove gemini-stream.ts (#84)
This module is no longer needed and the types can be provided from types.
2025-04-21 11:49:46 -07:00
Taylor Mullen
738c2692fb 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
Olcan
618f8a43cf don't assume .env file (#83) 2025-04-21 11:21:48 -07:00
Jaana Dogan
0a531f732b Ignore grep error if .env doesn't exist (#82)
.env file is optional. If it doesn't exist, the current script outputs "grep: .env: No such file or directory".
2025-04-21 11:15:55 -07:00
Tyler
7f95c594c0 More license headers, add a CONTRIBUTING.md file (also fix README.md formatting) (#81) 2025-04-21 10:04:03 -07:00
Olcan
fad526c63f make sandbox attachable, document in README (#80) 2025-04-21 09:17:17 -07:00
Olcan
7588aef07c added sandbox section to readme (#79) 2025-04-21 08:31:36 -07:00
Taylor Mullen
81f0f618f7 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
Brandon Keiji
e351baf10f feat: add custom eslint rule for cross-package imports (#77) 2025-04-21 08:02:11 -07:00
Olcan
39bdedab9c seamless sandboxing (just set GEMINI_CODE_SANDBOX=true in .env) (#76) 2025-04-21 07:50:18 -07:00
Taylor Mullen
bfb064024e Revert debug undo. 2025-04-20 22:28:39 -04:00
Taylor Mullen
ce0f2dd868 Update README to reflect current state of the world.
- We now have CI/CD
- We have linting support (so added a section)
- Fixed `npm run debug` to allow debugging again.
2025-04-20 22:25:20 -04:00
Olcan
d668600672 fix passing of flags through start scripts (#73) 2025-04-20 19:19:42 -07:00
Taylor Mullen
63f864cdd7 Fix read-file from exploding with path not found error.
- There were a few hiccups here. Somehow 2.5-flash wasn't actually abiding by our tool schema. Instead it was inferring `path`. To semi-combat this I've renamed `file_path` -> `path`.
- We weren't elevating errors that were created via schema validation. Instead both the `glob` and `read-file.ts` now surface this.
- In error scenarios (like failing schema) we were improperly surfacing these as success cases because we were overriding tool status.
2025-04-20 22:13:55 -04:00
Olcan
c095091853 fix function calling for gemini 2.5 series (#65) 2025-04-20 19:05:27 -07:00
Tyler
d55168f51f 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