import yaml from crewai import Agent, Task, Crew from modal_agents import ( repository_cloner_agent, code_analysis_agent, metadata_agent, documentation_agent, orchestrator_agent ) # Load agents configuration with open('agents.yaml', 'r') as f: agents_config = yaml.safe_load(f) # Map tool names to actual functions tool_mapping = { 'repository_cloner_agent': repository_cloner_agent, 'code_analysis_agent': code_analysis_agent, 'metadata_agent': metadata_agent, 'documentation_agent': documentation_agent, 'orchestrator_agent': orchestrator_agent } # Instantiate agents agents = {} for agent_cfg in agents_config: tool_funcs = [tool_mapping[tool_name] for tool_name in agent_cfg.get('tools', [])] agent = Agent( role=agent_cfg['role'], goal=agent_cfg['goal'], backstory=agent_cfg['backstory'], tools=tool_funcs ) agents[agent_cfg['role']] = agent # Load tasks configuration with open('tasks.yaml', 'r') as f: tasks_config = yaml.safe_load(f) # Instantiate tasks tasks = [] for task_cfg in tasks_config: task = Task( description=task_cfg['description'], expected_output=task_cfg['expected_output'], agent=agents[task_cfg['agent']] ) tasks.append(task) # Create the crew crew = Crew( agents=list(agents.values()), tasks=tasks, process='sequential' ) def run_crew(github_url): # Append the GitHub URL to each task's description for task in crew.tasks: task.description += f"\nGitHub URL: {github_url}" return crew.kickoff()