110 lines
4.5 KiB
Python
110 lines
4.5 KiB
Python
from datetime import datetime
|
|
|
|
from sqlalchemy import Column, Integer, String, Text, DateTime, Boolean, JSON, ForeignKey, Index, Float
|
|
from sqlalchemy.orm import relationship
|
|
|
|
from models.enhanced_strategy_models import Base
|
|
|
|
|
|
class AgentRun(Base):
|
|
__tablename__ = "agent_runs"
|
|
|
|
id = Column(Integer, primary_key=True, index=True)
|
|
user_id = Column(String(255), nullable=False, index=True)
|
|
agent_type = Column(String(100), nullable=False, index=True)
|
|
prompt = Column(Text, nullable=True)
|
|
status = Column(String(30), nullable=False, default="running", index=True)
|
|
success = Column(Boolean, nullable=True)
|
|
error_message = Column(Text, nullable=True)
|
|
result_summary = Column(Text, nullable=True)
|
|
mlflow_run_id = Column(String(255), nullable=True)
|
|
started_at = Column(DateTime, default=datetime.utcnow, index=True)
|
|
finished_at = Column(DateTime, nullable=True, index=True)
|
|
|
|
events = relationship("AgentEvent", back_populates="run", cascade="all, delete-orphan")
|
|
|
|
|
|
class AgentEvent(Base):
|
|
__tablename__ = "agent_events"
|
|
|
|
id = Column(Integer, primary_key=True, index=True)
|
|
run_id = Column(Integer, ForeignKey("agent_runs.id"), nullable=True, index=True)
|
|
user_id = Column(String(255), nullable=False, index=True)
|
|
agent_type = Column(String(100), nullable=True, index=True)
|
|
event_type = Column(String(50), nullable=False, index=True)
|
|
severity = Column(String(20), nullable=False, default="info", index=True)
|
|
message = Column(Text, nullable=True)
|
|
payload = Column(JSON, nullable=True)
|
|
created_at = Column(DateTime, default=datetime.utcnow, index=True)
|
|
|
|
run = relationship("AgentRun", back_populates="events")
|
|
|
|
|
|
class AgentAlert(Base):
|
|
__tablename__ = "agent_alerts"
|
|
|
|
id = Column(Integer, primary_key=True, index=True)
|
|
user_id = Column(String(255), nullable=False, index=True)
|
|
source = Column(String(30), nullable=False, default="agents", index=True)
|
|
alert_type = Column(String(50), nullable=False, index=True)
|
|
severity = Column(String(20), nullable=False, default="info", index=True)
|
|
title = Column(String(255), nullable=False)
|
|
message = Column(Text, nullable=False)
|
|
cta_path = Column(String(255), nullable=True)
|
|
payload = Column(JSON, nullable=True)
|
|
dedupe_key = Column(String(255), nullable=True, index=True)
|
|
created_at = Column(DateTime, default=datetime.utcnow, index=True)
|
|
read_at = Column(DateTime, nullable=True, index=True)
|
|
|
|
|
|
Index("ix_agent_alerts_user_unread", AgentAlert.user_id, AgentAlert.read_at)
|
|
|
|
|
|
class AgentApprovalRequest(Base):
|
|
__tablename__ = "agent_approval_requests"
|
|
|
|
id = Column(Integer, primary_key=True, index=True)
|
|
user_id = Column(String(255), nullable=False, index=True)
|
|
run_id = Column(Integer, ForeignKey("agent_runs.id"), nullable=True, index=True)
|
|
agent_type = Column(String(100), nullable=True, index=True)
|
|
action_id = Column(String(255), nullable=False, index=True)
|
|
action_type = Column(String(255), nullable=False, index=True)
|
|
target_resource = Column(String(255), nullable=True)
|
|
risk_level = Column(Float, nullable=False, default=0.5)
|
|
payload = Column(JSON, nullable=True)
|
|
status = Column(String(30), nullable=False, default="pending", index=True)
|
|
expires_at = Column(DateTime, nullable=True, index=True)
|
|
decided_at = Column(DateTime, nullable=True, index=True)
|
|
decision = Column(String(30), nullable=True)
|
|
user_comments = Column(Text, nullable=True)
|
|
created_at = Column(DateTime, default=datetime.utcnow, index=True)
|
|
|
|
|
|
Index("ix_agent_approval_user_status", AgentApprovalRequest.user_id, AgentApprovalRequest.status)
|
|
|
|
|
|
class AgentProfile(Base):
|
|
__tablename__ = "agent_profiles"
|
|
|
|
id = Column(Integer, primary_key=True, index=True)
|
|
user_id = Column(String(255), nullable=False, index=True)
|
|
agent_key = Column(String(100), nullable=False, index=True)
|
|
agent_type = Column(String(100), nullable=True, index=True)
|
|
|
|
display_name = Column(String(255), nullable=True)
|
|
enabled = Column(Boolean, nullable=False, default=True, index=True)
|
|
|
|
schedule = Column(JSON, nullable=True)
|
|
notification_prefs = Column(JSON, nullable=True)
|
|
|
|
tone = Column(JSON, nullable=True)
|
|
system_prompt = Column(Text, nullable=True)
|
|
task_prompt_template = Column(Text, nullable=True)
|
|
reporting_prefs = Column(JSON, nullable=True)
|
|
|
|
created_at = Column(DateTime, default=datetime.utcnow, index=True)
|
|
updated_at = Column(DateTime, default=datetime.utcnow, index=True)
|
|
|
|
|
|
Index("ix_agent_profiles_user_key", AgentProfile.user_id, AgentProfile.agent_key, unique=True)
|