*/ private array $messages; /** * @param ChatSession $session Session entity * @param array $messages Messages for this session */ public function __construct( ChatSession $session, array $messages = [], ) { $this->session = $session; $this->messages = $messages; } public function getSession(): ChatSession { return $this->session; } public function getId(): int { return $this->session->getId() ?? 0; } public function getUuid(): string { return $this->session->getUuid(); } public function getTitle(): ?string { return $this->session->getTitle(); } public function getModel(): string { return $this->session->getModel(); } /** * @return array */ public function getCollections(): array { return $this->session->getCollections(); } public function getContextLimit(): int { return $this->session->getContextLimit(); } public function getAuthorProfileId(): int { return $this->session->getAuthorProfileId() ?? 0; } public function getSystemPromptId(): int { return $this->session->getSystemPromptId() ?? 1; } public function getTemperature(): float { return $this->session->getTemperature(); } public function getMaxTokens(): int { return $this->session->getMaxTokens(); } /** * @return array */ public function getMessages(): array { return $this->messages; } /** * Get messages as arrays for views. * * @return array> */ public function getMessagesAsArrays(): array { return array_map(fn (ChatMessage $m) => $m->toArray(), $this->messages); } public function getMessageCount(): int { return count($this->messages); } /** * Get session as array for views. * * @return array */ public function toArray(): array { return $this->session->toArray(); } /** * Check if session exists */ public function exists(): bool { return $this->getId() > 0; } }