diff --git a/src/chat-core/types/message.ts b/src/chat-core/types/message.ts index 66a6569a..8f1e3da8 100644 --- a/src/chat-core/types/message.ts +++ b/src/chat-core/types/message.ts @@ -7,7 +7,19 @@ export type MessageDirection = 'INBOUND' | 'OUTBOUND'; export type MessageType = 'TEXT' | 'IMAGE' | 'VIDEO' | 'SYSTEM' | 'UNKNOWN'; -export type MessageActorType = 'MEDIA_USER' | 'MEDIA_ACCOUNT' | 'SYSTEM'; +/** + * Message sender type — polymorphic discriminator for (senderType, senderId). + * INBOUND → MEDIA_USER, OUTBOUND → MEDIA_ACCOUNT, SYSTEM → SYSTEM (id is null). + * Agent never appears here; the operator is tracked via operatorAgentId. + */ +export type MessageSenderType = 'MEDIA_USER' | 'MEDIA_ACCOUNT' | 'SYSTEM'; + +/** + * Message receiver type — polymorphic discriminator for (receiverType, receiverId). + * Mirror of sender side: INBOUND → MEDIA_ACCOUNT, OUTBOUND → MEDIA_USER, + * SYSTEM → SYSTEM (id is null). + */ +export type MessageReceiverType = 'MEDIA_USER' | 'MEDIA_ACCOUNT' | 'SYSTEM'; export type SendStatus = 'PENDING' | 'SENDING' | 'SENT' | 'FAILED' | 'STUCK'; @@ -42,12 +54,12 @@ export interface Message { direction: MessageDirection; msgType: MessageType; - senderType: MessageActorType; + senderType: MessageSenderType; senderId?: number; senderExternalId?: string; sender?: MessageActorRef; - receiverType: MessageActorType; + receiverType: MessageReceiverType; receiverId?: number; receiverExternalId?: string; receiver?: MessageActorRef;