Skip to content

feat: add suport for genkit java#4546

Merged
pavelgj merged 2 commits intofirebase:mainfrom
xavidop:xavier/support-genkit-java
Feb 11, 2026
Merged

feat: add suport for genkit java#4546
pavelgj merged 2 commits intofirebase:mainfrom
xavidop:xavier/support-genkit-java

Conversation

@xavidop
Copy link
Contributor

@xavidop xavidop commented Feb 10, 2026

Description here... Help the reviewer by:

  • linking to an issue that includes more details
  • if it's a new feature include samples of how to use the new feature
  • (optional if issue link is provided) if you fixed a bug include basic bug details

Checklist (if applicable):

@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello @xavidop, 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 introduces expanded project root detection capabilities within the genkit-tools common utilities. It specifically integrates checks for Java-based build system files, pom.xml for Maven and build.gradle for Gradle, allowing the tool to correctly identify the root of Java projects. This enhancement broadens the applicability of the tool to a wider range of development environments.

Highlights

  • Java Project Support: Added support for detecting Java projects by checking for pom.xml (Maven) and build.gradle (Gradle) files when determining the project root.
  • Project Root Detection: The findProjectRoot utility function was enhanced to include Maven and Gradle project files in its search for the repository's root directory.

🧠 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
  • genkit-tools/common/src/utils/utils.ts
    • Added new variables for Maven and Gradle project file paths.
    • Included checks for Maven and Gradle project file existence in the asynchronous access calls.
    • Updated the project root determination logic to consider Maven and Gradle project files.
Activity
  • No activity has occurred on this pull request yet.
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
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 adds support for detecting Java projects by looking for pom.xml and build.gradle files. The changes correctly extend the findProjectRoot function. My review includes two main suggestions for improvement:

  1. Refactoring the file-checking logic to reduce code repetition and improve maintainability.
  2. Adding unit tests for the findProjectRoot function to ensure the new detection logic is reliable and prevent future regressions.

On a minor note, there's a typo in the pull request title ('suport' should be 'support').

@pavelgj pavelgj enabled auto-merge (squash) February 11, 2026 17:32
auto-merge was automatically disabled February 11, 2026 17:40

Head branch was pushed to by a user without write access

@pavelgj
Copy link
Collaborator

pavelgj commented Feb 11, 2026

/gemini review

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 refactors the findProjectRoot function to support additional project types, including Java, by searching for a list of project marker files. The change is a good improvement, making the logic cleaner and more extensible. I have one suggestion to further simplify the implementation and improve its efficiency by using Promise.any. Also, there's a small typo in the PR title ('suport' should be 'support').

Comment on lines +46 to 55
const checks = projectMarkers.map((file) =>
fs
.access(pyproject2Path)
.access(path.join(currentDir, file))
.then(() => true)
.catch(() => false),
]);
if (
packageJsonExists ||
goModExists ||
pyprojectExists ||
pyproject2Exists
) {
.catch(() => false)
);
const results = await Promise.all(checks);
if (results.some((found) => found)) {
return currentDir;
}
Copy link
Contributor

Choose a reason for hiding this comment

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

medium

The current implementation can be made more concise and efficient by using Promise.any. This will resolve as soon as the first project marker file is found, avoiding unnecessary checks for other markers in the same directory. This also simplifies the code. The existing try...catch block will correctly handle the case where no marker files are found in a directory, as Promise.any will reject.

      const promises = projectMarkers.map((file) =>
        fs.access(path.join(currentDir, file))
      );
      await Promise.any(promises);
      return currentDir;

@pavelgj pavelgj merged commit 4a28b80 into firebase:main Feb 11, 2026
19 of 20 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

2 participants