feat(core): Introduce AgentLoopContext.#21198
Conversation
|
Hi @joshualitt, thank you so much for your contribution to Gemini CLI! We really appreciate the time and effort you've put into this. We're making some updates to our contribution process to improve how we track and review changes. Please take a moment to review our recent discussion post: Improving Our Contribution Process & Introducing New Guidelines. Key Update: Starting January 26, 2026, the Gemini CLI project will require all pull requests to be associated with an existing issue. Any pull requests not linked to an issue by that date will be automatically closed. Thank you for your understanding and for being a part of our community! |
|
Size Change: +533 B (0%) Total Size: 26 MB ℹ️ View Unchanged
|
ea4a038 to
17afeb1
Compare
| addItem, | ||
| registerBackgroundShell, | ||
| consumeUserHint, | ||
| config, |
There was a problem hiding this comment.
This is related to a lint warning, which may be in the codebase at HEAD. I might be able to remove this if you prefer we don't land this minor change in this PR, but I haven't tested this.
17afeb1 to
2872fa7
Compare
Summary of ChangesHello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request initiates a significant architectural refactoring by introducing the Highlights
Changelog
Activity
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
There was a problem hiding this comment.
Code Review
This pull request introduces the AgentLoopContext interface as a first step in a larger refactoring effort to decouple components from the main Config object. The Config class now implements this new interface, acting as a "Trojan Horse" to allow for incremental adoption. Key components like Scheduler and ToolExecutor have been updated to depend on the AgentLoopContext abstraction instead of the concrete Config class. Numerous test files have also been updated to align mock configurations with the new interface requirements. The changes are well-structured and represent a positive step towards improving the codebase's modularity and testability. I found no high or critical issues in this pull request.
2872fa7 to
00559b4
Compare
gundermanc
left a comment
There was a problem hiding this comment.
LGTM. Left a few ideas but nothing blocking.
396c5a9 to
7d5f321
Compare
This is the first PR, it introduces the new interface which will be separated out of Config by the end of this series.
7d5f321 to
b06e994
Compare
The AgentLoopContext introduction (google-gemini#21198) caused the Scheduler to read toolRegistry via a property getter instead of the getToolRegistry() method. Object.create(config) inherits the getter from the prototype chain, so the agent-scoped config always returned the main registry. Add Object.defineProperty to shadow the inherited getter with the agent-specific registry. Add regression tests. Fixes google-gemini#21765
The AgentLoopContext introduction (google-gemini#21198) caused the Scheduler to read toolRegistry via a property getter instead of the getToolRegistry() method. Object.create(config) inherits the getter from the prototype chain, so the agent-scoped config always returned the main registry. Add Object.defineProperty to shadow the inherited getter with the agent-specific registry. Add regression tests. Fixes google-gemini#21765
The AgentLoopContext introduction (google-gemini#21198) caused the Scheduler to read toolRegistry via a property getter instead of the getToolRegistry() method. Object.create(config) inherits the getter from the prototype chain, so the agent-scoped config always returned the main registry. Add Object.defineProperty to shadow the inherited getter with the agent-specific registry. Add regression tests. Fixes google-gemini#21765
This is the first PR, it introduces the new interface which will be separated out of Config by the end of this series.
Part of a series to address #21197