@php $theme = setting('dash_theme', 'default'); $model_label = ''; try { $model_label = \App\Domains\Entity\Enums\EntityEnum::fromSlug($message->model_slug ?? '')->label(); } catch (RuntimeException | Exception $exception) { } // Parse reference images from the images field (comma-separated) or from params $referenceImages = []; if (!empty($message->images)) { $referenceImages = array_filter(array_map('trim', explode(',', $message->images))); } $is_chat_pro = \App\Helpers\Classes\MarketplaceHelper::isRegistered('ai-chat-pro') && (route('dashboard.user.openai.chat.pro.index') === $currentUrl || route('chat.pro') === $currentUrl || route('dashboard.user.openai.chat.pro.index') === $previousUrl || route('chat.pro') === $previousUrl); $is_chat_pro_image = isset($website_url) && $website_url === 'chatpro-image' && \App\Helpers\Classes\MarketplaceHelper::isRegistered('ai-chat-pro-image-chat'); $suggestion_style = setting('ai_chat_pro_suggestion_style', 'pill'); // Get AI-generated images from linked AiChatProImage records (only if extension is installed) $aiGeneratedImages = []; if ($is_chat_pro_image) { if ($message->relationLoaded('aiChatProImages')) { foreach ($message->aiChatProImages as $imageRecord) { if ($imageRecord->isCompleted() && !empty($imageRecord->generated_images)) { $aiGeneratedImages = array_merge($aiGeneratedImages, $imageRecord->generated_images); } } } else { $imageRecords = $message->aiChatProImages()->where('status', \App\Enums\AiImageStatusEnum::COMPLETED)->get(); foreach ($imageRecords as $imageRecord) { if (!empty($imageRecord->generated_images)) { $aiGeneratedImages = array_merge($aiGeneratedImages, $imageRecord->generated_images); } } } } @endphp
$is_multi_model_message, 'w-auto' => !$is_multi_model_message, ]) > @if ($message->output != null || count($aiGeneratedImages) > 0)
{{ __($chat?->category?->name ?? 'AI Assistant') }}
@php $has_canvas_content = $canvas_enabled && $message->tiptapContent?->output; $output = $has_canvas_content ? $message->tiptapContent?->output : $message->output; $output = str_replace(['
', '
', '
', '
'], "\n", $output); $output = str_replace('/http', 'http', $output); @endphp @if ($has_canvas_content && $is_chat_pro)
@endif @if ($is_multi_model_message && $is_chat_pro) @endif @php // For AI Chat Pro Image: add image markdown to output if we have generated images but no markdown in output if ($is_chat_pro_image && count($aiGeneratedImages) > 0) { $hasImageMarkdown = preg_match('/!\[.*?\]\(.*?\)/', $output); if (!$hasImageMarkdown) { $imageMarkdown = "::: lqd-chat-image-grid \n" . implode('', array_map(fn($imagePath) => "![Generated Image]({$imagePath})", $aiGeneratedImages)) . "\n::: \n"; $output = $imageMarkdown . $output; } } @endphp
 $has_canvas_content,
            ])>{{ $has_canvas_content ? str()->of($output)->toHtmlString() : $output }}
@if ($is_multi_model_message && $is_chat_pro) @endif
@endif @php $showSuggestions = ($is_chat_pro || $is_chat_pro_image) && ($isLastMessage ?? false); $suggestionsResponse = $showSuggestions && $message ? $message->suggestions_response : null; $suggestionsData = is_array($suggestionsResponse) && isset($suggestionsResponse['suggestions']) ? $suggestionsResponse['suggestions'] : []; @endphp @if (!empty($suggestionsData) && is_array($suggestionsData) && $showSuggestions)
$is_chat_pro])>
$is_chat_pro_image || $suggestion_style === 'pill', 'flex flex-col gap-1 items-start' => $is_chat_pro && $suggestion_style === 'inline', ]) x-data='{ suggestions: @json($suggestionsData) }' >
@endif
@if (count($referenceImages) > 0)
@foreach ($referenceImages as $refImage) @endforeach
@endif @if ($message->outputImage != null && $message->outputImage != '')
@endif