import os

from crewai import LLM
from crewai import Agent, Crew, Process, Task
from crewai.project import CrewBase, agent, crew, task
from crewai_tools import (
	ScrapeWebsiteTool,
	EXASearchTool,
	FileReadTool
)






@CrewBase
class EmpireScalingAutomationWhitelabelStrategyBrandElevationCrew:
    """EmpireScalingAutomationWhitelabelStrategyBrandElevation crew"""

    
    @agent
    def brand_intelligence_analyst(self) -> Agent:
        
        
        return Agent(
            config=self.agents_config["brand_intelligence_analyst"],
            
            
            tools=[				ScrapeWebsiteTool()],
            reasoning=False,
            max_reasoning_attempts=None,
            inject_date=True,
            allow_delegation=False,
            max_iter=25,
            max_rpm=None,
            
            
            max_execution_time=None,
            llm=LLM(
                model="openai/gpt-4o-mini",
                
                
            ),
            
        )
        
    
    @agent
    def competitive_market_researcher(self) -> Agent:
        
        
        return Agent(
            config=self.agents_config["competitive_market_researcher"],
            
            
            tools=[				EXASearchTool()],
            reasoning=False,
            max_reasoning_attempts=None,
            inject_date=True,
            allow_delegation=False,
            max_iter=25,
            max_rpm=None,
            
            
            max_execution_time=None,
            llm=LLM(
                model="openai/gpt-4o-mini",
                
                
            ),
            
        )
        
    
    @agent
    def whitelabel_strategy_architect(self) -> Agent:
        
        
        return Agent(
            config=self.agents_config["whitelabel_strategy_architect"],
            
            
            tools=[				ScrapeWebsiteTool()],
            reasoning=False,
            max_reasoning_attempts=None,
            inject_date=True,
            allow_delegation=False,
            max_iter=25,
            max_rpm=None,
            
            
            max_execution_time=None,
            llm=LLM(
                model="openai/gpt-4o-mini",
                
                
            ),
            
        )
        
    
    @agent
    def content_strategy_generator(self) -> Agent:
        
        
        return Agent(
            config=self.agents_config["content_strategy_generator"],
            
            
            tools=[				EXASearchTool()],
            reasoning=False,
            max_reasoning_attempts=None,
            inject_date=True,
            allow_delegation=False,
            max_iter=25,
            max_rpm=None,
            
            
            max_execution_time=None,
            llm=LLM(
                model="openai/gpt-4o-mini",
                
                
            ),
            
        )
        
    
    @agent
    def executive_strategy_synthesizer(self) -> Agent:
        
        
        return Agent(
            config=self.agents_config["executive_strategy_synthesizer"],
            
            
            tools=[				FileReadTool()],
            reasoning=False,
            max_reasoning_attempts=None,
            inject_date=True,
            allow_delegation=False,
            max_iter=25,
            max_rpm=None,
            
            
            max_execution_time=None,
            llm=LLM(
                model="openai/gpt-4o-mini",
                
                
            ),
            
        )
        
    

    
    @task
    def analyze_core_brand_architecture(self) -> Task:
        return Task(
            config=self.tasks_config["analyze_core_brand_architecture"],
            markdown=False,
            
            
        )
    
    @task
    def research_competitive_market_landscape(self) -> Task:
        return Task(
            config=self.tasks_config["research_competitive_market_landscape"],
            markdown=False,
            
            
        )
    
    @task
    def design_whitelabel_scaling_framework(self) -> Task:
        return Task(
            config=self.tasks_config["design_whitelabel_scaling_framework"],
            markdown=False,
            
            
        )
    
    @task
    def generate_scalable_content_strategy(self) -> Task:
        return Task(
            config=self.tasks_config["generate_scalable_content_strategy"],
            markdown=False,
            
            
        )
    
    @task
    def create_executive_implementation_playbook(self) -> Task:
        return Task(
            config=self.tasks_config["create_executive_implementation_playbook"],
            markdown=False,
            
            
        )
    

    @crew
    def crew(self) -> Crew:
        """Creates the EmpireScalingAutomationWhitelabelStrategyBrandElevation crew"""

        return Crew(
            agents=self.agents,  # Automatically created by the @agent decorator
            tasks=self.tasks,  # Automatically created by the @task decorator
            process=Process.sequential,
            verbose=True,

            chat_llm=LLM(model="openai/gpt-4o-mini"),
        )


