Files
letta-server/letta/orm/blocks_agents.py

29 lines
1.1 KiB
Python

from sqlalchemy import ForeignKey, ForeignKeyConstraint, Index, String, UniqueConstraint
from sqlalchemy.orm import Mapped, mapped_column
from letta.orm.base import Base
class BlocksAgents(Base):
"""Agents must have one or many blocks to make up their core memory."""
__tablename__ = "blocks_agents"
__table_args__ = (
UniqueConstraint(
"agent_id",
"block_label",
name="unique_label_per_agent",
),
ForeignKeyConstraint(
["block_id", "block_label"], ["block.id", "block.label"], name="fk_block_id_label", deferrable=True, initially="DEFERRED"
),
UniqueConstraint("agent_id", "block_id", name="unique_agent_block"),
Index("ix_blocks_agents_block_label_agent_id", "block_label", "agent_id"),
Index("ix_blocks_block_label", "block_label"),
)
# unique agent + block label
agent_id: Mapped[str] = mapped_column(String, ForeignKey("agents.id"), primary_key=True)
block_id: Mapped[str] = mapped_column(String, primary_key=True)
block_label: Mapped[str] = mapped_column(String, primary_key=True)