Skip to content

chore(tools/firestore,tools/http,tools/mindsdb,tools/mongodb): decouple source config from tools#2065

Merged
Yuan325 merged 1 commit into
config-branchfrom
config-firestore-etc
Dec 13, 2025
Merged

chore(tools/firestore,tools/http,tools/mindsdb,tools/mongodb): decouple source config from tools#2065
Yuan325 merged 1 commit into
config-branchfrom
config-firestore-etc

Conversation

@Yuan325

@Yuan325 Yuan325 commented Nov 27, 2025

Copy link
Copy Markdown
Contributor

Within Invoke() and RequiresClientAuthorization(), get Source from ResourceManager and use it to call functions directly.

@Yuan325 Yuan325 requested a review from a team November 27, 2025 17:25
@gemini-code-assist

Copy link
Copy Markdown
Contributor

Summary of Changes

Hello @Yuan325, 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 a significant architectural improvement by decoupling the direct dependency of tools on their data source configurations and client instances. By shifting the responsibility of providing source-specific clients and configurations to a ResourceManager accessed during tool invocation, the system gains increased flexibility, reduces tight coupling, and streamlines the initialization process for various tools. This change primarily impacts how tools interact with Firestore, HTTP, MindsDB, and MongoDB sources, promoting a more robust and maintainable codebase.

Highlights

  • Decoupling Source Configuration from Tools: The core change involves refactoring various tools (Firestore, HTTP, MindsDB, MongoDB) to no longer directly hold client instances or source-specific configuration. Instead, tools now retrieve their associated Source from a ResourceManager during their Invoke method execution.
  • Dynamic Source Access: During Invoke and RequiresClientAuthorization calls, tools now dynamically fetch the Source from the ResourceManager and then use specific methods on that Source to access necessary clients (e.g., Firestore client, HTTP client, MindsDB SQL pool, MongoDB client) or configuration details (e.g., HTTP headers, base URL).
  • Improved Modularity and Testability: This refactoring enhances modularity by separating tool logic from direct source management. It also simplifies tool initialization by removing source validation and client instantiation from the Initialize method, making tools more flexible and potentially easier to test.
  • Standardized RequiresClientAuthorization Signature: The RequiresClientAuthorization method across all affected tools has been updated to return (bool, error) instead of just bool, providing more detailed error handling capabilities.
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-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

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 tools to decouple them from their underlying data sources. Instead of storing a client instance within the tool struct, tools now retrieve the source and its client from a SourceProvider at invocation time. This is a good architectural improvement that enhances modularity. The changes are applied consistently across various tools for Firestore, HTTP, MindsDB, and MongoDB.

I've found a couple of areas for improvement:

  • In firestorequery.go, a now-unused Client field was left in the Tool struct.
  • In mongodbinsertone.go, parameter access is brittle and should be made more robust.

Additionally, the signature for RequiresClientAuthorization has been updated across all tools to return an error, which is a good change for future-proofing. Overall, this is a solid refactoring with minor cleanups suggested.

Comment thread internal/tools/mongodb/mongodbinsertone/mongodbinsertone.go
@averikitsch averikitsch assigned averikitsch and unassigned duwenxin99 Dec 1, 2025
Base automatically changed from config-server to config-branch December 9, 2025 01:36
@Yuan325 Yuan325 requested a review from a team December 9, 2025 01:36
@Yuan325 Yuan325 force-pushed the config-firestore-etc branch from 7025451 to 36d3cce Compare December 11, 2025 18:08
@Yuan325 Yuan325 force-pushed the config-firestore-etc branch from 36d3cce to f2a860f Compare December 13, 2025 15:07
@Yuan325 Yuan325 merged commit cfcd98f into config-branch Dec 13, 2025
6 of 11 checks passed
@Yuan325 Yuan325 deleted the config-firestore-etc branch December 13, 2025 15:08
Yuan325 added a commit that referenced this pull request Dec 17, 2025
…le source config from tools (#2065)

Within Invoke() and RequiresClientAuthorization(), get Source from
ResourceManager and use it to call functions directly.
Yuan325 added a commit that referenced this pull request Dec 18, 2025
…le source config from tools (#2065)

Within Invoke() and RequiresClientAuthorization(), get Source from
ResourceManager and use it to call functions directly.
Yuan325 added a commit that referenced this pull request Dec 19, 2025
…le source config from tools (#2065)

Within Invoke() and RequiresClientAuthorization(), get Source from
ResourceManager and use it to call functions directly.
Yuan325 added a commit that referenced this pull request Dec 19, 2025
…le source config from tools (#2065)

Within Invoke() and RequiresClientAuthorization(), get Source from
ResourceManager and use it to call functions directly.
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.

3 participants