-
Notifications
You must be signed in to change notification settings - Fork 2.7k
feat(utils): Add support for nested state access in template injection #3673
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
base: main
Are you sure you want to change the base?
Conversation
Summary of ChangesHello @Jainish-S, 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 significantly enhances the Highlights
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Code Review
This pull request introduces a valuable feature for nested state access in template injection, including optional chaining. The implementation is robust, well-documented, and accompanied by a comprehensive set of unit tests. My feedback focuses on minor code consistency improvements to enhance maintainability.
33b3465 to
21b66a4
Compare
ea451fc to
96e2f82
Compare
for the PR google#3673 & commit: 96e2f82
|
Hi @Jainish-S , Thank you for your work on this pull request. We appreciate the effort you've invested. |
for the PR google#3673 & commit: 96e2f82
|
Hi @ryanaiagent , Did the formatting. First I had decided to not include the sample and then added it in the 2nd commit and had not formatted it there. Let me know if we want to keep the sample or not. |
1eb3887 to
e7e8192
Compare
for the PR google#3673 & commit: 96e2f82
for the PR google#3673 & commit: 96e2f82
|
Hi @Jainish-S , thanks for the fix. You can leave the sample for now. |
|
Hi @ankursharmas , can you please review this. |
e7e8192 to
d9a3177
Compare
for the PR google#3673 & commit: 96e2f82
for the PR google#3673 & commit: 96e2f82
for the PR google#3673 & commit: 96e2f82
for the PR google#3673 & commit: 96e2f82
d9a3177 to
804bc38
Compare
|
@ryanaiagent @ankursharmas , any updates on this? |
- Add nested state access support using dot notation in inject_session_state - Fix optional chaining error handling for better robustness - Add comprehensive test coverage for nested state templates Resolves: google#575
for the PR google#3673 & commit: 96e2f82
for the PR google#3673 & commit: 96e2f82
804bc38 to
aedf076
Compare
1. Link to an existing issue (if applicable):
2. Or, if no issue exists, describe the change:
Problem:
Previously,
inject_session_state()only supported flat state access (e.g.,{user_name}), preventing users from accessing nested properties within state objects. This limitation forced developers to either flatten their state structure or manually handle template replacement, reducing code readability and flexibility when working with complex, hierarchical state structures.Solution:
Added support for nested state access in template injection using dot notation with optional chaining. The implementation adds a
_get_nested_value()helper function that:__getitem__) and attribute access (getattr)?operator for safe navigationKeyErrorfor missing required pathsThis solution was chosen because it:
Testing Plan
Unit Tests:
Summary of pytest results:
Added 12 comprehensive test cases covering:
Manual End-to-End (E2E) Tests: Created a sample agent to demonstrate the feature (located at
contributing/samples/nested_state_agent/, not included in this PR). Setup:Agent code:
Expected behavior:
Actual output:
✅ Result: Nested state values correctly injected into instruction template
Checklist
Additional context
Note: This PR re-implements the solution for issue #575. A previous implementation existed but was not merged due to merge conflicts. This is a fresh implementation with the same functionality. Feature highlights:
Files changed:
Key improvements made: