import os
from datetime import datetime, timedelta

from swarms import Agent
from swarm_models import OpenAIChat
from swarms.prompts.finance_agent_sys_prompt import (
    FINANCIAL_AGENT_SYS_PROMPT,
)
from swarms.structs.task import Task
from swarms.utils.loguru_logger import logger

# Example setup

# Get the OpenAI API key from the environment variable
api_key = os.getenv("OPENAI_API_KEY")

# Create an instance of the OpenAIChat class
model = OpenAIChat(
    api_key=api_key, model_name="gpt-4o-mini", temperature=0.1
)

# Initialize the agent
agent = Agent(
    agent_name="Financial-Analysis-Agent_sas_chicken_eej",
    system_prompt=FINANCIAL_AGENT_SYS_PROMPT,
    llm=model,
    max_loops=1,
    autosave=True,
    dashboard=False,
    verbose=True,
    dynamic_temperature_enabled=True,
    saved_state_path="finance_agent.json",
    user_name="swarms_corp",
    retry_attempts=1,
    context_length=200000,
    return_step_meta=False,
)


# Define a task with a condition and action
def condition_check():
    # Example condition: Check if a certain file exists
    return os.path.exists("finance_agent.json")


def post_execution_action():
    logger.info("Task completed! Post execution action triggered.")


# Schedule the task to run 10 seconds from now
schedule_time = datetime.now() + timedelta(seconds=10)

# Schedule the task for 1 month from now
# schedule_time = datetime.now() + timedelta(days=30)

# Create the task instance
task = Task(
    agent=agent,
    description="How can I establish a ROTH IRA to buy stocks and get a tax break? What are the criteria",
    condition=condition_check,
    action=post_execution_action,
    schedule_time=schedule_time,
    trigger=None,
)

# Run the task
task.run(
    "How can I establish a ROTH IRA to buy stocks and get a tax break? What are the criteria"
)

# The task will be scheduled to run at the specified time, check the condition,
# execute if the condition is met, and perform the post-execution action.