This commit is contained in:
Binary file not shown.
@@ -1,19 +1,21 @@
|
||||
from crewai import CrewBase, Agent, Task, Crew
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai.project import CrewBase, agent, task, crew
|
||||
from crewai_tools import MCPServerAdapter
|
||||
from mcp import StdioServerParameters
|
||||
import os
|
||||
from typing import Dict, Any
|
||||
from pr_reviewer.llm import get_llm
|
||||
|
||||
|
||||
class CodeReviewCrew(CrewBase):
|
||||
@CrewBase
|
||||
class CodeReviewCrew:
|
||||
"""Code Review Crew for conducting code quality reviews."""
|
||||
|
||||
agents_config = "config/agents.yaml"
|
||||
tasks_config = "config/tasks.yaml"
|
||||
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
# Configure Semgrep MCP server connection
|
||||
self.llm = get_llm()
|
||||
self.semgrep_server_params = StdioServerParameters(
|
||||
command="semgrep",
|
||||
args=["--metrics=off", "--json", "--stdin-display-name", "scanned_code", "--"],
|
||||
@@ -24,32 +26,38 @@ class CodeReviewCrew(CrewBase):
|
||||
}
|
||||
)
|
||||
|
||||
@Agent
|
||||
@agent
|
||||
def code_reviewer(self) -> Agent:
|
||||
"""Senior Software Engineer agent for code review."""
|
||||
return Agent(
|
||||
config=self.agents_config["code_reviewer"],
|
||||
tools=[], # Tools will be added via MCP adapter in the task
|
||||
llm=self.llm,
|
||||
tools=[],
|
||||
verbose=True
|
||||
)
|
||||
|
||||
@Task
|
||||
@task
|
||||
def code_review_task(self) -> Task:
|
||||
"""Task for conducting code review."""
|
||||
return Task(
|
||||
config=self.tasks_config["code_review_task"],
|
||||
)
|
||||
|
||||
@Crew
|
||||
@crew
|
||||
def crew(self) -> Crew:
|
||||
"""Create the Code Review crew."""
|
||||
# Create MCP server adapter for Semgrep
|
||||
semgrep_adapter = MCPServerAdapter(self.semgrep_server_params)
|
||||
tools = []
|
||||
try:
|
||||
semgrep_adapter = MCPServerAdapter(self.semgrep_server_params)
|
||||
if hasattr(semgrep_adapter, 'tools'):
|
||||
tools = semgrep_adapter.tools
|
||||
except Exception as e:
|
||||
print(f"MCP adapter not available: {e}")
|
||||
|
||||
return Crew(
|
||||
agents=[self.code_reviewer()],
|
||||
tasks=[self.code_review_task()],
|
||||
process="sequential",
|
||||
verbose=True,
|
||||
tools=semgrep_adapter.tools if hasattr(semgrep_adapter, 'tools') else [],
|
||||
tools=tools,
|
||||
)
|
||||
Reference in New Issue
Block a user