Skip to content

Comments

Add extension registry client#18396

Merged
chrstnb merged 2 commits intomainfrom
cb/registryclient
Feb 6, 2026
Merged

Add extension registry client#18396
chrstnb merged 2 commits intomainfrom
cb/registryclient

Conversation

@chrstnb
Copy link
Collaborator

@chrstnb chrstnb commented Feb 5, 2026

Summary

Add a client to be used to fetch extensions from geminicli.com/extensions.json

Details

This may change in the future, but should unblock UI work at the moment.

Related Issues

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

How to Validate

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

@chrstnb chrstnb requested a review from a team as a code owner February 5, 2026 20:13
@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello @chrstnb, 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 establishes the foundational client-side logic for interacting with an external extension registry. It enables the CLI to programmatically access and filter a list of available extensions, which is crucial for supporting future user interface features related to extension discovery and management. The implementation includes robust data retrieval, sorting, and searching capabilities, along with a caching layer for efficiency.

Highlights

  • New Extension Registry Client: Introduced a new ExtensionRegistryClient class responsible for fetching and managing extension data from a remote registry.
  • Data Fetching and Caching: The client fetches extension data from 'https://geminicli.com/extensions.json' and includes a caching mechanism to prevent redundant network requests.
  • Extension Management Features: Provides methods to retrieve extensions with pagination and sorting options (by ranking or alphabetically), search extensions by name, description, or full name, and fetch a single extension by its ID.
  • Comprehensive Unit Tests: Accompanying unit tests have been added to ensure the reliability and correct functionality of the ExtensionRegistryClient, covering various scenarios including pagination, sorting, searching, caching, and error handling.
Changelog
  • packages/cli/src/config/extensionRegistryClient.test.ts
    • Added new test file for ExtensionRegistryClient.
    • Includes tests for getExtensions with pagination and sorting.
    • Contains tests for searchExtensions by various criteria.
    • Verifies getExtension functionality and handling of non-existent IDs.
    • Tests the caching mechanism to ensure single fetch calls.
    • Validates error handling when the fetch operation fails.
  • packages/cli/src/config/extensionRegistryClient.ts
    • Added new file defining the RegistryExtension interface, specifying the structure of extension data.
    • Introduced the ExtensionRegistryClient class.
    • Implemented getExtensions method for paginated and sorted retrieval of extensions.
    • Implemented searchExtensions method for filtering extensions based on a query string.
    • Implemented getExtension method to retrieve a specific extension by its ID.
    • Added a private fetchAllExtensions method with caching logic to fetch data from the registry URL.
Activity
  • The pull request introduces a new client to fetch extensions from geminicli.com/extensions.json.
  • It addresses and fixes issue Checkpointing documentation #1321 related to the extension registry.
  • The author has included a pre-merge checklist, indicating readiness for review and validation on various platforms.
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.

@gemini-cli gemini-cli bot added the status/need-issue Pull requests that need to have an associated issue. label Feb 5, 2026
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 a new ExtensionRegistryClient to fetch extensions from a remote JSON file, along with corresponding tests. The implementation is clean and the tests are comprehensive. I've identified two areas for improvement in extensionRegistryClient.ts to enhance robustness and adherence to project conventions:

  1. The use of the global fetch API should be replaced with fetchWithTimeout to prevent the application from hanging on slow network requests.
  2. The switch statement in getExtensions should include an exhaustive check in its default case to ensure all possible orderBy values are handled, which aligns with the repository's coding guidelines.

@github-actions
Copy link

github-actions bot commented Feb 5, 2026

Size Change: +167 B (0%)

Total Size: 23.8 MB

ℹ️ View Unchanged
Filename Size Change
./bundle/gemini.js 23.8 MB +167 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

Copy link
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.

few comments, LGTM overall

@chrstnb chrstnb added this pull request to the merge queue Feb 6, 2026
Merged via the queue into main with commit 099fea2 Feb 6, 2026
26 checks passed
@chrstnb chrstnb deleted the cb/registryclient branch February 6, 2026 17:24
aswinashok44 pushed a commit to aswinashok44/gemini-cli that referenced this pull request Feb 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

status/need-issue Pull requests that need to have an associated issue.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants