Merged
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
This PR adds comprehensive Gemini CLI agent support to the Entire CLI tool, implementing the full agent interface with hook support for tracking Gemini CLI sessions. The implementation mirrors the existing Claude Code agent pattern while adapting to Gemini's specific hook format and JSON transcript structure.
Changes:
- New Gemini CLI agent implementation with full hook support
- Integration tests for concurrent session handling and agent operations
- Hook handlers for session lifecycle, tool usage, and model interactions
- Support for Gemini-specific transcript parsing (JSON vs Claude's JSONL)
Reviewed changes
Copilot reviewed 33 out of 33 changed files in this pull request and generated 7 comments.
Show a summary per file
| File | Description |
|---|---|
| cmd/entire/cli/agent/geminicli/gemini.go | Core agent implementation with session ID transformation and transcript parsing |
| cmd/entire/cli/agent/geminicli/hooks.go | Hook installation/uninstallation logic for .gemini/settings.json |
| cmd/entire/cli/agent/geminicli/transcript.go | Gemini JSON transcript parser for extracting prompts and modified files |
| cmd/entire/cli/agent/geminicli/types.go | Type definitions for Gemini settings, hooks, and input structures |
| cmd/entire/cli/hooks_geminicli_handlers.go | 11 hook handler implementations for Gemini lifecycle events |
| cmd/entire/cli/setup.go | Adds setupGeminiCLIHook() to enable flow |
| cmd/entire/cli/integration_test/gemini_concurrent_session_test.go | 5 integration tests for concurrent session warning behavior |
| cmd/entire/cli/integration_test/hooks.go | Test helpers for Gemini hook simulation |
| cmd/entire/cli/integration_test/testenv.go | Added GeminiProjectDir to test environment |
| cmd/entire/cli/integration_test/agent_test.go | Unit tests for agent detection, hook installation, and session operations |
| .gemini/settings.json | Gemini CLI hook configuration for the repository |
| test-gemini.txt | Test artifact file |
| .entire/settings.json | Modified local configuration |
| .claude/settings.json | Modified local Claude configuration |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
734b3e9 to
f1965c8
Compare
Entire-Checkpoint: c945f262e88d
Entire-Checkpoint: 9c53780d06b7
Entire-Checkpoint: ab2b9748b105
Entire-Checkpoint: e2775d4606d9
…nup/fallback only
2bcd90c to
b5e48b7
Compare
Entire-Checkpoint: 864e0c91f5c0
Entire-Checkpoint: de22551397e1
Entire-Checkpoint: d70360ee0899
Entire-Checkpoint: 881d5df3659e
…-gemini Prevent to many checkpoints gemini
Remove Gemini hooks setup from entire enable by default
Entire-Checkpoint: 9bd0b182d20c
Entire-Checkpoint: b78c37a2e644
Entire-Checkpoint: 89e8867f9092
Entire-Checkpoint: 7662d755ef9f
Soph
approved these changes
Jan 21, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Features:
New Files
cmd/entire/cli/agent/geminicli/gemini.gocmd/entire/cli/agent/geminicli/hooks.gocmd/entire/cli/agent/geminicli/transcript.gocmd/entire/cli/agent/geminicli/types.gocmd/entire/cli/agent/geminicli/*_test.gocmd/entire/cli/hooks_geminicli_handlers.gocmd/entire/cli/integration_test/gemini_concurrent_session_test.go.gemini/GEMINI.mdModified Files
cmd/entire/cli/hook_registry.gocmd/entire/cli/hooks_cmd.gocmd/entire/cli/setup.gocmd/entire/cli/agent/types.gocmd/entire/cli/agent/registry.gocmd/entire/cli/session/state.gocmd/entire/cli/strategy/manual_commit_condensation.gocmd/entire/cli/strategy/manual_commit_logs.gocmd/entire/cli/hooks_claudecode_handlers.goIntegration tests cover:
TestGeminiConcurrentSessionWarning_BlocksFirstPrompt- Verifies blocking response formatTestGeminiConcurrentSessionWarning_SetsWarningFlag- Verifies state persistenceTestGeminiConcurrentSessionWarning_SubsequentPromptsSucceed- Verifies one-time warningTestGeminiConcurrentSessionWarning_NoWarningWithoutCheckpoints- Verifies no false positivesTestGeminiConcurrentSessionWarning_ResumeCommandFormat- Verifies Gemini-specific resume commandClaude Code vs Gemini CLI Hook
.claude/settings.json.gemini/settings.jsonhooks: [{matcher, hooks: [{command}]}]hooks: {EventName: [{matcher?, hooks: [{name, type, command}]}]}{"continue":false,"stopReason":"..."}{"decision":"block","reason":"..."}claude -r <session-id>gemini --resume <session-id>How to Test