feat: Add node file usage tracking and filtering
Introduces the NodeFileUsage model and migration to track file usage per node in conversations. Updates token buffer memory and agent node logic to filter file attachments based on node context, preventing cross-node file leakage. Also registers the new model in the models package.pull/21938/head
parent
87530438c0
commit
b448a2fccf
@ -0,0 +1,36 @@
|
||||
"""add node_file_usage table
|
||||
|
||||
Revision ID: b2a0bfccd123
|
||||
Revises: 0ab65e1cc7fa
|
||||
Create Date: 2025-07-07 11:52:00
|
||||
|
||||
"""
|
||||
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
from sqlalchemy.dialects import postgresql
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = 'b2a0bfccd123'
|
||||
down_revision = '0ab65e1cc7fa'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade() -> None:
|
||||
op.create_table(
|
||||
"node_file_usage",
|
||||
sa.Column("id", postgresql.UUID(as_uuid=True), primary_key=True, server_default=sa.text("uuid_generate_v4()")),
|
||||
sa.Column("conversation_id", postgresql.UUID(as_uuid=True), nullable=False, index=True),
|
||||
sa.Column("message_id", postgresql.UUID(as_uuid=True), nullable=True),
|
||||
sa.Column("node_id", sa.String(length=64), nullable=False, index=True),
|
||||
sa.Column("upload_file_id", postgresql.UUID(as_uuid=True), nullable=False),
|
||||
sa.Column("created_at", sa.DateTime(), server_default=sa.func.now(), nullable=False),
|
||||
sa.ForeignKeyConstraint(["conversation_id"], ["conversations.id"],),
|
||||
sa.ForeignKeyConstraint(["message_id"], ["messages.id"],),
|
||||
sa.ForeignKeyConstraint(["upload_file_id"], ["upload_files.id"],),
|
||||
)
|
||||
|
||||
|
||||
def downgrade() -> None:
|
||||
op.drop_table("node_file_usage")
|
||||
Loading…
Reference in New Issue