from sqlalchemy import Column, String, Text, Boolean, ForeignKey, Integer, JSON from sqlalchemy.orm import relationship from app.models.base import BaseModel class Agent(BaseModel): __tablename__ = "agents" name = Column(String(100), nullable=False) role = Column(String(100), nullable=False) # master, schedule_planner, executor, librarian, analyst description = Column(Text, nullable=True) system_prompt = Column(Text, nullable=False) selected_skill_ids = Column(JSON, default=list, nullable=False) is_active = Column(Boolean, default=True) is_default = Column(Boolean, default=False) messages = relationship("AgentMessage", back_populates="agent", cascade="all, delete-orphan") replies = relationship("ForumReply", back_populates="agent") class AgentMessage(BaseModel): __tablename__ = "agent_messages" agent_id = Column(String(36), ForeignKey("agents.id"), nullable=False, index=True) conversation_id = Column(String(36), ForeignKey("conversations.id"), nullable=False, index=True) role = Column(String(20), nullable=False) # system, user, assistant content = Column(Text, nullable=False) agent = relationship("Agent", back_populates="messages")