Skip to content

Conversation

@jayy-77
Copy link

@jayy-77 jayy-77 commented Feb 10, 2026

Please ensure you have read the contribution guide before creating a pull request.

Link to Issue or Description of Change

1. Link to an existing issue (if applicable):

2. Or, if no issue exists, describe the change:

If applicable, please follow the issue templates to provide as much detail as
possible.

Problem:
A clear and concise description of what the problem is.

Solution:
A clear and concise description of what you want to happen and why you choose
this solution.

Testing Plan

Please describe the tests that you ran to verify your changes. This is required
for all PRs that are not small documentation or typo fixes.

Unit Tests:

  • I have added or updated unit tests for my change.
  • All unit tests pass locally.

Please include a summary of passed pytest results.

Manual End-to-End (E2E) Tests:

Please provide instructions on how to manually test your changes, including any
necessary setup or configuration. Please provide logs or screenshots to help
reviewers better understand the fix.

Checklist

  • I have read the CONTRIBUTING.md document.
  • I have performed a self-review of my own code.
  • I have commented my code, particularly in hard-to-understand areas.
  • I have added tests that prove my fix is effective or that my feature works.
  • New and existing unit tests pass locally with my changes.
  • I have manually tested my changes end-to-end.
  • Any dependent changes have been merged and published in downstream modules.

Additional context

Add any other context or screenshots about the feature request here.

@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello @jayy-77, 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 enhances the event compaction mechanism by introducing more flexible and granular control. It allows applications to define custom logic for when compaction should occur on a per-session basis and provides a new plugin hook for dynamic session configuration. This improves the adaptability of the system, enabling tailored compaction strategies based on specific session states or user requirements.

Highlights

  • Per-session Compaction Predicate: Introduced a compaction_predicate in EventsCompactionConfig to allow dynamic, per-session control over whether compaction should run, based on custom logic provided by a callable.
  • before_session_start Plugin Hook: Added a new plugin lifecycle hook, before_session_start, enabling plugins to inspect and modify session settings (like compaction status) before an invocation begins.
  • Session-level Compaction Control: Implemented set_compaction_enabled and is_compaction_enabled methods on the Session object, providing direct control to enable or disable compaction for individual sessions.
  • Centralized Compaction Logic: A new should_compact_session utility function was added to consolidate the logic for determining if compaction should occur, prioritizing session-level overrides and then app-level predicates.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Changelog
  • src/google/adk/apps/app.py
    • Added Callable and TYPE_CHECKING imports.
    • Introduced compaction_predicate to EventsCompactionConfig for dynamic compaction control.
  • src/google/adk/apps/compaction.py
    • Added should_compact_session function to determine if compaction should run, considering session overrides and app predicates.
  • src/google/adk/plugins/base_plugin.py
    • Imported Session for type checking.
    • Added before_session_start async callback for plugins to modify session settings.
  • src/google/adk/runners.py
    • Imported should_compact_session.
    • Integrated before_session_start plugin hook into _run_with_trace, rewind_async, and run_live.
    • Updated compaction check to use should_compact_session.
  • src/google/adk/sessions/session.py
    • Added set_compaction_enabled and is_compaction_enabled methods for per-session compaction control.
Using Gemini Code Assist

The 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 /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

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 .gemini/ folder in the base of the repository. Detailed instructions can be found here.

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

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@adk-bot
Copy link
Collaborator

adk-bot commented Feb 10, 2026

Response from ADK Triaging Agent

Hello @jayy-77, thank you for creating this PR!

Could you please describe the change, including the problem and the solution you are proposing?

In addition, could you please provide a testing plan for your changes? This should include details of any unit tests you have added or updated, as well as instructions for manual end-to-end testing, with logs or screenshots to help reviewers understand the fix.

This information will help reviewers to review your PR more efficiently. Thanks!

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a 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 significant enhancements to the application's event compaction mechanism and plugin system. It adds per-session control over event compaction through a new compaction_predicate in EventsCompactionConfig and dedicated methods (set_compaction_enabled, is_compaction_enabled) in the Session class. Furthermore, a new before_session_start plugin hook has been integrated, allowing plugins to dynamically adjust session settings, such as compaction, before an invocation begins. The refactoring to use should_compact_session centralizes the compaction decision logic, improving maintainability. Overall, the changes are well-implemented, enhance flexibility, and maintain code clarity.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants