Skip to content

Conversation

@QueryPlanner
Copy link
Owner

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.

@gemini-code-assist
Copy link

Summary of Changes

Hello @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

  • Agent Renaming and Specialization: The 'jarvis' agent has been renamed to 'github_wizard' and its functionality has been specialized to focus exclusively on GitHub-related tasks.
  • Tooling Refactor: Tool management has been refactored to directly utilize GitHub MCP (Model Context Protocol) tools, enhancing the agent's capabilities for repository interaction.
  • Legacy Tool Removal: All legacy calculator tools and the 'researcher' sub-agent previously associated with the 'jarvis' agent have been removed, streamlining the agent's design.
  • Documentation Update: New documentation has been added for the 'GitHub Wizard' agent, detailing its features, configuration requirements (including GITHUB_TOKEN), and available tools.

🧠 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 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

@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 '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"

Choose a reason for hiding this comment

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

medium

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.

Suggested change
api_base_url = "https://openrouter.ai/api/v1"
api_base_url = os.getenv("OPENROUTER_API_BASE", "https://openrouter.ai/api/v1")

Comment on lines +1 to +18
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

Choose a reason for hiding this comment

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

medium

This file can be improved in a few ways for better maintainability and adherence to best practices:

  1. Use logging for warnings: Instead of print, the logging module should be used for warnings. This provides more control over log levels and output.
  2. Use a constant for the URL: The hardcoded URL should be extracted into a module-level constant for better readability and easier maintenance.
  3. Simplify logic: The function _get_github_mcp_tools can be simplified by using an early return (guard clause) for the case where GITHUB_TOKEN is not set.

The suggested code applies these improvements.

Suggested change
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}"},
)
)
]

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