-
Notifications
You must be signed in to change notification settings - Fork 130
Feat/gemini cli agent #36
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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
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