aiService->isLlmProcessingEnabled()) { return; } try { $mailbox = $this->mailManager->getMailbox($userId, $mailboxId); $account = $this->accountService->find($userId, $mailbox->getAccountId()); } catch (ClientException $e) { return; } $messages = $this->mailManager->getByMessageId($account, $messageId); $messages = array_filter( $messages, static fn (Message $message) => $message->getMailboxId() === $mailboxId, ); if (count($messages) === 0) { return; } if (count($messages) > 1) { $this->logger->warning('Trying to analyze multiple messages with the same message id for follow-ups'); } $message = $messages[0]; try { $newerMessages = $this->threadMapper->findNewerMessageIdsInThread( $mailbox->getAccountId(), $message, ); } catch (Exception $e) { $this->logger->error( 'Failed to check if a message needs a follow-up: ' . $e->getMessage(), [ 'exception' => $e ], ); return; } if (count($newerMessages) > 0) { return; } $requiresFollowup = $this->aiService->requiresFollowUp( $account, $mailbox, $message, $userId, ); if (!$requiresFollowup) { return; } $this->logger->debug('Message requires follow-up: ' . $message->getId()); $tag = $this->mailManager->createTag('Follow up', '#d77000', $userId); $this->mailManager->tagMessage( $account, $mailbox->getName(), $message, $tag, true, ); } }