sessionRepo->findByUuid($uuid); if ($session === null) { return null; } $messages = $this->messageRepo->findBySessionId($session->getId() ?? 0); return new ChatSessionDTO($session, $messages); } /** * Create a new session and return it * * @param array $collections */ public function createNew( string $model = 'claude-opus-4-5-20251101', array $collections = ['documents'], int $contextLimit = 5 ): ChatSessionDTO { $uuid = $this->sessionRepo->generateUuid(); $metadata = SessionMetadata::create($model, $collections, $contextLimit); $session = ChatSessionFactory::createNew(SessionUuid::fromString($uuid), $metadata); $sessionId = $this->sessionRepo->save($session); // Reload to get full data including timestamps $savedSession = $this->sessionRepo->findByUuid($uuid); return new ChatSessionDTO($savedSession ?? $session->withId($sessionId), []); } }