import sys
import uuid
import datetime
from sqlalchemy.orm import Session
from app.db.session import SessionLocal
from app.db import models
from app.db.models import session as db_session
from app.db.models import agent as db_agent

def create_cron():
    db = SessionLocal()
    try:
        user = db.query(models.User).first()
        if not user:
             print("No users found.")
             return

        template = db_agent.AgentTemplate(
             id=str(uuid.uuid4()),
             name="Prod CRON Agent",
             description="Simple agent triggered every 1 minute via CRON",
             system_prompt_path="/app/data/skills/test_sys_prompt.md",
             max_loop_iterations=1
        )
        db.add(template)

        session = db_session.Session(
             title="CRON Session - Prod test",
             user_id=user.id,
             provider_name="gemini/gemini-2.5-flash",
             feature_name="cron_test"
        )
        db.add(session)
        db.flush()

        instance_id = str(uuid.uuid4())
        instance = db_agent.AgentInstance(
             id=instance_id,
             template_id=template.id,
             session_id=session.id,
             status="idle",
             current_workspace_jail="/tmp",
             last_heartbeat=datetime.datetime.utcnow()
        )
        db.add(instance)

        trigger = db_agent.AgentTrigger(
             id=str(uuid.uuid4()),
             instance_id=instance_id,
             trigger_type="cron",
             cron_expression="60"
        )
        db.add(trigger)
        db.commit()

        print(f"✅ Successfully provisioned Prod CRON Agent Instance: {instance_id}")
    except Exception as e:
        db.rollback()
        print(f"Fail: {e}")
    finally:
        db.close()

create_cron()
