from __future__ import annotations from datetime import datetime from sqlalchemy import BigInteger, Integer, String, Text, func from sqlalchemy.dialects.mysql import LONGTEXT from sqlalchemy.orm import Mapped, mapped_column from supply_infra.db.base import Base class AgentDocumentInjection(Base): """Web-managed document content appended to an Agent's base system prompt.""" __tablename__ = "agent_document_injection" id: Mapped[int] = mapped_column(BigInteger, primary_key=True, autoincrement=True) agent_name: Mapped[str] = mapped_column( String(128), nullable=False, unique=True, index=True, comment="Agent name", ) content: Mapped[str] = mapped_column( Text().with_variant(LONGTEXT(), "mysql"), nullable=False, default="", comment="Document content injected after the base system prompt", ) enabled: Mapped[int] = mapped_column( Integer, nullable=False, default=1, comment="Whether the document injection is active", ) create_time: Mapped[datetime] = mapped_column( nullable=False, server_default=func.now(), ) update_time: Mapped[datetime] = mapped_column( nullable=False, server_default=func.now(), onupdate=func.now(), )