-
Notifications
You must be signed in to change notification settings - Fork 0
feat: Add GitHub Wizard Agent #2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
Summary of ChangesHello @QueryPlanner, 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 refactoring by replacing the general-purpose 'jarvis' agent with a new, specialized 'GitHub Wizard' agent. The core purpose of this change is to enhance the agent's ability to interact with GitHub by integrating directly with GitHub MCP tools, thereby providing a more focused and powerful assistant for repository tasks. This also involves removing outdated, general-purpose functionalities to create a more streamlined and efficient agent. Highlights
🧠 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. Using Gemini Code AssistThe 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
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 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
|
There was a problem hiding this 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 'GitHub Wizard' agent, refactoring the previous 'jarvis' agent. The changes are well-structured, including adding documentation for the new agent and its configuration. I've provided a couple of suggestions to improve maintainability and adherence to Python best practices, such as making configuration more flexible with environment variables and using the standard logging module.
| # Import tools | ||
| from .tools.github_mcp import github_mcp_tools | ||
|
|
||
| api_base_url = "https://openrouter.ai/api/v1" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The api_base_url is hardcoded. It's better to make this configurable via an environment variable, with the current value as a default. This improves flexibility for different environments (e.g., testing, staging) and aligns with how OPENROUTER_API_KEY is handled.
| api_base_url = "https://openrouter.ai/api/v1" | |
| api_base_url = os.getenv("OPENROUTER_API_BASE", "https://openrouter.ai/api/v1") |
| import os | ||
| from google.adk.tools.mcp_tool.mcp_toolset import McpToolset, StreamableHTTPConnectionParams | ||
|
|
||
| def _get_github_mcp_tools(): | ||
| github_token = os.getenv("GITHUB_TOKEN") | ||
| tools = [] | ||
| if github_token: | ||
| tools = [ | ||
| McpToolset( | ||
| connection_params=StreamableHTTPConnectionParams( | ||
| url="https://api.githubcopilot.com/mcp/", | ||
| headers={"Authorization": f"Bearer {github_token}"} | ||
| ) | ||
| ) | ||
| ] | ||
| else: | ||
| print("Warning: GITHUB_TOKEN not found. GitHub MCP tools will not be available.") | ||
| return tools |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This file can be improved in a few ways for better maintainability and adherence to best practices:
- Use
loggingfor warnings: Instead ofprint, theloggingmodule should be used for warnings. This provides more control over log levels and output. - Use a constant for the URL: The hardcoded URL should be extracted into a module-level constant for better readability and easier maintenance.
- Simplify logic: The function
_get_github_mcp_toolscan be simplified by using an early return (guard clause) for the case whereGITHUB_TOKENis not set.
The suggested code applies these improvements.
| import os | |
| from google.adk.tools.mcp_tool.mcp_toolset import McpToolset, StreamableHTTPConnectionParams | |
| def _get_github_mcp_tools(): | |
| github_token = os.getenv("GITHUB_TOKEN") | |
| tools = [] | |
| if github_token: | |
| tools = [ | |
| McpToolset( | |
| connection_params=StreamableHTTPConnectionParams( | |
| url="https://api.githubcopilot.com/mcp/", | |
| headers={"Authorization": f"Bearer {github_token}"} | |
| ) | |
| ) | |
| ] | |
| else: | |
| print("Warning: GITHUB_TOKEN not found. GitHub MCP tools will not be available.") | |
| return tools | |
| import os | |
| import logging | |
| from google.adk.tools.mcp_tool.mcp_toolset import McpToolset, StreamableHTTPConnectionParams | |
| GITHUB_MCP_URL = "https://api.githubcopilot.com/mcp/" | |
| def _get_github_mcp_tools(): | |
| github_token = os.getenv("GITHUB_TOKEN") | |
| if not github_token: | |
| logging.warning("GITHUB_TOKEN not found. GitHub MCP tools will not be available.") | |
| return [] | |
| return [ | |
| McpToolset( | |
| connection_params=StreamableHTTPConnectionParams( | |
| url=GITHUB_MCP_URL, | |
| headers={"Authorization": f"Bearer {github_token}"}, | |
| ) | |
| ) | |
| ] |
Renamed 'jarvis' to 'github_wizard'. Refactored tool management to use GitHub MCP tools directly in 'tools/github_mcp.py'. Removed legacy calculator tools and sub-agents. Added documentation.