import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, ManyToOne, Index, } from 'typeorm'; import { Agent } from './Agent'; import { User } from './User'; export enum MessageRole { USER = 'user', ASSISTANT = 'assistant', SYSTEM = 'system', } @Entity('chat_messages') @Index(['agentId', 'userId', 'createdAt']) export class ChatMessage { @PrimaryGeneratedColumn('uuid') id: string; @ManyToOne(() => Agent, (agent) => agent.messages) agent: Agent; @Column() agentId: string; @ManyToOne(() => User, { nullable: true }) user: User; @Column({ nullable: true }) userId?: string; @Column({ type: 'enum', enum: MessageRole, }) role: MessageRole; @Column('text') content: string; @Column('jsonb', { nullable: true }) metadata?: Record; // Additional message metadata @CreateDateColumn() createdAt: Date; }