diff --git a/backend/src/models/__init__.py b/backend/src/models/__init__.py index e6f6bbc..ef32387 100644 --- a/backend/src/models/__init__.py +++ b/backend/src/models/__init__.py @@ -16,6 +16,7 @@ from models.schedule_subscriptions import ScheduleSubscription from models.todos import Todo from models.todo_sources import TodoSource from models.user_agents import UserAgent +from models.user_agent_catalog import UserAgentCatalog __all__ = [ "AgentChatMessage", @@ -35,4 +36,5 @@ __all__ = [ "Todo", "TodoSource", "UserAgent", + "UserAgentCatalog", ] diff --git a/backend/src/models/user_agent_catalog.py b/backend/src/models/user_agent_catalog.py new file mode 100644 index 0000000..0791e87 --- /dev/null +++ b/backend/src/models/user_agent_catalog.py @@ -0,0 +1,30 @@ +from __future__ import annotations + +from sqlalchemy import ForeignKey, String +from sqlalchemy.dialects.postgresql import JSONB, UUID +from sqlalchemy.orm import Mapped, mapped_column + +from core.db.base import Base, TimestampMixin + + +class UserAgentCatalog(TimestampMixin, Base): + __tablename__: str = "user_agent_catalog" + + agent_type: Mapped[str] = mapped_column( + String(20), + primary_key=True, + ) + llm_id: Mapped[str] = mapped_column( + UUID(as_uuid=True), + ForeignKey("llms.id", ondelete="RESTRICT"), + nullable=False, + ) + status: Mapped[str] = mapped_column( + String(20), + nullable=False, + ) + config: Mapped[dict] = mapped_column( + JSONB, + nullable=False, + server_default="{}", + )