Skip to content

feat(core): add modelAvailabilityService for managing and tracking model health#13426

Merged
adamfweidman merged 3 commits intomainfrom
afw/avail-1
Nov 21, 2025
Merged

feat(core): add modelAvailabilityService for managing and tracking model health#13426
adamfweidman merged 3 commits intomainfrom
afw/avail-1

Conversation

@adamfweidman
Copy link
Copy Markdown
Contributor

Summary

Introduces ModelAvailabilityService to track and manage the availability state of models

Details

  • ModelAvailabilityService: A centralized service to store and query model health.
  • Availability States:
    • Terminal: Failures like quota or capacity that render a model unusable for the current session (or until cleared).
    • Sticky Retry: Transient failures that allow a "retry once per turn" behavior
  • Model Selection: The selectFirstAvailable method iterates through a priority list of models and picks the first one that satisfies availability constraints, returning skipped reasons for others.

Related Issues

Fixes: https://github.com/google-gemini/maintainers-gemini-cli/issues/1072

How to Validate

npm run test

Pre-Merge Checklist

  • [] Updated relevant documentation and README (if needed)
  • Added/updated tests (if needed)
  • Noted breaking changes (if any)
  • Validated on required platforms/methods:
    • MacOS
      • npm run
      • npx
      • Docker
      • Podman
      • Seatbelt
    • Windows
      • npm run
      • npx
      • Docker
    • Linux
      • npm run
      • npx
      • Docker

@adamfweidman adamfweidman requested a review from a team as a code owner November 19, 2025 17:57
@gemini-code-assist
Copy link
Copy Markdown
Contributor

Summary of Changes

Hello @adamfweidman, 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 implements a new service designed to enhance the robustness of model selection by providing a structured way to manage and query the health of various models. It distinguishes between different types of model failures, allowing the system to intelligently prioritize and select available models, thereby improving overall system resilience and user experience.

Highlights

  • New Model Availability Service: Introduces a ModelAvailabilityService to centralize the tracking and management of model health and availability states.
  • Availability States: Defines two primary availability states: 'Terminal' for persistent failures (e.g., quota, capacity) and 'Sticky Retry' for transient failures that allow one retry per turn.
  • Intelligent Model Selection: Adds a selectFirstAvailable method that iterates through a prioritized list of models, selecting the first one that meets availability constraints and providing reasons for skipped models.
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.

Copy link
Copy Markdown
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 a ModelAvailabilityService to manage model health and availability, which is a great addition for robust model selection. The implementation is solid and includes good test coverage. I've identified one area for improvement in selectFirstAvailable where refactoring to remove duplicated logic would enhance maintainability. Overall, this is a well-executed feature.

Comment thread packages/core/src/availability/modelAvailabilityService.ts
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Nov 19, 2025

Size Change: -2 B (0%)

Total Size: 21.1 MB

ℹ️ View Unchanged
Filename Size Change
./bundle/gemini.js 21.1 MB -2 B (0%)
./bundle/sandbox-macos-permissive-closed.sb 1.03 kB 0 B
./bundle/sandbox-macos-permissive-open.sb 890 B 0 B
./bundle/sandbox-macos-permissive-proxied.sb 1.31 kB 0 B
./bundle/sandbox-macos-restrictive-closed.sb 3.29 kB 0 B
./bundle/sandbox-macos-restrictive-open.sb 3.36 kB 0 B
./bundle/sandbox-macos-restrictive-proxied.sb 3.56 kB 0 B

compressed-size-action

@adamfweidman
Copy link
Copy Markdown
Contributor Author

/gemini review

Copy link
Copy Markdown
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 a ModelAvailabilityService to track model health and availability, which is a great addition for robust model selection. My review focuses on improving the correctness and maintainability of this new service. I've identified a critical issue where a terminal failure state could be incorrectly overridden by a transient one, and I've also suggested a refactoring to reduce code duplication and improve maintainability in the model selection logic. Overall, the changes are good and with these adjustments, the service will be more robust.

Comment thread packages/core/src/availability/modelAvailabilityService.ts
Comment thread packages/core/src/availability/modelAvailabilityService.ts
Comment thread packages/core/src/availability/modelAvailabilityService.ts
Comment thread packages/core/src/availability/modelAvailabilityService.ts
Comment thread packages/core/src/availability/modelAvailabilityService.ts
Comment thread packages/core/src/availability/modelAvailabilityService.ts
Comment thread packages/core/src/availability/modelAvailabilityService.ts Outdated
Copy link
Copy Markdown
Contributor

@sehoon38 sehoon38 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@adamfweidman adamfweidman added this pull request to the merge queue Nov 21, 2025
Merged via the queue into main with commit aeffa2a Nov 21, 2025
22 checks passed
@adamfweidman adamfweidman deleted the afw/avail-1 branch November 21, 2025 17:04
thacio added a commit to thacio/auditaria that referenced this pull request Nov 23, 2025
werdnum pushed a commit to werdnum/gemini-cli that referenced this pull request Nov 24, 2025
danpalmer pushed a commit to danpalmer/gemini-cli that referenced this pull request Nov 29, 2025
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